summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorATMDA <atdma2600@gmail.com>2025-11-16 09:03:16 -0500
committerATMDA <atdma2600@gmail.com>2025-11-16 09:03:16 -0500
commit0d57edcade29fa1da2eef510dc83d5bb26528d57 (patch)
treef6b29b1dfb87948659d5dcc3cc53d69a3c57b083
parentcontrolcenter: font slider min-max (diff)
downloadcaelestia-shell-0d57edcade29fa1da2eef510dc83d5bb26528d57.tar.gz
caelestia-shell-0d57edcade29fa1da2eef510dc83d5bb26528d57.tar.bz2
caelestia-shell-0d57edcade29fa1da2eef510dc83d5bb26528d57.zip
config: 0ms bug on save corrected
-rw-r--r--config/Config.qml28
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);
}