summaryrefslogtreecommitdiff
path: root/modules/bar/components/workspaces
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/bar/components/workspaces/ActiveIndicator.qml3
-rw-r--r--modules/bar/components/workspaces/OccupiedBg.qml11
-rw-r--r--modules/bar/components/workspaces/Workspaces.qml15
3 files changed, 10 insertions, 19 deletions
diff --git a/modules/bar/components/workspaces/ActiveIndicator.qml b/modules/bar/components/workspaces/ActiveIndicator.qml
index 912f771..cd5ce35 100644
--- a/modules/bar/components/workspaces/ActiveIndicator.qml
+++ b/modules/bar/components/workspaces/ActiveIndicator.qml
@@ -10,10 +10,9 @@ StyledRect {
required property int activeWsId
required property Repeater workspaces
required property Item mask
- required property var monitorWorkspaces
readonly property int currentWsIdx: {
- let wss = monitorWorkspaces;
+ let wss = Hypr.workspaces.values;
for (let i = 0; i < wss.length; i++) {
let ws = wss[i];
if (ws.id == activeWsId)
diff --git a/modules/bar/components/workspaces/OccupiedBg.qml b/modules/bar/components/workspaces/OccupiedBg.qml
index 0364575..da6fa55 100644
--- a/modules/bar/components/workspaces/OccupiedBg.qml
+++ b/modules/bar/components/workspaces/OccupiedBg.qml
@@ -16,12 +16,15 @@ Item {
property list<var> pills: []
onOccupiedChanged: {
+ if (!occupied) return;
let count = 0;
const start = groupOffset;
const end = start + Config.bar.workspaces.shown;
for (const [ws, occ] of Object.entries(occupied)) {
if (ws > start && ws <= end && occ) {
- if (!occupied[ws - 1]) {
+ const isFirstInGroup = Number(ws) === start + 1;
+ const isLastInGroup = Number(ws) === end;
+ if (isFirstInGroup || !occupied[ws - 1]) {
if (pills[count])
pills[count].start = ws;
else
@@ -30,7 +33,7 @@ Item {
}));
count++;
}
- if (!occupied[ws + 1])
+ if ((isLastInGroup || !occupied[ws + 1]) && pills[count - 1])
pills[count - 1].end = ws;
}
}
@@ -48,8 +51,8 @@ Item {
required property var modelData
- readonly property Workspace start: root.workspaces.itemAt(getWsIdx(modelData.start)) ?? null
- readonly property Workspace end: root.workspaces.itemAt(getWsIdx(modelData.end)) ?? null
+ readonly property Workspace start: root.workspaces.count > 0 ? root.workspaces.itemAt(getWsIdx(modelData.start)) ?? null : null
+ readonly property Workspace end: root.workspaces.count > 0 ? root.workspaces.itemAt(getWsIdx(modelData.end)) ?? null : null
function getWsIdx(ws: int): int {
let i = ws - 1;
diff --git a/modules/bar/components/workspaces/Workspaces.qml b/modules/bar/components/workspaces/Workspaces.qml
index 69b8e48..562dd82 100644
--- a/modules/bar/components/workspaces/Workspaces.qml
+++ b/modules/bar/components/workspaces/Workspaces.qml
@@ -14,16 +14,6 @@ StyledClippingRect {
required property ShellScreen screen
readonly property int activeWsId: Config.bar.workspaces.perMonitorWorkspaces ? (Hypr.monitorFor(screen).activeWorkspace?.id ?? 1) : Hypr.activeWsId
- readonly property var monitorWorkspaces: {
- if (Config.bar.workspaces.perMonitorWorkspaces) {
- let monitor = Hypr.monitorFor(root.screen);
- return Hypr.workspaces.values.filter(ws => {
- return ws.monitor.id == monitor.id
- });
- } else {
- return Hypr.workspaces.values
- }
- }
implicitWidth: Config.bar.sizes.innerWidth
implicitHeight: layout.implicitHeight + Appearance.padding.small * 2
@@ -42,9 +32,9 @@ StyledClippingRect {
Repeater {
id: workspaces
- model: monitorWorkspaces.length
+ model: Hypr.workspaces.values.length
Workspace {
- ws: monitorWorkspaces[index]
+ ws: Hypr.workspaces.values[index]
activeWsId: root.activeWsId
}
}
@@ -56,7 +46,6 @@ StyledClippingRect {
sourceComponent: ActiveIndicator {
activeWsId: root.activeWsId
- monitorWorkspaces: root.monitorWorkspaces
workspaces: workspaces
mask: layout
}