From f73630be438b405f5983d6257ca5074b1e2f6f5f Mon Sep 17 00:00:00 2001 From: lkn Date: Tue, 23 Jun 2026 23:54:33 +0200 Subject: [PATCH] fix cursor: dont reset to left_ptr over WINGs/WM frame_bufs wl_update_pointer_focus reset cursor to left_ptr on every motion event when no Wayland surface was under the pointer. WINGs compositor views are pixman scene nodes, not Wayland surfaces, so surface was always NULL over dialogs. Now preserve cursor when over frame_bufs. --- src/backend/wayland/wl_pointer_focus.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/backend/wayland/wl_pointer_focus.c b/src/backend/wayland/wl_pointer_focus.c index c0af0a7..67faebf 100644 --- a/src/backend/wayland/wl_pointer_focus.c +++ b/src/backend/wayland/wl_pointer_focus.c @@ -201,9 +201,10 @@ deliver: last_focused_surface = NULL; } wlr_seat_pointer_clear_focus(wl_state.seat); - /* When pointer leaves all surfaces, reset to default arrow. - * Don't reset during grabs — the grab system manages the cursor. */ - if (!wl_state.grab_type) + /* Reset to arrow only when not over a WINGs/WM frame_buf and not grabbing. + * WINGs views are compositor nodes (not Wayland surfaces) so surface==NULL. */ + if (!wl_state.grab_type + && !frame_buf_hit(wl_state.pointer_x, wl_state.pointer_y)) wl_set_cursor_image("left_ptr"); } /* focus-follows-pointer — when the pointer enters a new