Compare commits
1 changed files with 11 additions and 82 deletions
|
|
@ -14,11 +14,9 @@ PanelWindow {
|
||||||
|
|
||||||
required property var screen
|
required property var screen
|
||||||
|
|
||||||
visible: _winVisible
|
visible: S.DockState.open
|
||||||
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"
|
||||||
|
|
@ -49,51 +47,17 @@ PanelWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Slide animation - managed manually so window stays visible during hide
|
// Slide animation
|
||||||
property real _slideX: _dockWidth
|
property real _slideX: S.DockState.open ? 0 : _dockWidth
|
||||||
|
|
||||||
Connections {
|
Behavior on _slideX {
|
||||||
target: S.DockState
|
enabled: !S.Theme.reducedMotion
|
||||||
function onOpenChanged() {
|
NumberAnimation {
|
||||||
if (S.DockState.open) {
|
duration: 200
|
||||||
root._winVisible = true;
|
easing.type: Easing.OutCubic
|
||||||
_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
|
||||||
|
|
@ -124,47 +88,13 @@ PanelWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Left edge gradient line - marks the virtual screen edge when pinned,
|
// Accent border on the left edge
|
||||||
// simple accent line in overlay mode
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: _edgeLine
|
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
width: 1
|
width: 1
|
||||||
|
color: root._accent
|
||||||
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
|
|
||||||
opacity: _bg.opacity
|
opacity: _bg.opacity
|
||||||
|
|
||||||
transform: Translate {
|
transform: Translate {
|
||||||
|
|
@ -172,11 +102,10 @@ PanelWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Content - inset past the edge line + gap
|
// Content
|
||||||
Flickable {
|
Flickable {
|
||||||
id: _flickable
|
id: _flickable
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.leftMargin: S.Theme.groupSpacing + 1
|
|
||||||
contentHeight: _column.height
|
contentHeight: _column.height
|
||||||
clip: true
|
clip: true
|
||||||
boundsBehavior: Flickable.StopAtBounds
|
boundsBehavior: Flickable.StopAtBounds
|
||||||
|
|
|
||||||
Reference in a new issue