diff options
Diffstat (limited to 'desktop/modules/monitors/MonitorsModule.qml')
| -rw-r--r-- | desktop/modules/monitors/MonitorsModule.qml | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/desktop/modules/monitors/MonitorsModule.qml b/desktop/modules/monitors/MonitorsModule.qml index 3ed9b22..94ec8e4 100644 --- a/desktop/modules/monitors/MonitorsModule.qml +++ b/desktop/modules/monitors/MonitorsModule.qml @@ -62,7 +62,7 @@ Module { stdout: StdioCollector { onStreamFinished: { let list; - try { list = JSON.parse(this.text); } catch (e) { return; } + try { list = JSON.parse(this.text); } catch (e) { mm.error = "Cannot read hyprctl monitors."; return; } mm.orig = list.map(M.draft); mm.draft = list.map(M.draft); } @@ -89,6 +89,8 @@ Module { } function apply() { + // A refusal's reload that never reported must not eat a later one. + mm.skipRead = false; mm.error = ""; mm.notice = ""; applyProc.command = ["sh", "-c", 'for l; do hyprctl eval "$l" || exit 7; done', "sh"] @@ -124,7 +126,8 @@ Module { tick.stop(); mm.pending = false; fv.setText(M.file(mm.draft)); - mm.notice = "saved"; + // The draft is what is live; not left to the autoreload's read. + mm.orig = JSON.parse(JSON.stringify(mm.draft)); } // Also what leaving the page while pending does. @@ -138,6 +141,9 @@ Module { path: mm.file atomicWrites: true printErrors: false + onSaved: mm.notice = "saved" + // Live but not on disk: the next reload would bring the old file back. + onSaveFailed: err => mm.error = "Cannot write monitors.lua: " + FileViewError.toString(err) } Component.onCompleted: mm.read() |
