From 82139e9c2d04bae0d40fa5702751d6bf7edfce05 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Tue, 29 Apr 2025 12:07:44 +1000 Subject: refactor: workspaces use inner bar height Also simplify boxpadding --- config/BarConfig.qml | 1 + modules/bar/components/workspaces/OccupiedBg.qml | 6 +- modules/bar/components/workspaces/Workspace.qml | 6 +- modules/bar/components/workspaces/Workspaces.qml | 24 +++--- widgets/BoxLayout.qml | 102 ++--------------------- 5 files changed, 24 insertions(+), 115 deletions(-) diff --git a/config/BarConfig.qml b/config/BarConfig.qml index 0173f18..1ecffc0 100644 --- a/config/BarConfig.qml +++ b/config/BarConfig.qml @@ -11,6 +11,7 @@ Singleton { component Sizes: QtObject { readonly property int height: 50 + readonly property int innerHeight: 30 readonly property int floatingGap: 10 readonly property int floatingGapLarge: 15 } diff --git a/modules/bar/components/workspaces/OccupiedBg.qml b/modules/bar/components/workspaces/OccupiedBg.qml index f6998c5..7ffd436 100644 --- a/modules/bar/components/workspaces/OccupiedBg.qml +++ b/modules/bar/components/workspaces/OccupiedBg.qml @@ -1,9 +1,7 @@ import "root:/widgets" -import "root:/services" import "root:/config" import QtQuick import QtQuick.Layouts -import Qt5Compat.GraphicalEffects BoxLayout { id: root @@ -33,8 +31,8 @@ BoxLayout { bottomRightRadius: roundRight // Ugh stupid size errors on reload - Layout.preferredWidth: root.vertical ? layout.width : root.workspaces[index]?.width ?? 1 - Layout.preferredHeight: root.vertical ? root.workspaces[index]?.height ?? 1 : layout.height + Layout.preferredWidth: root.vertical ? BarConfig.sizes.innerHeight : root.workspaces[index]?.width ?? 1 + Layout.preferredHeight: root.vertical ? root.workspaces[index]?.height ?? 1 : BarConfig.sizes.innerHeight Behavior on opacity { NumberAnimation { diff --git a/modules/bar/components/workspaces/Workspace.qml b/modules/bar/components/workspaces/Workspace.qml index d8d0f4d..e404c83 100644 --- a/modules/bar/components/workspaces/Workspace.qml +++ b/modules/bar/components/workspaces/Workspace.qml @@ -7,12 +7,12 @@ StyledText { required property int index required property BoxLayout layout required property var occupied - readonly property bool isWorkspace: true + readonly property bool isWorkspace: true // Flag for finding workspace children text: index + 1 color: BarConfig.workspaces.occupiedBg || occupied[index + 1] ? Appearance.colours.text : Appearance.colours.subtext0 horizontalAlignment: StyledText.AlignHCenter - Layout.preferredWidth: layout.homogenous && !layout.vertical ? layout.height : -1 - Layout.preferredHeight: layout.homogenous && layout.vertical ? layout.width : -1 + Layout.preferredWidth: layout.homogenous && !layout.vertical ? BarConfig.sizes.innerHeight : -1 + Layout.preferredHeight: layout.homogenous && layout.vertical ? BarConfig.sizes.innerHeight : -1 } diff --git a/modules/bar/components/workspaces/Workspaces.qml b/modules/bar/components/workspaces/Workspaces.qml index 26dc23a..b95497c 100644 --- a/modules/bar/components/workspaces/Workspaces.qml +++ b/modules/bar/components/workspaces/Workspaces.qml @@ -28,8 +28,7 @@ Item { BoxLayout { id: layout - padding: vertical ? [0, Appearance.padding.smaller / 2] : [Appearance.padding.smaller / 2, 0] - anchors.centerIn: parent + anchors.fill: parent homogenous: true spacing: 0 @@ -72,8 +71,8 @@ Item { Rectangle { id: active - property int currentIdx: 0 - property int lastIdx: 0 + property int currentIdx: (Hyprland.activeWorkspace?.id ?? 1) - 1 + property int lastIdx: currentIdx property real leading: root.workspaces[currentIdx][root.vertical ? "y" : "x"] property real trailing: root.workspaces[lastIdx][root.vertical ? "y" : "x"] property real currentSize: root.workspaces[currentIdx][root.vertical ? "height" : "width"] @@ -83,19 +82,13 @@ Item { clip: true x: root.vertical ? 0 : offset y: root.vertical ? offset : 0 - width: root.vertical ? layout.width : size - height: root.vertical ? size : layout.height + width: root.vertical ? BarConfig.sizes.innerHeight : size + height: root.vertical ? size : BarConfig.sizes.innerHeight color: Appearance.colours.mauve radius: Appearance.rounding.full - Connections { - target: Hyprland - - function onActiveWorkspaceChanged() { - active.currentIdx = (Hyprland.activeWorkspace?.id ?? 1) - 1; - active.lastIdx = active.currentIdx; - } - } + anchors.horizontalCenter: root.vertical ? parent.horizontalCenter : undefined + anchors.verticalCenter: root.vertical ? undefined : parent.verticalCenter Rectangle { id: base @@ -113,6 +106,9 @@ Item { y: root.vertical ? -parent.offset : 0 width: root.width height: root.height + + anchors.horizontalCenter: root.vertical ? parent.horizontalCenter : undefined + anchors.verticalCenter: root.vertical ? undefined : parent.verticalCenter } Behavior on leading { diff --git a/widgets/BoxLayout.qml b/widgets/BoxLayout.qml index a180d6b..2163000 100644 --- a/widgets/BoxLayout.qml +++ b/widgets/BoxLayout.qml @@ -1,102 +1,16 @@ import "root:/config" -import QtQuick import QtQuick.Layouts -Rectangle { - id: root - - default property alias children: layout.children - readonly property alias visibleChildren: layout.visibleChildren - +GridLayout { property bool vertical: false property bool homogenous: false - property bool animated: false property int spacing: Appearance.spacing.small - property var padding: 0 - - readonly property int paddingTop: getRealPadding().top - readonly property int paddingRight: getRealPadding().right - readonly property int paddingBottom: getRealPadding().bottom - readonly property int paddingLeft: getRealPadding().left - readonly property int paddingX: getRealPadding().x - readonly property int paddingY: getRealPadding().y - - function getRealPadding() { - const pad = {}; - - if (Array.isArray(padding)) { - if (padding.length === 2) { - pad.top = pad.bottom = padding[0]; - pad.left = pad.right = padding[1]; - } else if (padding.length === 3) { - pad.top = padding[0]; - pad.left = pad.right = padding[1]; - pad.bottom = padding[2]; - } else if (padding.length === 4) { - pad.top = padding[0]; - pad.right = padding[1]; - pad.bottom = padding[2]; - pad.left = padding[3]; - } - } else { - pad.top = pad.bottom = pad.left = pad.right = padding; - } - - pad.x = pad.left + pad.right; - pad.y = pad.top + pad.bottom; - - return pad; - } - - function childAt(x: real, y: real): Item { - return layout.childAt(x, y); - } - - color: "transparent" - - implicitWidth: layout.implicitWidth + paddingX - implicitHeight: layout.implicitHeight + paddingY - - GridLayout { - id: layout - - x: root.paddingLeft - y: root.paddingTop - - flow: root.vertical ? GridLayout.TopToBottom : GridLayout.LeftToRight - uniformCellWidths: root.homogenous || root.vertical - uniformCellHeights: root.homogenous || !root.vertical - rows: root.vertical ? -1 : 1 - columns: root.vertical ? 1 : -1 - rowSpacing: root.spacing - columnSpacing: root.spacing - } - - Behavior on color { - ColorAnimation { - duration: Appearance.anim.durations.normal - easing.type: Easing.BezierSpline - easing.bezierCurve: Appearance.anim.curves.standard - } - } - - Behavior on implicitWidth { - enabled: root.animated - - NumberAnimation { - duration: Appearance.anim.durations.normal - easing.type: Easing.BezierSpline - easing.bezierCurve: Appearance.anim.curves.emphasized - } - } - - Behavior on implicitHeight { - enabled: root.animated - NumberAnimation { - duration: Appearance.anim.durations.normal - easing.type: Easing.BezierSpline - easing.bezierCurve: Appearance.anim.curves.emphasized - } - } + flow: vertical ? GridLayout.TopToBottom : GridLayout.LeftToRight + uniformCellWidths: homogenous || vertical + uniformCellHeights: homogenous || !vertical + rows: vertical ? -1 : 1 + columns: vertical ? 1 : -1 + rowSpacing: spacing + columnSpacing: spacing } -- cgit v1.2.3-freya