diff --git a/quickshell/Modals/Common/DankModalConnected.qml b/quickshell/Modals/Common/DankModalConnected.qml index 085b9086..1f1232ec 100644 --- a/quickshell/Modals/Common/DankModalConnected.qml +++ b/quickshell/Modals/Common/DankModalConnected.qml @@ -38,7 +38,7 @@ Item { readonly property string resolvedConnectedBarSide: frameConnectedMode ? preferredConnectedBarSide : "" - readonly property bool frameOwnsConnectedChrome: frameConnectedMode && resolvedConnectedBarSide !== "" + readonly property bool frameOwnsConnectedChrome: frameConnectedMode && resolvedConnectedBarSide !== "" && !allowStacking function _dockOccupiesSide(side) { if (!SettingsData.showDock) @@ -200,10 +200,10 @@ Item { } function _releaseModalChrome() { - if (_chromeClaimId) { - ConnectedModeState.releaseDockRetract(_chromeClaimId); - _chromeClaimId = ""; - } + if (!_chromeClaimId) + return; + ConnectedModeState.releaseDockRetract(_chromeClaimId); + _chromeClaimId = ""; const screenName = _currentScreenName(); if (screenName) ConnectedModeState.clearModalState(screenName); diff --git a/quickshell/Modals/PowerMenuModal.qml b/quickshell/Modals/PowerMenuModal.qml index c59037f0..62f64f68 100644 --- a/quickshell/Modals/PowerMenuModal.qml +++ b/quickshell/Modals/PowerMenuModal.qml @@ -259,20 +259,24 @@ DankModal { cancelHold(); close(); } - onOpened: () => { + onShouldBeVisibleChanged: { + if (!shouldBeVisible) + return; holdAction = ""; holdActionIndex = -1; holdProgress = 0; showHoldHint = false; updateVisibleActions(); const defaultIndex = getDefaultActionIndex(); + selectedIndex = defaultIndex; if (SettingsData.powerMenuGridLayout) { selectedRow = Math.floor(defaultIndex / gridColumns); selectedCol = defaultIndex % gridColumns; - selectedIndex = defaultIndex; - } else { - selectedIndex = defaultIndex; } + } + onShouldHaveFocusChanged: { + if (!shouldHaveFocus) + return; Qt.callLater(() => modalFocusScope.forceActiveFocus()); } onDialogClosed: () => {