diff options
Diffstat (limited to 'modules/bar/components/workspaces/ActiveIndicator.qml')
| -rw-r--r-- | modules/bar/components/workspaces/ActiveIndicator.qml | 41 |
1 files changed, 17 insertions, 24 deletions
diff --git a/modules/bar/components/workspaces/ActiveIndicator.qml b/modules/bar/components/workspaces/ActiveIndicator.qml index 3167d6e..99d6275 100644 --- a/modules/bar/components/workspaces/ActiveIndicator.qml +++ b/modules/bar/components/workspaces/ActiveIndicator.qml @@ -8,45 +8,38 @@ StyledRect { id: root required property int activeWsId - required property list<Workspace> workspaces + required property Repeater workspaces required property Item mask - required property real maskWidth - required property real maskHeight - required property int groupOffset - readonly property int currentWsIdx: activeWsId - 1 - groupOffset - property real leading: getWsY(currentWsIdx) - property real trailing: getWsY(currentWsIdx) - property real currentSize: workspaces[currentWsIdx]?.size ?? 0 + readonly property int currentWsIdx: (activeWsId - 1) % Config.bar.workspaces.shown + + property real leading: workspaces.itemAt(currentWsIdx)?.y ?? 0 + property real trailing: workspaces.itemAt(currentWsIdx)?.y ?? 0 + property real currentSize: workspaces.itemAt(currentWsIdx)?.size ?? 0 property real offset: Math.min(leading, trailing) property real size: { const s = Math.abs(leading - trailing) + currentSize; - if (Config.bar.workspaces.activeTrail && lastWs > currentWsIdx) - return Math.min(getWsY(lastWs) + (workspaces[lastWs]?.size ?? 0) - offset, s); + if (Config.bar.workspaces.activeTrail && lastWs > currentWsIdx) { + const ws = workspaces.itemAt(lastWs); + // console.log(ws, lastWs); + return ws ? Math.min(ws.y + ws.size - offset, s) : 0; + } return s; } property int cWs property int lastWs - function getWsY(idx: int): real { - let y = 0; - for (let i = 0; i < idx; i++) - y += workspaces[i]?.size ?? 0; - return y; - } - onCurrentWsIdxChanged: { lastWs = cWs; cWs = currentWsIdx; } clip: true - x: 1 - y: offset + 1 - implicitWidth: Config.bar.sizes.innerHeight - 2 - implicitHeight: size - 2 - radius: Config.bar.workspaces.rounded ? Appearance.rounding.full : 0 + y: offset + mask.y + implicitWidth: Config.bar.sizes.innerWidth - Appearance.padding.small * 2 + implicitHeight: size + radius: Appearance.rounding.full color: Colours.palette.m3primary Colouriser { @@ -56,8 +49,8 @@ StyledRect { x: 0 y: -parent.offset - implicitWidth: root.maskWidth - implicitHeight: root.maskHeight + implicitWidth: root.mask.implicitWidth + implicitHeight: root.mask.implicitHeight anchors.horizontalCenter: parent.horizontalCenter } |