From ee249838f504b53578c3794af126fe18abe4262e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=E1=BB=B3nh=20Thi=E1=BB=87n=20L=E1=BB=99c?= Date: Thu, 29 Oct 2026 10:09:01 +0700 Subject: [PATCH] fix(screenshot): expose surface bounds for region snap (#3999) port 2.0 (cherry picked from commit 61528822ba6e900efc6f119651de725905269c2a) --- quickshell/Modals/DLauncherV2/DLauncherV2Modal.qml | 6 ++++++ quickshell/Modals/DLauncherV2/DLauncherV2ModalHost.qml | 8 +++++--- quickshell/Modals/DLauncherV2/DLauncherV2ModalIsland.qml | 6 ++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/quickshell/Modals/DLauncherV2/DLauncherV2Modal.qml b/quickshell/Modals/DLauncherV2/DLauncherV2Modal.qml index f2a1e41cf..1decd2498 100644 --- a/quickshell/Modals/DLauncherV2/DLauncherV2Modal.qml +++ b/quickshell/Modals/DLauncherV2/DLauncherV2Modal.qml @@ -7,6 +7,8 @@ Item { readonly property var log: Log.scoped("DLauncherV2Modal") readonly property bool spotlightOpen: impl.item ? impl.item.spotlightOpen : false + readonly property bool shouldBeVisible: impl.item ? impl.item.shouldBeVisible : false + readonly property string layerNamespace: impl.item ? (impl.item.layerNamespace ?? "dms:launcher") : "dms:launcher" readonly property bool isClosing: impl.item ? impl.item.isClosing : false readonly property bool keyboardActive: impl.item ? impl.item.keyboardActive : false readonly property bool contentVisible: impl.item ? impl.item.contentVisible : false @@ -20,6 +22,10 @@ Item { readonly property int modalHeight: impl.item ? impl.item.modalHeight : Theme.launcherHeightDefault readonly property real modalX: impl.item ? impl.item.modalX : 0 readonly property real modalY: impl.item ? impl.item.modalY : 0 + readonly property real alignedX: impl.item ? impl.item.alignedX : 0 + readonly property real alignedY: impl.item ? impl.item.alignedY : 0 + readonly property real alignedWidth: impl.item ? impl.item.alignedWidth : 0 + readonly property real alignedHeight: impl.item ? impl.item.alignedHeight : 0 readonly property bool frameOwnsConnectedChrome: impl.item ? (impl.item.frameOwnsConnectedChrome ?? false) : false readonly property string resolvedConnectedBarSide: impl.item ? (impl.item.resolvedConnectedBarSide ?? "") : "" readonly property bool launcherArcExtenderActive: impl.item ? (impl.item.launcherArcExtenderActive ?? false) : false diff --git a/quickshell/Modals/DLauncherV2/DLauncherV2ModalHost.qml b/quickshell/Modals/DLauncherV2/DLauncherV2ModalHost.qml index 0df583c06..aaa4ae610 100644 --- a/quickshell/Modals/DLauncherV2/DLauncherV2ModalHost.qml +++ b/quickshell/Modals/DLauncherV2/DLauncherV2ModalHost.qml @@ -59,6 +59,8 @@ Item { visible: false property bool spotlightOpen: false + readonly property bool shouldBeVisible: spotlightOpen + readonly property string layerNamespace: spotlight ? "dms:spotlight" : "dms:launcher" property bool keyboardActive: false property bool contentVisible: false property bool _surfaceFrameReady: false @@ -528,9 +530,9 @@ Item { if (connectedFluidMotion && !preserveFluid) fluidMotion.snapTo(fluidTravelCollapsedRect); - ModalManager.openModal(modalHandle); spotlightOpen = true; contentWindow.visible = true; + ModalManager.openModal(modalHandle); _ensureContentLoadedAndInitialize(query || "", mode || ""); @@ -707,10 +709,10 @@ Item { HyprlandFocusGrab { id: focusGrab windows: [contentWindow].concat(transientSurfaces.focusWindows) - active: root.useHyprlandFocusGrab && (root.connected ? root.spotlightOpen : root.keyboardActive) + active: root.useHyprlandFocusGrab && !PopoutManager.screenshotActive && (root.connected ? root.spotlightOpen : root.keyboardActive) onCleared: { - if (root.spotlightOpen) { + if (root.spotlightOpen && !PopoutManager.screenshotActive) { root.hide(); } } diff --git a/quickshell/Modals/DLauncherV2/DLauncherV2ModalIsland.qml b/quickshell/Modals/DLauncherV2/DLauncherV2ModalIsland.qml index fbb021a3c..23e793ec8 100644 --- a/quickshell/Modals/DLauncherV2/DLauncherV2ModalIsland.qml +++ b/quickshell/Modals/DLauncherV2/DLauncherV2ModalIsland.qml @@ -16,6 +16,8 @@ Item { readonly property var log: Log.scoped("DLauncherV2ModalIsland") readonly property var router: PopoutService.dankIslandRouter readonly property bool spotlightOpen: usingFallback ? fallback.spotlightOpen : (router?.launcherOpen ?? false) + readonly property bool shouldBeVisible: usingFallback ? fallback.shouldBeVisible : false + readonly property string layerNamespace: usingFallback ? fallback.layerNamespace : "dms:launcher" readonly property bool isClosing: usingFallback ? fallback.isClosing : false readonly property bool keyboardActive: usingFallback ? fallback.keyboardActive : spotlightOpen readonly property bool contentVisible: usingFallback ? fallback.contentVisible : spotlightOpen @@ -29,6 +31,10 @@ Item { readonly property int modalHeight: usingFallback ? fallback.modalHeight : LauncherMetrics.sizeHeight(SettingsData.dankLauncherV2Size, LauncherMetrics.islandEdgeInset, false) readonly property real modalX: usingFallback ? fallback.modalX : 0 readonly property real modalY: usingFallback ? fallback.modalY : 0 + readonly property real alignedX: usingFallback ? fallback.alignedX : 0 + readonly property real alignedY: usingFallback ? fallback.alignedY : 0 + readonly property real alignedWidth: usingFallback ? fallback.alignedWidth : 0 + readonly property real alignedHeight: usingFallback ? fallback.alignedHeight : 0 readonly property bool frameOwnsConnectedChrome: false readonly property string resolvedConnectedBarSide: "" readonly property bool launcherArcExtenderActive: false