diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-30 20:50:48 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-30 20:50:48 +0100 |
| commit | 8798809231f386de9bdd877246371a907bdf766f (patch) | |
| tree | 7968f9804c0f1ef138ea4c2c9561099728d0af3b /desktop/modules/monitors | |
| parent | afdc3dce3fe724ab235843c13374391c4f76ce24 (diff) | |
| download | quickshell-8798809231f386de9bdd877246371a907bdf766f.tar.gz quickshell-8798809231f386de9bdd877246371a907bdf766f.zip | |
monitors: keep unsaved edits across another page's reload
Any configreloaded reread the draft, so saving on the Options or
Keyboard shortcuts page silently dropped unsaved monitor edits. The
handler now goes through refresh(), which skips a dirty draft, and
revert() returns the draft to orig itself so its own reload still
rereads. The spec now says one eval per monitor and the reload after a
refusal, as built.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/modules/monitors')
| -rw-r--r-- | desktop/modules/monitors/MonitorsModule.qml | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/desktop/modules/monitors/MonitorsModule.qml b/desktop/modules/monitors/MonitorsModule.qml index 94ec8e4..3fdef48 100644 --- a/desktop/modules/monitors/MonitorsModule.qml +++ b/desktop/modules/monitors/MonitorsModule.qml @@ -75,7 +75,8 @@ Module { function onRawEvent(event) { if (event.name !== "configreloaded" || mm.pending) return; if (mm.skipRead) { mm.skipRead = false; return; } - mm.read(); + // Not over unsaved edits: another page's save reloads too. + mm.refresh(); } } @@ -134,6 +135,8 @@ Module { function revert() { tick.stop(); mm.pending = false; + // What the reload restores, so the reread it triggers is not held back. + mm.draft = JSON.parse(JSON.stringify(mm.orig)); Quickshell.execDetached(["hyprctl", "reload"]); } |
