summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2019-01-21 23:46:44 -0500
committerFurkan Sahin <furkan-dev@proton.me>2019-01-21 23:46:44 -0500
commit41e06bbc4cbb53b5ff8c6fbce007c8d19af68b57 (patch)
tree67899b5c7967c33b81c71a0e6f8df034078a29dd
parenta37809a24a7a92c2d71c378534ff6550fa23f18a (diff)
seat_create: set initial focus for added seats
This sets the initial focus for all seats other than the first seat, which gets it focus on launch. The ensures that all seats have something focused.
-rw-r--r--sway/input/seat.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c
index 82e0e754..1a4ccd77 100644
--- a/sway/input/seat.c
+++ b/sway/input/seat.c
@@ -357,6 +357,14 @@ struct sway_seat *seat_create(const char *seat_name) {
root_for_each_workspace(collect_focus_workspace_iter, seat);
root_for_each_container(collect_focus_container_iter, seat);
+ if (!wl_list_empty(&server.input->seats)) {
+ // Since this is not the first seat, attempt to set initial focus
+ struct sway_seat *current_seat = input_manager_current_seat();
+ struct sway_node *current_focus =
+ seat_get_focus_inactive(current_seat, &root->node);
+ seat_set_focus(seat, current_focus);
+ }
+
wl_signal_add(&root->events.new_node, &seat->new_node);
seat->new_node.notify = handle_new_node;