From 6f0674ff727d901b323b7dda2c1a709be9f33dde Mon Sep 17 00:00:00 2001 From: cmleon51 <101025489+cmleon51@users.noreply.github.com> Date: Sat, 10 Oct 2026 23:51:43 +0200 Subject: [PATCH] popout: let the content window take hyprland focus before whitelisting bars (#3745) --- quickshell/Widgets/DPopout.qml | 8 ++++---- quickshell/Widgets/DPopoutHost.qml | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/quickshell/Widgets/DPopout.qml b/quickshell/Widgets/DPopout.qml index e9600af1d..b14dff07f 100644 --- a/quickshell/Widgets/DPopout.qml +++ b/quickshell/Widgets/DPopout.qml @@ -79,12 +79,12 @@ Item { // Hyprland OnDemand grab: whitelist popout surfaces and bars so dismiss clicks still land. DFocusGrab { windows: { - const list = []; - if (root.contentWindow) - list.push(root.contentWindow); + const list = root.contentWindow ? [root.contentWindow] : []; + const transientWindows = root.transientSurfaceTracker?.focusWindows ?? []; + if (!(impl.item?.contentActive ?? false) && !root.transientSurfaceTracker?.active) + return list.concat(transientWindows); if (root.backgroundWindow && root.backgroundWindow !== root.contentWindow) list.push(root.backgroundWindow); - const transientWindows = root.transientSurfaceTracker?.focusWindows ?? []; return list.concat(transientWindows).concat(KeyboardFocus.barWindows); } wanted: KeyboardFocus.wantsGrab(root.shouldBeVisible, root.customKeyboardFocus) diff --git a/quickshell/Widgets/DPopoutHost.qml b/quickshell/Widgets/DPopoutHost.qml index 97fb04615..7806e32fa 100644 --- a/quickshell/Widgets/DPopoutHost.qml +++ b/quickshell/Widgets/DPopoutHost.qml @@ -57,6 +57,7 @@ Item { property bool _contentRenderActive: Theme.isDirectionalEffect || shouldBeVisible // Keyboard focus grabbed one tick after emerge starts, to avoid stalling first frames. property bool _keyboardReady: false + readonly property bool contentActive: focusHelper.Window.active property bool _resizeActive: false property real _chromeAnimTravelX: 1 property real _chromeAnimTravelY: 1