aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input/seatop_default.c
diff options
context:
space:
mode:
authorLibravatar Thomas Hebb <tommyhebb@gmail.com>2020-05-20 21:20:19 -0400
committerLibravatar Simon Ser <contact@emersion.fr>2020-06-05 17:24:23 +0200
commit84ec8f92a69feb303e0e521f482b75b2cd12c4aa (patch)
tree5ae6506ea226bf1e256598f08ca77caf4dfc2d95 /sway/input/seatop_default.c
parentSave transform during transaction (diff)
downloadsway-84ec8f92a69feb303e0e521f482b75b2cd12c4aa.tar.gz
sway-84ec8f92a69feb303e0e521f482b75b2cd12c4aa.tar.zst
sway-84ec8f92a69feb303e0e521f482b75b2cd12c4aa.zip
Use new wlroots API for clearing keyboard/pointer focus during grabs
We are not allowed to do what we did in #5222 and pass a `NULL` surface wlr_seat_pointer_notify_enter(), and it's causing crashes when an xdg-shell popup is active (see #5294 and swaywm/wlroots#2161). Instead, solve #5220 using the new wlroots API introduced in swaywm/wlroots#2217.
Diffstat (limited to 'sway/input/seatop_default.c')
-rw-r--r--sway/input/seatop_default.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/sway/input/seatop_default.c b/sway/input/seatop_default.c
index 072f4396..2bce2f77 100644
--- a/sway/input/seatop_default.c
+++ b/sway/input/seatop_default.c
@@ -483,8 +483,7 @@ static void handle_pointer_motion(struct sway_seat *seat, uint32_t time_msec,
483 } 483 }
484 } else { 484 } else {
485 cursor_update_image(cursor, node); 485 cursor_update_image(cursor, node);
486 wlr_seat_pointer_notify_enter(seat->wlr_seat, NULL, 0, 0); 486 wlr_seat_pointer_notify_clear_focus(seat->wlr_seat);
487 wlr_seat_pointer_clear_focus(seat->wlr_seat);
488 } 487 }
489 488
490 struct sway_drag_icon *drag_icon; 489 struct sway_drag_icon *drag_icon;
@@ -664,8 +663,7 @@ static void handle_rebase(struct sway_seat *seat, uint32_t time_msec) {
664 } 663 }
665 } else { 664 } else {
666 cursor_update_image(cursor, e->previous_node); 665 cursor_update_image(cursor, e->previous_node);
667 wlr_seat_pointer_notify_enter(seat->wlr_seat, NULL, 0, 0); 666 wlr_seat_pointer_notify_clear_focus(seat->wlr_seat);
668 wlr_seat_pointer_clear_focus(seat->wlr_seat);
669 } 667 }
670} 668}
671 669