From d2c4c1c4bb8ae541af719869ce15e8c17f077ad4 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 17 Jul 2026 15:20:55 -0700 Subject: [PATCH] Standardize bar icon geometry --- Panel.qml | 57 +++++++++++++++---------------------------------------- 1 file changed, 15 insertions(+), 42 deletions(-) diff --git a/Panel.qml b/Panel.qml index a6e084f..e0de662 100644 --- a/Panel.qml +++ b/Panel.qml @@ -12,7 +12,6 @@ Panel { ipcTarget: "omarchy.tailscale" manageIpc: false - readonly property real openIndicatorInlineOffset: bar && bar.vertical ? 0 : Style.spaceReal(1.5) property string focusSection: "header" property int headerIndex: 0 property int accountIndex: 0 @@ -360,53 +359,27 @@ Panel { function status(): string { return tailscale.statusText } } - Item { + BarIconButton { id: button anchors.fill: parent - implicitWidth: root.bar && root.bar.vertical ? root.bar.barSize : Style.space(27) - implicitHeight: root.bar && root.bar.vertical ? Style.space(26) : (root.bar ? root.bar.barSize : Style.space(26)) - - property var registeredBar: null - - function triggerPress(buttonCode) { + bar: root.bar + iconComponent: Component { + Item { + TailscaleIcon { + anchors.centerIn: parent + iconSize: Style.space(11) + color: root.barIconColor + badgeColor: root.urgent + crossed: !tailscale.running && !tailscale.needsLogin + warning: tailscale.needsLogin + } + } + } + onPressed: function(buttonCode) { if (buttonCode === Qt.RightButton) tailscale.toggleTailscale() else if (buttonCode === Qt.MiddleButton) tailscale.refresh() else root.toggle() } - - function syncClickRegistration() { - if (registeredBar && registeredBar.unregisterClickTarget) registeredBar.unregisterClickTarget(button) - registeredBar = root.bar - if (registeredBar && registeredBar.registerClickTarget) registeredBar.registerClickTarget(button) - } - - Component.onCompleted: syncClickRegistration() - Component.onDestruction: if (registeredBar && registeredBar.unregisterClickTarget) registeredBar.unregisterClickTarget(button) - - Connections { - target: root - function onBarChanged() { button.syncClickRegistration() } - } - - TailscaleIcon { - anchors.centerIn: parent - anchors.horizontalCenterOffset: root.openIndicatorInlineOffset - anchors.verticalCenterOffset: -Style.space(1) - iconSize: Style.space(12) * 0.85 - color: root.barIconColor - badgeColor: root.urgent - crossed: !tailscale.running && !tailscale.needsLogin - warning: tailscale.needsLogin - } - - MouseArea { - id: mouseArea - anchors.fill: parent - acceptedButtons: Qt.LeftButton | Qt.RightButton | Qt.MiddleButton - hoverEnabled: true - cursorShape: Qt.PointingHandCursor - onClicked: function(mouse) { button.triggerPress(mouse.button) } - } } KeyboardPanel {