diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/bar/Bar.qml | 34 | ||||
| -rw-r--r-- | modules/bar/popouts/Content.qml | 20 | ||||
| -rw-r--r-- | modules/bar/popouts/Wrapper.qml | 4 | ||||
| -rw-r--r-- | modules/drawers/Drawers.qml | 2 | ||||
| -rw-r--r-- | modules/drawers/Interactions.qml | 8 | ||||
| -rw-r--r-- | modules/drawers/Panels.qml | 2 |
6 files changed, 47 insertions, 23 deletions
diff --git a/modules/bar/Bar.qml b/modules/bar/Bar.qml index c851bbc..2e8ab89 100644 --- a/modules/bar/Bar.qml +++ b/modules/bar/Bar.qml @@ -1,6 +1,7 @@ import "root:/widgets" import "root:/services" import "root:/config" +import "root:/modules/bar/popouts" as BarPopouts import "components" import "components/workspaces" import Quickshell @@ -10,6 +11,7 @@ Item { id: root required property ShellScreen screen + required property BarPopouts.Wrapper popouts function checkPopout(y: real): void { const spacing = Appearance.spacing.small; @@ -30,30 +32,30 @@ Item { const by = statusIcons.y + statusIconsInner.y + b.y - spacing / 2; if (y >= awy && y <= awy + aw.implicitHeight) { - Popouts.currentName = "activewindow"; - Popouts.currentCenter = Qt.binding(() => activeWindow.y + aw.y + aw.implicitHeight / 2); - Popouts.hasCurrent = true; + popouts.currentName = "activewindow"; + popouts.currentCenter = Qt.binding(() => activeWindow.y + aw.y + aw.implicitHeight / 2); + popouts.hasCurrent = true; } else if (y > ty && y < ty + th) { const index = Math.floor(((y - ty) / th) * trayItems.count); const item = trayItems.itemAt(index); - Popouts.currentName = `traymenu${index}`; - Popouts.currentCenter = Qt.binding(() => tray.y + item.y + item.implicitHeight / 2); - Popouts.hasCurrent = true; + popouts.currentName = `traymenu${index}`; + popouts.currentCenter = Qt.binding(() => tray.y + item.y + item.implicitHeight / 2); + popouts.hasCurrent = true; } else if (y >= ny && y <= ny + n.implicitHeight + spacing) { - Popouts.currentName = "network"; - Popouts.currentCenter = Qt.binding(() => statusIcons.y + statusIconsInner.y + n.y + n.implicitHeight / 2); - Popouts.hasCurrent = true; + popouts.currentName = "network"; + popouts.currentCenter = Qt.binding(() => statusIcons.y + statusIconsInner.y + n.y + n.implicitHeight / 2); + popouts.hasCurrent = true; } else if (y >= bls && y <= ble) { - Popouts.currentName = "bluetooth"; - Popouts.currentCenter = Qt.binding(() => statusIcons.y + statusIconsInner.y + statusIconsInner.bs + (statusIconsInner.be - statusIconsInner.bs) / 2); - Popouts.hasCurrent = true; + popouts.currentName = "bluetooth"; + popouts.currentCenter = Qt.binding(() => statusIcons.y + statusIconsInner.y + statusIconsInner.bs + (statusIconsInner.be - statusIconsInner.bs) / 2); + popouts.hasCurrent = true; } else if (y >= by && y <= by + b.implicitHeight + spacing) { - Popouts.currentName = "battery"; - Popouts.currentCenter = Qt.binding(() => statusIcons.y + statusIconsInner.y + b.y + b.implicitHeight / 2); - Popouts.hasCurrent = true; + popouts.currentName = "battery"; + popouts.currentCenter = Qt.binding(() => statusIcons.y + statusIconsInner.y + b.y + b.implicitHeight / 2); + popouts.hasCurrent = true; } else { - Popouts.hasCurrent = false; + popouts.hasCurrent = false; } } diff --git a/modules/bar/popouts/Content.qml b/modules/bar/popouts/Content.qml index a3ddea4..086a558 100644 --- a/modules/bar/popouts/Content.qml +++ b/modules/bar/popouts/Content.qml @@ -11,9 +11,23 @@ Item { required property ShellScreen screen + property string currentName + property real currentCenter + property bool hasCurrent + + Behavior on currentCenter { + enabled: root.hasCurrent + + NumberAnimation { + duration: Appearance.anim.durations.normal + easing.type: Easing.BezierSpline + easing.bezierCurve: Appearance.anim.curves.emphasized + } + } + anchors.centerIn: parent - implicitWidth: Popouts.hasCurrent ? (content.children.find(c => c.shouldBeActive)?.implicitWidth ?? 0) + Appearance.padding.large * 2 : 0 + implicitWidth: root.hasCurrent ? (content.children.find(c => c.shouldBeActive)?.implicitWidth ?? 0) + Appearance.padding.large * 2 : 0 implicitHeight: (content.children.find(c => c.shouldBeActive)?.implicitHeight ?? 0) + Appearance.padding.large * 2 Item { @@ -70,7 +84,7 @@ Item { } Behavior on implicitHeight { - enabled: Popouts.hasCurrent + enabled: root.hasCurrent Anim { easing.bezierCurve: Appearance.anim.curves.emphasized @@ -81,7 +95,7 @@ Item { id: popout required property string name - property bool shouldBeActive: Popouts.currentName === name + property bool shouldBeActive: root.currentName === name anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right diff --git a/modules/bar/popouts/Wrapper.qml b/modules/bar/popouts/Wrapper.qml index 47b8af2..f304ea7 100644 --- a/modules/bar/popouts/Wrapper.qml +++ b/modules/bar/popouts/Wrapper.qml @@ -8,6 +8,10 @@ Item { required property ShellScreen screen + property alias currentName: content.currentName + property alias currentCenter: content.currentCenter + property alias hasCurrent: content.hasCurrent + visible: width > 0 && height > 0 implicitWidth: content.implicitWidth diff --git a/modules/drawers/Drawers.qml b/modules/drawers/Drawers.qml index c897f4a..23520e1 100644 --- a/modules/drawers/Drawers.qml +++ b/modules/drawers/Drawers.qml @@ -117,6 +117,7 @@ Variants { Interactions { screen: scope.modelData + popouts: panels.popouts visibilities: visibilities panels: panels bar: bar @@ -134,6 +135,7 @@ Variants { id: bar screen: scope.modelData + popouts: panels.popouts } } } diff --git a/modules/drawers/Interactions.qml b/modules/drawers/Interactions.qml index e66c24d..3ec522b 100644 --- a/modules/drawers/Interactions.qml +++ b/modules/drawers/Interactions.qml @@ -1,5 +1,6 @@ import "root:/services" import "root:/config" +import "root:/modules/bar/popouts" as BarPopouts import "root:/modules/osd" as Osd import Quickshell import QtQuick @@ -8,6 +9,7 @@ MouseArea { id: root required property ShellScreen screen + required property BarPopouts.Wrapper popouts required property PersistentProperties visibilities required property Panels panels required property Item bar @@ -38,7 +40,7 @@ MouseArea { visibilities.osd = false; osdHovered = false; visibilities.dashboard = false; - Popouts.hasCurrent = false; + popouts.hasCurrent = false; } } @@ -68,9 +70,9 @@ MouseArea { bar.checkPopout(y); else // Keep on hover - Popouts.hasCurrent = withinPanelHeight(popout, x, y); + popouts.hasCurrent = withinPanelHeight(popout, x, y); } else - Popouts.hasCurrent = false; + popouts.hasCurrent = false; } Osd.Interactions { diff --git a/modules/drawers/Panels.qml b/modules/drawers/Panels.qml index 0514b3e..6c6d892 100644 --- a/modules/drawers/Panels.qml +++ b/modules/drawers/Panels.qml @@ -83,7 +83,7 @@ Item { anchors.left: parent.left anchors.verticalCenter: parent.top anchors.verticalCenterOffset: { - const off = Popouts.currentCenter - BorderConfig.thickness; + const off = root.popouts.currentCenter - BorderConfig.thickness; const diff = root.height - Math.floor(off + implicitHeight / 2); if (diff < 0) return off + diff; |