diff options
| author | ATMDA <atdma2600@gmail.com> | 2025-11-16 09:03:16 -0500 |
|---|---|---|
| committer | ATMDA <atdma2600@gmail.com> | 2025-11-16 09:03:16 -0500 |
| commit | 0d57edcade29fa1da2eef510dc83d5bb26528d57 (patch) | |
| tree | f6b29b1dfb87948659d5dcc3cc53d69a3c57b083 /config | |
| parent | controlcenter: font slider min-max (diff) | |
| download | caelestia-shell-0d57edcade29fa1da2eef510dc83d5bb26528d57.tar.gz caelestia-shell-0d57edcade29fa1da2eef510dc83d5bb26528d57.tar.bz2 caelestia-shell-0d57edcade29fa1da2eef510dc83d5bb26528d57.zip | |
config: 0ms bug on save corrected
Diffstat (limited to 'config')
| -rw-r--r-- | config/Config.qml | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/config/Config.qml b/config/Config.qml index 3756043..b875eef 100644 --- a/config/Config.qml +++ b/config/Config.qml @@ -30,8 +30,12 @@ Singleton { // Public save function - call this to persist config changes function save(): void { saveTimer.restart(); + recentlySaved = true; + recentSaveCooldown.restart(); } + property bool recentlySaved: false + ElapsedTimer { id: timer } @@ -41,6 +45,7 @@ Singleton { interval: 500 onTriggered: { + timer.restart(); try { // Parse current config to preserve structure and comments if possible let config = {}; @@ -62,6 +67,15 @@ Singleton { } } + Timer { + id: recentSaveCooldown + + interval: 2000 + onTriggered: { + recentlySaved = false; + } + } + // Helper function to serialize the config object function serializeConfig(): var { return { @@ -409,16 +423,24 @@ Singleton { watchChanges: true onFileChanged: { // Prevent reload loop - don't reload if we just saved - if (!saveTimer.running) { + if (!recentlySaved) { timer.restart(); reload(); + } else { + // Self-initiated save - reload without toast + reload(); } } onLoaded: { try { JSON.parse(text()); - if (adapter.utilities.toasts.configLoaded) - Toaster.toast(qsTr("Config loaded"), qsTr("Config loaded in %1ms").arg(timer.elapsedMs()), "rule_settings"); + const elapsed = timer.elapsedMs(); + // Only show toast for external changes (not our own saves) and when elapsed time is meaningful + if (adapter.utilities.toasts.configLoaded && !recentlySaved && elapsed > 0) { + Toaster.toast(qsTr("Config loaded"), qsTr("Config loaded in %1ms").arg(elapsed), "rule_settings"); + } else if (adapter.utilities.toasts.configLoaded && recentlySaved && elapsed > 0) { + Toaster.toast(qsTr("Config saved"), qsTr("Config reloaded in %1ms").arg(elapsed), "rule_settings"); + } } catch (e) { Toaster.toast(qsTr("Failed to load config"), e.message, "settings_alert", Toast.Error); } |