diff --git a/shell/dock/AppletDock.qml b/shell/dock/AppletDock.qml index 220fb62..e445059 100644 --- a/shell/dock/AppletDock.qml +++ b/shell/dock/AppletDock.qml @@ -14,11 +14,9 @@ PanelWindow { required property var screen - visible: _winVisible + visible: S.DockState.open color: "transparent" - property bool _winVisible: false - WlrLayershell.layer: S.DockState.mode === "pinned" ? WlrLayer.Top : WlrLayer.Overlay WlrLayershell.exclusiveZone: S.DockState.mode === "pinned" ? _dockWidth : 0 WlrLayershell.namespace: "nova-dock" @@ -49,51 +47,17 @@ PanelWindow { } } - // Slide animation - managed manually so window stays visible during hide - property real _slideX: _dockWidth + // Slide animation + property real _slideX: S.DockState.open ? 0 : _dockWidth - Connections { - target: S.DockState - function onOpenChanged() { - if (S.DockState.open) { - root._winVisible = true; - _hideAnim.stop(); - if (S.Theme.reducedMotion) { - root._slideX = 0; - } else { - _showAnim.start(); - } - } else { - _showAnim.stop(); - if (S.Theme.reducedMotion) { - root._slideX = root._dockWidth; - root._winVisible = false; - } else { - _hideAnim.start(); - } - } + Behavior on _slideX { + enabled: !S.Theme.reducedMotion + NumberAnimation { + duration: 200 + easing.type: Easing.OutCubic } } - NumberAnimation { - id: _showAnim - target: root - property: "_slideX" - to: 0 - duration: 200 - easing.type: Easing.OutCubic - } - - NumberAnimation { - id: _hideAnim - target: root - property: "_slideX" - to: root._dockWidth - duration: 200 - easing.type: Easing.InCubic - onFinished: root._winVisible = false - } - // Overlay mode: close when cursor leaves HoverHandler { id: _dockHover @@ -124,47 +88,13 @@ PanelWindow { } } - // Left edge gradient line - marks the virtual screen edge when pinned, - // simple accent line in overlay mode + // Accent border on the left edge Rectangle { - id: _edgeLine anchors.left: parent.left anchors.top: parent.top anchors.bottom: parent.bottom width: 1 - - gradient: S.DockState.mode === "pinned" ? _screenEdgeGradient : null - color: S.DockState.mode === "pinned" ? "transparent" : root._accent - opacity: _bg.opacity - - transform: Translate { - x: root._slideX - } - - Gradient { - id: _screenEdgeGradient - GradientStop { - position: 0 - color: S.Theme.base0C - } - GradientStop { - position: 1 - color: S.Theme.base09 - } - } - } - - // Dock content border - 1px accent, inset from the edge line by the gap - Rectangle { - anchors.left: parent.left - anchors.leftMargin: S.Theme.groupSpacing - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.right: parent.right - color: "transparent" - border.color: root._accent - border.width: 1 - radius: S.Theme.radius + color: root._accent opacity: _bg.opacity transform: Translate { @@ -172,11 +102,10 @@ PanelWindow { } } - // Content - inset past the edge line + gap + // Content Flickable { id: _flickable anchors.fill: parent - anchors.leftMargin: S.Theme.groupSpacing + 1 contentHeight: _column.height clip: true boundsBehavior: Flickable.StopAtBounds