diff options
Diffstat (limited to '')
| -rw-r--r-- | modules/bar/components/workspaces/ActiveIndicator.qml | 3 | ||||
| -rw-r--r-- | modules/bar/components/workspaces/OccupiedBg.qml | 11 | ||||
| -rw-r--r-- | modules/bar/components/workspaces/Workspaces.qml | 15 |
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 } |