commit 61c1c3e7afd431de08e037205c4849b5f485ff4f
parent 669f91b991b7bcc4108916f208cd4bbe14169460
Author: Drew DeVault <sir@cmpwn.com>
Date: Sun, 25 Feb 2018 12:55:19 -0500
Use focus for new windows xwayland/wl_shell
Diffstat:
2 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/sway/desktop/wl_shell.c b/sway/desktop/wl_shell.c
@@ -131,14 +131,11 @@ void handle_wl_shell_surface(struct wl_listener *listener, void *data) {
sway_surface->destroy.notify = handle_destroy;
wl_signal_add(&shell_surface->events.destroy, &sway_surface->destroy);
- // TODO: actual focus semantics
- swayc_t *parent = root_container.children->items[0];
- parent = parent->children->items[0]; // workspace
-
- swayc_t *cont = new_view(parent, sway_view);
+ struct sway_seat *seat = input_manager_current_seat(input_manager);
+ swayc_t *focus = sway_seat_get_focus_inactive(seat, &root_container);
+ swayc_t *cont = new_view(focus, sway_view);
sway_view->swayc = cont;
arrange_windows(cont->parent, -1, -1);
-
sway_input_manager_set_focus(input_manager, cont);
}
diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c
@@ -233,10 +233,9 @@ void handle_xwayland_surface(struct wl_listener *listener, void *data) {
return;
}
- swayc_t *parent = root_container.children->items[0];
- parent = parent->children->items[0]; // workspace
-
- swayc_t *cont = new_view(parent, sway_view);
+ struct sway_seat *seat = input_manager_current_seat(input_manager);
+ swayc_t *focus = sway_seat_get_focus_inactive(seat, &root_container);
+ swayc_t *cont = new_view(focus, sway_view);
sway_view->swayc = cont;
arrange_windows(cont->parent, -1, -1);