summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-06-07 16:38:10 +1000
committerGitHub <noreply@github.com>2025-06-07 16:38:10 +1000
commit5dfb3c43edffb9348aa1e3c5ccdfcf51f0dc4346 (patch)
treeebbd42d1ba820a42063c49ecf598666d5833bb15
parentpopouts: fix anim when not shown (diff)
parentpopouts: fix multimonitor (diff)
downloadcaelestia-shell-5dfb3c43edffb9348aa1e3c5ccdfcf51f0dc4346.tar.gz
caelestia-shell-5dfb3c43edffb9348aa1e3c5ccdfcf51f0dc4346.tar.bz2
caelestia-shell-5dfb3c43edffb9348aa1e3c5ccdfcf51f0dc4346.zip
Merge pull request #2 from outfoxxed/popouts-multimon
popouts: fix multimonitor
-rw-r--r--modules/bar/Bar.qml34
-rw-r--r--modules/bar/popouts/Content.qml20
-rw-r--r--modules/bar/popouts/Wrapper.qml4
-rw-r--r--modules/drawers/Drawers.qml2
-rw-r--r--modules/drawers/Interactions.qml8
-rw-r--r--modules/drawers/Panels.qml2
-rw-r--r--services/Popouts.qml23
7 files changed, 47 insertions, 46 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;
diff --git a/services/Popouts.qml b/services/Popouts.qml
deleted file mode 100644
index fdd1480..0000000
--- a/services/Popouts.qml
+++ /dev/null
@@ -1,23 +0,0 @@
-pragma Singleton
-
-import "root:/config"
-import Quickshell
-import QtQuick
-
-Singleton {
- id: root
-
- 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
- }
- }
-}