From 1f00b5f5776a533b8b56b1d5305d7e6517f359a8 Mon Sep 17 00:00:00 2001 From: bbedward Date: Fri, 5 Dec 2025 13:31:57 -0500 Subject: [PATCH] fix some stale screen ref issues in OSD and popout --- quickshell/Common/OSDManager.qml | 10 +++++++++- quickshell/Widgets/DankPopout.qml | 12 +++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/quickshell/Common/OSDManager.qml b/quickshell/Common/OSDManager.qml index d4643bbe..4296afbe 100644 --- a/quickshell/Common/OSDManager.qml +++ b/quickshell/Common/OSDManager.qml @@ -16,7 +16,15 @@ Singleton { const currentOSD = currentOSDsByScreen[screenName]; if (currentOSD && currentOSD !== osd) { - currentOSD.hide(); + if (typeof currentOSD.hide === "function") { + try { + currentOSD.hide(); + } catch (e) { + currentOSDsByScreen[screenName] = null; + } + } else { + currentOSDsByScreen[screenName] = null; + } } currentOSDsByScreen[screenName] = osd; diff --git a/quickshell/Widgets/DankPopout.qml b/quickshell/Widgets/DankPopout.qml index 7835bc3e..18bef371 100644 --- a/quickshell/Widgets/DankPopout.qml +++ b/quickshell/Widgets/DankPopout.qml @@ -68,6 +68,8 @@ Item { signal popoutClosed signal backgroundClicked + property var _lastOpenedScreen: null + property int effectiveBarPosition: 0 property real effectiveBarBottomGap: 0 @@ -100,9 +102,17 @@ Item { if (!screen) return; closeTimer.stop(); + + if (_lastOpenedScreen !== null && _lastOpenedScreen !== screen) { + contentWindow.visible = false; + if (useBackgroundWindow) + backgroundWindow.visible = false; + } + _lastOpenedScreen = screen; + shouldBeVisible = true; Qt.callLater(() => { - if (shouldBeVisible) { + if (shouldBeVisible && screen) { if (useBackgroundWindow) backgroundWindow.visible = true; contentWindow.visible = true;