summaryrefslogtreecommitdiff
path: root/sway/input/input-manager.c
diff options
context:
space:
mode:
authorDrew DeVault <[email protected]>2018-04-03 17:03:29 -0400
committerDrew DeVault <[email protected]>2018-04-04 18:47:48 -0400
commitb7e779491232b825f6edc0b199e7564e93f1e332 (patch)
tree00457213fa57ec07692bb093392a83203e0e9960 /sway/input/input-manager.c
parent06fbd51ff5563f548599615a6baf5a1854bf9983 (diff)
Implement input-inhibit in sway, swaylock
Diffstat (limited to 'sway/input/input-manager.c')
-rw-r--r--sway/input/input-manager.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c
index 3b2d1d55..f71a06e4 100644
--- a/sway/input/input-manager.c
+++ b/sway/input/input-manager.c
@@ -279,6 +279,14 @@ static void handle_inhibit_deactivate(struct wl_listener *listener, void *data)
struct sway_seat *seat;
wl_list_for_each(seat, &input_manager->seats, link) {
seat_set_exclusive_client(seat, NULL);
+ struct sway_container *previous = seat_get_focus(seat);
+ if (previous) {
+ wlr_log(L_DEBUG, "Returning focus to %p %s '%s'", previous,
+ container_type_to_str(previous->type), previous->name);
+ // Hack to get seat to re-focus the return value of get_focus
+ seat_set_focus(seat, previous->parent);
+ seat_set_focus(seat, previous);
+ }
}
}