diff options
-rw-r--r-- | sway/desktop/xwayland.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c index 390ca580..398446f8 100644 --- a/sway/desktop/xwayland.c +++ b/sway/desktop/xwayland.c | |||
@@ -69,11 +69,13 @@ static void unmanaged_handle_map(struct wl_listener *listener, void *data) { | |||
69 | surface->ly = xsurface->y; | 69 | surface->ly = xsurface->y; |
70 | desktop_damage_surface(xsurface->surface, surface->lx, surface->ly, true); | 70 | desktop_damage_surface(xsurface->surface, surface->lx, surface->ly, true); |
71 | 71 | ||
72 | struct sway_seat *seat = input_manager_current_seat(input_manager); | 72 | if (wlr_xwayland_or_surface_wants_focus(xsurface)) { |
73 | struct wlr_xwayland *xwayland = | 73 | struct sway_seat *seat = input_manager_current_seat(input_manager); |
74 | seat->input->server->xwayland.wlr_xwayland; | 74 | struct wlr_xwayland *xwayland = |
75 | wlr_xwayland_set_seat(xwayland, seat->wlr_seat); | 75 | seat->input->server->xwayland.wlr_xwayland; |
76 | seat_set_focus_surface(seat, xsurface->surface, false); | 76 | wlr_xwayland_set_seat(xwayland, seat->wlr_seat); |
77 | seat_set_focus_surface(seat, xsurface->surface, false); | ||
78 | } | ||
77 | } | 79 | } |
78 | 80 | ||
79 | static void unmanaged_handle_unmap(struct wl_listener *listener, void *data) { | 81 | static void unmanaged_handle_unmap(struct wl_listener *listener, void *data) { |