From: Jelle De Loecker Date: Mon, 30 May 2022 08:00:14 +0000 (+0200) Subject: xwayland-unmanaged: focus parent surface on unmap X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=61675b521c10496f289f88b230ec209d7219d523;p=proto%2Flabwc.git 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 --- 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) {