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