dock: fix slide-out animation by managing visibility manually
This commit is contained in:
parent
c6fd199bd7
commit
007c9f4eca
1 changed files with 44 additions and 8 deletions
|
|
@ -14,9 +14,11 @@ PanelWindow {
|
||||||
|
|
||||||
required property var screen
|
required property var screen
|
||||||
|
|
||||||
visible: S.DockState.open
|
visible: _winVisible
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
|
|
||||||
|
property bool _winVisible: false
|
||||||
|
|
||||||
WlrLayershell.layer: S.DockState.mode === "pinned" ? WlrLayer.Top : WlrLayer.Overlay
|
WlrLayershell.layer: S.DockState.mode === "pinned" ? WlrLayer.Top : WlrLayer.Overlay
|
||||||
WlrLayershell.exclusiveZone: S.DockState.mode === "pinned" ? _dockWidth : 0
|
WlrLayershell.exclusiveZone: S.DockState.mode === "pinned" ? _dockWidth : 0
|
||||||
WlrLayershell.namespace: "nova-dock"
|
WlrLayershell.namespace: "nova-dock"
|
||||||
|
|
@ -47,17 +49,51 @@ PanelWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Slide animation
|
// Slide animation - managed manually so window stays visible during hide
|
||||||
property real _slideX: S.DockState.open ? 0 : _dockWidth
|
property real _slideX: _dockWidth
|
||||||
|
|
||||||
Behavior on _slideX {
|
Connections {
|
||||||
enabled: !S.Theme.reducedMotion
|
target: S.DockState
|
||||||
NumberAnimation {
|
function onOpenChanged() {
|
||||||
duration: 200
|
if (S.DockState.open) {
|
||||||
easing.type: Easing.OutCubic
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
// Overlay mode: close when cursor leaves
|
||||||
HoverHandler {
|
HoverHandler {
|
||||||
id: _dockHover
|
id: _dockHover
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue