aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLibravatar Daniel De Graaf <code@danieldg.net>2022-04-29 23:40:16 -0400
committerLibravatar Simon Ser <contact@emersion.fr>2022-10-28 19:41:24 +0200
commit8f7bb145b72209724f05b0182dee33c0e47d2357 (patch)
treef2eee1187e0bdfc562130294de8dde1021e84642 /include
parentFix keymap being NULL and segfaulting on dev add (diff)
downloadsway-8f7bb145b72209724f05b0182dee33c0e47d2357.tar.gz
sway-8f7bb145b72209724f05b0182dee33c0e47d2357.tar.zst
sway-8f7bb145b72209724f05b0182dee33c0e47d2357.zip
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.h4
-rw-r--r--include/sway/server.h1
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);
201 201
202struct sway_container *seat_get_focused_container(struct sway_seat *seat); 202struct sway_container *seat_get_focused_container(struct sway_seat *seat);
203 203
204// Force focus to a particular surface that is not part of the workspace
205// hierarchy (used for lockscreen)
206void sway_force_focus(struct wlr_surface *surface);
207
208/** 204/**
209 * Return the last container to be focused for the seat (or the most recently 205 * Return the last container to be focused for the seat (or the most recently
210 * opened if no container has received focused) that is a child of the given 206 * 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 {
96 struct wlr_session_lock_manager_v1 *manager; 96 struct wlr_session_lock_manager_v1 *manager;
97 97
98 struct wlr_session_lock_v1 *lock; 98 struct wlr_session_lock_v1 *lock;
99 struct wlr_surface *focused;
99 struct wl_listener lock_new_surface; 100 struct wl_listener lock_new_surface;
100 struct wl_listener lock_unlock; 101 struct wl_listener lock_unlock;
101 struct wl_listener lock_destroy; 102 struct wl_listener lock_destroy;