From 9e3785f8cd7ad103a3192066ef735474cac56602 Mon Sep 17 00:00:00 2001 From: John Lindgren Date: Wed, 14 Feb 2024 21:11:03 -0500 Subject: [PATCH] xwayland: treat Globally Active windows according to type Tested with IntelliJ IDEA and JDownloader 2, which were problematic in the past. Fixes: #1139 #1341 --- src/xwayland.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/xwayland.c b/src/xwayland.c index 6c954dee..8f3ac1e3 100644 --- a/src/xwayland.c +++ b/src/xwayland.c @@ -91,17 +91,15 @@ xwayland_view_wants_focus(struct view *view) */ case WLR_ICCCM_INPUT_MODEL_GLOBAL: /* - * Assume the window does want focus if it wants window - * decorations (according to _MOTIF_WM_HINTS). This is - * a stop-gap fix to ensure that various applications - * (mainly Java-based ones such as IntelliJ IDEA) get - * focus normally and appear in the window switcher. It - * would be better to match based on _NET_WM_WINDOW_TYPE - * instead, but that property isn't currently available - * through wlroots API. + * Assume that NORMAL and DIALOG windows always want + * focus. These window types should show up in the + * Alt-Tab switcher and be automatically focused when + * they become topmost. */ - return (xsurface->decorations == - WLR_XWAYLAND_SURFACE_DECORATIONS_ALL) ? + return (xwayland_surface_contains_window_type(xsurface, + NET_WM_WINDOW_TYPE_NORMAL) + || xwayland_surface_contains_window_type(xsurface, + NET_WM_WINDOW_TYPE_DIALOG)) ? VIEW_WANTS_FOCUS_ALWAYS : VIEW_WANTS_FOCUS_OFFER; /*