aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/modules/status
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-21 10:23:05 +0200
committerDanilo M. <danix@danix.xyz>2026-10-21 10:23:05 +0200
commit77952289f8176703eef7134262c6fd6d0d835dd6 (patch)
tree730b1d128b77b43be4ac4127740baee2d4c4b87b /desktop/modules/status
parent93f129ad1a2b59db8533cb7c86cee3c10417ba4f (diff)
downloadquickshell-77952289f8176703eef7134262c6fd6d0d835dd6.tar.gz
quickshell-77952289f8176703eef7134262c6fd6d0d835dd6.zip
Switch: never set checked itself, report the new state instead
The shared Switch flipped its own checked on click, which replaced the caller's binding with a constant. Every use binds checked, so after a click the switch stopped following its source: Discard on a settings draft reverted the value and left the switch showing the click. Four status rows and the headphones panel each carried a resync workaround for it. toggled now carries the new state and the switch moves only when the caller's binding does. Handlers that read checked as the new value take the argument instead; the workarounds are gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/modules/status')
-rw-r--r--desktop/modules/status/BreakRow.qml10
-rw-r--r--desktop/modules/status/LockRow.qml5
-rw-r--r--desktop/modules/status/SnoozeRow.qml2
-rw-r--r--desktop/modules/status/StatusRow.qml5
4 files changed, 0 insertions, 22 deletions
diff --git a/desktop/modules/status/BreakRow.qml b/desktop/modules/status/BreakRow.qml
index 70ad3ea..8b732b1 100644
--- a/desktop/modules/status/BreakRow.qml
+++ b/desktop/modules/status/BreakRow.qml
@@ -81,14 +81,4 @@ Item {
onToggled: Status.runBreaktimer(Status.btPaused ? "resume" : "pause")
}
}
-
- // The shared Switch writes `checked` on click and so drops the binding
- // above. Resync on any state change, which also covers a change made from
- // the waybar module's own bindings or from a terminal.
- Connections {
- target: Status
- function onBtStateChanged() {
- sw.checked = Status.btRunning && !Status.btPaused;
- }
- }
}
diff --git a/desktop/modules/status/LockRow.qml b/desktop/modules/status/LockRow.qml
index c59c2f1..0e711d8 100644
--- a/desktop/modules/status/LockRow.qml
+++ b/desktop/modules/status/LockRow.qml
@@ -105,9 +105,4 @@ Item {
onToggled: row.apply(!row.lockOn)
}
}
-
- // The shared Switch's click handler writes `checked` directly, which drops
- // the declarative binding above. Resync on any state change so the timer,
- // statusctl or presentation mode moves the switch back into agreement.
- onLockOnChanged: sw.checked = row.lockOn
}
diff --git a/desktop/modules/status/SnoozeRow.qml b/desktop/modules/status/SnoozeRow.qml
index 046d7cb..efb1844 100644
--- a/desktop/modules/status/SnoozeRow.qml
+++ b/desktop/modules/status/SnoozeRow.qml
@@ -109,6 +109,4 @@ Item {
onToggled: row.apply(!row.active)
}
}
-
- onNowChanged: sw.checked = row.active
}
diff --git a/desktop/modules/status/StatusRow.qml b/desktop/modules/status/StatusRow.qml
index c9e78c0..c342e2b 100644
--- a/desktop/modules/status/StatusRow.qml
+++ b/desktop/modules/status/StatusRow.qml
@@ -53,9 +53,4 @@ Item {
checked: row.value
onToggled: Status.toggleMode(row.mode)
}
-
- // The shared Switch's click handler writes `checked` directly, which drops
- // the declarative binding above. Resync on any value change so an external
- // write (statusctl, waybar) moves the switch back into agreement.
- onValueChanged: sw.checked = row.value
}