From 41293c02a980168d8f8cba2c4683ad37416f41f7 Mon Sep 17 00:00:00 2001 From: Damocles Date: Tue, 28 Apr 2026 00:00:56 +0200 Subject: [PATCH] dock: coordinated resize animation via centralized reservedWidthAnimated --- shell/modules/Bar.qml | 10 +--------- shell/modules/BarGroup.qml | 2 +- shell/modules/ScreenCorners.qml | 4 ++-- shell/services/DockState.qml | 13 +++++++++++++ 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/shell/modules/Bar.qml b/shell/modules/Bar.qml index ff6d091..d7605fc 100644 --- a/shell/modules/Bar.qml +++ b/shell/modules/Bar.qml @@ -17,15 +17,7 @@ PanelWindow { right: true } - margins.right: S.DockState.reservedWidth - - Behavior on margins.right { - enabled: !S.Theme.reducedMotion - NumberAnimation { - duration: 200 - easing.type: Easing.OutCubic - } - } + margins.right: S.DockState.reservedWidthAnimated implicitHeight: S.Theme.barHeight exclusiveZone: implicitHeight diff --git a/shell/modules/BarGroup.qml b/shell/modules/BarGroup.qml index 544a8ae..a0c00cc 100644 --- a/shell/modules/BarGroup.qml +++ b/shell/modules/BarGroup.qml @@ -15,7 +15,7 @@ Item { if (!scr) return 0.5; const gx = mapToGlobal(width / 2, 0).x - scr.x; - const effectiveWidth = scr.width - (S.DockState.reservedWidth ?? 0); + const effectiveWidth = scr.width - (S.DockState.reservedWidthAnimated ?? 0); return Math.max(0, Math.min(1, gx / (effectiveWidth > 0 ? effectiveWidth : scr.width))); } property color borderColor: Qt.rgba(S.Theme.base0C.r + (S.Theme.base09.r - S.Theme.base0C.r) * _posFrac, S.Theme.base0C.g + (S.Theme.base09.g - S.Theme.base0C.g) * _posFrac, S.Theme.base0C.b + (S.Theme.base09.b - S.Theme.base0C.b) * _posFrac, 1) diff --git a/shell/modules/ScreenCorners.qml b/shell/modules/ScreenCorners.qml index 7c02d16..3be436c 100644 --- a/shell/modules/ScreenCorners.qml +++ b/shell/modules/ScreenCorners.qml @@ -80,7 +80,7 @@ Item { corner: 1 anchors.top: true anchors.right: true - margins.right: S.DockState.reservedWidth + margins.right: S.DockState.reservedWidthAnimated } Corner { corner: 2 @@ -91,6 +91,6 @@ Item { corner: 3 anchors.bottom: true anchors.right: true - margins.right: S.DockState.reservedWidth + margins.right: S.DockState.reservedWidthAnimated } } diff --git a/shell/services/DockState.qml b/shell/services/DockState.qml index ad3f3ca..1cdd735 100644 --- a/shell/services/DockState.qml +++ b/shell/services/DockState.qml @@ -11,6 +11,19 @@ QtObject { // Bar, screen corners, etc. read this to adjust layout. property int reservedWidth: 0 + // Animated version for smooth visual transitions. + // Consumers that need coordinated movement use this instead. + property int reservedWidthAnimated: 0 + + Behavior on reservedWidthAnimated { + NumberAnimation { + duration: 200 + easing.type: Easing.InOutCubic + } + } + + onReservedWidthChanged: reservedWidthAnimated = reservedWidth + onModeChanged: { if (mode !== "pinned") reservedWidth = 0;