From b90908da6a5f6ed76bd2136c35d2753c0be51d51 Mon Sep 17 00:00:00 2001 From: lkn Date: Tue, 23 Jun 2026 17:29:39 +0200 Subject: [PATCH] fix DnD freeze: forward button events during active drag grab When a Wayland drag is active (seat->drag), always forward button events so wlroots can properly end the drag. Without this, the release never reaches the drag grab, causing stuck drags and assertion failures on client teardown. --- src/backend/wayland/wl_handlers.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/backend/wayland/wl_handlers.c b/src/backend/wayland/wl_handlers.c index bb62994..c4e60c2 100644 --- a/src/backend/wayland/wl_handlers.c +++ b/src/backend/wayland/wl_handlers.c @@ -331,6 +331,11 @@ handle_pointer_button(struct wl_listener *listener, void *data) wlr_seat_pointer_notify_button(wl_state.seat, ev->time_msec, ev->button, ev->state); wlr_seat_pointer_notify_frame(wl_state.seat); + } else if (wl_state.seat->drag) { + /* Active drag grab: always forward so wlroots can end the drag. */ + wlr_seat_pointer_notify_button(wl_state.seat, ev->time_msec, + ev->button, ev->state); + wlr_seat_pointer_notify_frame(wl_state.seat); } }