1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-05-04 19:42:08 -04:00

refactor: (Framemode) Added DeferredAction for dbar/dock state handling

This commit is contained in:
purian23
2026-05-04 10:43:07 -04:00
parent cc47703d48
commit 19c561da14
7 changed files with 245 additions and 84 deletions

View File

@@ -202,18 +202,21 @@ Variants {
ConnectedModeState.setDockSlide(dock._dockScreenName, dockSlide.x, dockSlide.y);
}
property bool _slideSyncPending: false
DeferredAction {
id: dockSlideSync
enabled: SettingsData.connectedFrameModeActive
onTriggered: dock._syncDockSlide()
}
function _queueSlideSync() {
if (!SettingsData.connectedFrameModeActive)
return;
if (_slideSyncPending)
return;
_slideSyncPending = true;
Qt.callLater(dock._flushSlideSync);
dockSlideSync.schedule();
}
function _flushSlideSync() {
_slideSyncPending = false;
dock._syncDockSlide();
DeferredAction {
id: dockChromeSync
onTriggered: dock._syncDockChromeState()
}
property bool contextMenuOpen: (dockVariants.contextMenu && dockVariants.contextMenu.visible && dockVariants.contextMenu.screen === modelData)
@@ -390,8 +393,12 @@ Variants {
}
}
Component.onCompleted: Qt.callLater(() => dock._syncDockChromeState())
Component.onDestruction: ConnectedModeState.clearDockState(dock._dockScreenName)
Component.onCompleted: dockChromeSync.schedule()
Component.onDestruction: {
dockChromeSync.cancel();
dockSlideSync.cancel();
ConnectedModeState.clearDockState(dock._dockScreenName);
}
onRevealChanged: dock._syncDockChromeState()
onWidthChanged: dock._syncDockChromeState()
@@ -404,6 +411,7 @@ Variants {
Connections {
target: SettingsData
function onConnectedFrameModeActiveChanged() {
dockSlideSync.cancel();
dock._syncDockChromeState();
}
}