diff options
author | Daniel De Graaf <code@danieldg.net> | 2022-04-29 23:40:16 -0400 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2022-10-28 19:41:24 +0200 |
commit | 8f7bb145b72209724f05b0182dee33c0e47d2357 (patch) | |
tree | f2eee1187e0bdfc562130294de8dde1021e84642 /include | |
parent | 9d99bb956fea8922f8e0196d67eabbd510c53f1f (diff) |
Rework session lock keyboard focus handling
When removing outputs, it is possible to end up in a situation where
none of the session lock client's surfaces have keyboard focus,
resulting in it not receiving keyboard events. Track the focused
surface and update it as needed on surface destroy.
Diffstat (limited to 'include')
-rw-r--r-- | include/sway/input/seat.h | 4 | ||||
-rw-r--r-- | include/sway/server.h | 1 |
2 files changed, 1 insertions, 4 deletions
diff --git a/include/sway/input/seat.h b/include/sway/input/seat.h index c2041742..e3a46872 100644 --- a/include/sway/input/seat.h +++ b/include/sway/input/seat.h @@ -201,10 +201,6 @@ struct sway_workspace *seat_get_last_known_workspace(struct sway_seat *seat); struct sway_container *seat_get_focused_container(struct sway_seat *seat); -// Force focus to a particular surface that is not part of the workspace -// hierarchy (used for lockscreen) -void sway_force_focus(struct wlr_surface *surface); - /** * Return the last container to be focused for the seat (or the most recently * opened if no container has received focused) that is a child of the given diff --git a/include/sway/server.h b/include/sway/server.h index 055c067d..6a5a60c8 100644 --- a/include/sway/server.h +++ b/include/sway/server.h @@ -96,6 +96,7 @@ struct sway_server { struct wlr_session_lock_manager_v1 *manager; struct wlr_session_lock_v1 *lock; + struct wlr_surface *focused; struct wl_listener lock_new_surface; struct wl_listener lock_unlock; struct wl_listener lock_destroy; |