refactor: setup OK acts transactional now; apply staged theme before save, roll back on fail

This commit is contained in:
2026-03-17 11:01:40 -06:00
parent 0cfb63f301
commit b7e4548d2a
3 changed files with 21 additions and 3 deletions

View File

@@ -2193,14 +2193,22 @@ static void
setup_ok_cb (GtkWidget *but, GtkWidget *win)
{
PreferencesPersistenceResult save_result;
struct zoitechatprefs old_prefs;
char buffer[192];
theme_preferences_stage_commit ();
memcpy (&old_prefs, &prefs, sizeof (prefs));
theme_preferences_stage_apply ();
setup_apply (&setup_prefs);
save_result = preferences_persistence_save_all ();
gtk_widget_destroy (win);
if (save_result.success)
{
theme_preferences_stage_commit ();
gtk_widget_destroy (win);
return;
}
memcpy (&prefs, &old_prefs, sizeof (prefs));
theme_preferences_stage_discard ();
if (save_result.partial_failure)
{