aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input
diff options
context:
space:
mode:
authorLibravatar Rouven Czerwinski <rouven@czerwinskis.de>2020-04-10 09:40:45 +0200
committerLibravatar Simon Ser <contact@emersion.fr>2020-04-15 13:40:38 +0200
commit0efc28e2f58a9a98d219cf2f3a92e18577c9926c (patch)
tree24051a8301eff052bb7e0ba36a43c464fd488b28 /sway/input
parentFix a use-after-free error in switch binding (diff)
downloadsway-0efc28e2f58a9a98d219cf2f3a92e18577c9926c.tar.gz
sway-0efc28e2f58a9a98d219cf2f3a92e18577c9926c.tar.zst
sway-0efc28e2f58a9a98d219cf2f3a92e18577c9926c.zip
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
Diffstat (limited to 'sway/input')
-rw-r--r--sway/input/seatop_default.c5
1 files changed, 4 insertions, 1 deletions
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,
280 280
281 // Handle clicking an empty workspace 281 // Handle clicking an empty workspace
282 if (node && node->type == N_WORKSPACE) { 282 if (node && node->type == N_WORKSPACE) {
283 seat_set_focus(seat, node); 283 if (state == WLR_BUTTON_PRESSED) {
284 seat_set_focus(seat, node);
285 }
286 seat_pointer_notify_button(seat, time_msec, button, state);
284 return; 287 return;
285 } 288 }
286 289