From 7ad4f86f2aac75935a52d31383593c1327204729 Mon Sep 17 00:00:00 2001 From: Berke Güzel Date: Wed, 14 Oct 2026 14:21:13 +0300 Subject: Count touch as a press, report a missing bell, and test X11 INCR - Wayland: a touch contact is a press for move, resize, menu and drag again, and a compositor without xdg-system-bell reports ENOTSUP. - yasl_surface_set_cursor no longer reports a stale errno. - The X11 input test expects the TIMESTAMP and MULTIPLE targets and drives an INCR transfer instead of expecting INCR to be rejected. Co-Authored-By: Claude Opus 5.5 --- src/platform/wayland/pointer.c | 3 +++ src/platform/wayland/shell.c | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'src/platform/wayland') diff --git a/src/platform/wayland/pointer.c b/src/platform/wayland/pointer.c index 9f8ca49..571bb12 100644 --- a/src/platform/wayland/pointer.c +++ b/src/platform/wayland/pointer.c @@ -59,6 +59,9 @@ uint32_t seat_held_press_serial(const struct seat *s) { if (!s) return 0; bool held = s->pointer_buttons != 0 || (s->tool && s->tool->in_contact); + /* A touch contact is a press too; touch_down records its serial. */ + for (int i = 0; !held && i < SEAT_TOUCH_POINTS; i++) + held = s->touch_points[i].active; return held ? s->press_serial : 0; } diff --git a/src/platform/wayland/shell.c b/src/platform/wayland/shell.c index 8e6b67e..12c73e0 100644 --- a/src/platform/wayland/shell.c +++ b/src/platform/wayland/shell.c @@ -1,5 +1,7 @@ #include "internal.h" +#include + static void wm_base_ping(void *data, struct xdg_wm_base *wm_base, uint32_t serial); static const struct xdg_wm_base_listener wm_base_listener; @@ -421,7 +423,11 @@ int surface_init_shell(struct wayland_surface *w, const char *title) bool wayland_surface_bell(struct wayland_surface *w) { - if (!w || w->closed || !w->conn || !w->conn->system_bell || !w->surface) return false; + if (!w || w->closed || !w->conn || !w->surface) return false; + if (!w->conn->system_bell) { + errno = ENOTSUP; /* The compositor lacks xdg-system-bell. */ + return false; + } xdg_system_bell_v1_ring(w->conn->system_bell, w->surface); return true; } -- cgit v1.2.3