seat: Refocus seat when wlr_drag is destroyed

wlr_drag installs grabs for the full duration of the drag, leading to
the drag target not being focused when the drag ends. This leads to
unexpected focus behavior, especially for the keyboard which requires
toggling focus away and back to set.

We can only fix the focus once the grabs are released, so refocus the
seat when the wlr_drag destroy event is received.

Closes: https://github.com/swaywm/sway/issues/5116
This commit is contained in:
Kenny Levinsen 2020-06-28 15:33:03 +02:00 committed by Simon Ser
parent d0f7e0f481
commit 492267a5d6
2 changed files with 44 additions and 0 deletions

View file

@ -64,6 +64,12 @@ struct sway_drag_icon {
struct wl_listener destroy;
};
struct sway_drag {
struct sway_seat *seat;
struct wlr_drag *wlr_drag;
struct wl_listener destroy;
};
struct sway_seat {
struct wlr_seat *wlr_seat;
struct sway_cursor *cursor;