From 61675b521c10496f289f88b230ec209d7219d523 Mon Sep 17 00:00:00 2001 From: Jelle De Loecker Date: Mon, 30 May 2022 10:00:14 +0200 Subject: [PATCH] xwayland-unmanaged: focus parent surface on unmap Re-focus on parent surface if it is available Fixes #352 relating to JetBrains and Intellij focus issues --- src/xwayland-unmanaged.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/xwayland-unmanaged.c b/src/xwayland-unmanaged.c index 2c1ac992..9e497e39 100644 --- a/src/xwayland-unmanaged.c +++ b/src/xwayland-unmanaged.c @@ -84,6 +84,17 @@ unmanaged_handle_unmap(struct wl_listener *listener, void *data) struct seat *seat = &unmanaged->server->seat; if (seat->seat->keyboard_state.focused_surface == xsurface->surface) { + /* + * Try to focus on parent surface + * This seems to fix JetBrains/Intellij window focus issues + */ + if (xsurface->parent && xsurface->parent->surface + && wlr_xwayland_or_surface_wants_focus(xsurface->parent)) { + seat_focus_surface(seat, xsurface->parent->surface); + return; + } + + /* Try to focus on last created unmanaged xwayland surface */ struct xwayland_unmanaged *u; struct wl_list *list = &unmanaged->server->unmanaged_surfaces; wl_list_for_each (u, list, link) {