From 04fdf9ca7980b594ea674d8755b730569a550d26 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 7 Oct 2026 19:06:02 +0200 Subject: fix(island): neutral idle sliver, flag scroll via MouseArea The sliver was the accent at rest, and udt had snapped the accent to the same colour as the mic indicator (#36d190), so an idle sliver read as a live microphone. It is Theme.overlay at rest now; captures keep their colours whatever the wallpaper does. The flag's WheelHandler never fired. MouseArea.onWheel, which SoundPage already uses, does; scroll now switches layout, one step per notch. Co-Authored-By: Claude Opus 5.5 --- desktop/island/Island.qml | 8 +++++--- desktop/island/StatusPill.qml | 17 +++++++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) (limited to 'desktop') diff --git a/desktop/island/Island.qml b/desktop/island/Island.qml index b471e3c..0cb3c10 100644 --- a/desktop/island/Island.qml +++ b/desktop/island/Island.qml @@ -146,8 +146,10 @@ PanelWindow { Region { item: status; intersection: Intersection.Combine } } - // The visible sliver: accent at rest, the capture colours while - // something captures, one equal segment per active kind. + // The visible sliver: neutral at rest, the capture colours while + // something captures, one equal segment per active kind. Not the accent + // at rest: udt snaps the accent to a palette colour, and when it lands on + // green an idle sliver read exactly like a live microphone. Row { id: sliver x: win.cx - width / 2 @@ -156,7 +158,7 @@ PanelWindow { height: 4 Repeater { - model: Privacy.roles.length ? Privacy.roles : ["accent"] + model: Privacy.roles.length ? Privacy.roles : ["overlay"] delegate: Rectangle { required property string modelData width: sliver.width / Math.max(1, Privacy.roles.length) diff --git a/desktop/island/StatusPill.qml b/desktop/island/StatusPill.qml index 344117c..5ab8f95 100644 --- a/desktop/island/StatusPill.qml +++ b/desktop/island/StatusPill.qml @@ -93,13 +93,18 @@ Capsule { // One switch per wheel notch (120). A touchpad sends many small // deltas, and switching on each made the count erratic. - WheelHandler { + // A MouseArea, not a WheelHandler: the handler never fired here, + // while MouseArea.onWheel is what SoundPage already relies on. + MouseArea { + anchors.fill: parent property real acc: 0 - onWheel: event => { - acc += event.angleDelta.y; - if (Math.abs(acc) < 120) return; - Keyboard.cycle(acc > 0 ? "prev" : "next"); - acc = 0; + onWheel: wheel => { + acc += wheel.angleDelta.y; + if (Math.abs(acc) >= 120) { + Keyboard.cycle(acc > 0 ? "prev" : "next"); + acc = 0; + } + wheel.accepted = true; } } } -- cgit v1.2.3