From 0efc28e2f58a9a98d219cf2f3a92e18577c9926c Mon Sep 17 00:00:00 2001 From: Rouven Czerwinski Date: Fri, 10 Apr 2020 09:40:45 +0200 Subject: input/seatop_default: release on empty workspace Instead of handling presses and releases on empty workspaces as setting focus to the workspace, handle releases by notifying the seat of a pointer action. This way DnDs are correctly released if the button is released over an empty workspace. This is achieved by removing the early return and letting the handle_button() call seat_pointer_notify_button() at the very end. Fixes #3932 --- sway/input/seatop_default.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sway/input/seatop_default.c b/sway/input/seatop_default.c index ffa43658..d20048d5 100644 --- a/sway/input/seatop_default.c +++ b/sway/input/seatop_default.c @@ -280,7 +280,10 @@ static void handle_button(struct sway_seat *seat, uint32_t time_msec, // Handle clicking an empty workspace if (node && node->type == N_WORKSPACE) { - seat_set_focus(seat, node); + if (state == WLR_BUTTON_PRESSED) { + seat_set_focus(seat, node); + } + seat_pointer_notify_button(seat, time_msec, button, state); return; } -- cgit v1.2.3