aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--types/data_device/wlr_drag.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/types/data_device/wlr_drag.c b/types/data_device/wlr_drag.c
index 86b7d19f..53bf4066 100644
--- a/types/data_device/wlr_drag.c
+++ b/types/data_device/wlr_drag.c
@@ -124,8 +124,6 @@ static void drag_destroy(struct wlr_drag *drag) {
}
drag->cancelling = true;
- wlr_signal_emit_safe(&drag->events.destroy, drag);
-
if (drag->started) {
wlr_seat_keyboard_end_grab(drag->seat);
switch (drag->grab_type) {
@@ -138,7 +136,12 @@ static void drag_destroy(struct wlr_drag *drag) {
wlr_seat_touch_end_grab(drag->seat);
break;
}
+ }
+ // We issue destroy after ending the grab to allow focus changes.
+ wlr_signal_emit_safe(&drag->events.destroy, drag);
+
+ if (drag->started) {
drag_set_focus(drag, NULL, 0, 0);
assert(drag->seat->drag == drag);