Make _save a gboolean and mce has a confirmation note if all disabled.
[tweakr] / maemo-tweaks.c
index 9679937..5cd5b40 100644 (file)
@@ -10,6 +10,8 @@
 #include "libmaemo-tweaks-section/maemo-tweaks-section.h"
 #include "maemo-tweaks-module-manager.h"
 
+static gboolean save_ret;
+
 GtkWidget *create_dialog (GtkWindow *parent)
 {
     GtkWidget *dialog;
@@ -27,6 +29,11 @@ GtkWidget *create_dialog (GtkWindow *parent)
     return dialog;
 }
 
+void _save (MaemoTweaksSection *section, gboolean *requires_restart)
+{
+    save_ret &= maemo_tweaks_section_save (section, requires_restart);
+}
+
 osso_return_t execute (osso_context_t *osso, gpointer data,
                        gboolean user_activated)
 {
@@ -65,12 +72,18 @@ osso_return_t execute (osso_context_t *osso, gpointer data,
     }
 
     gtk_widget_show_all (GTK_DIALOG (dialog)->vbox);
-    response = gtk_dialog_run (GTK_DIALOG (dialog));
-    if (response == GTK_RESPONSE_OK)
+
+    for (;;)
     {
-        /* Save all settings */
-        g_list_foreach (sections, (GFunc) maemo_tweaks_section_save,
-                        &requires_restart);
+        save_ret = TRUE;
+        response = gtk_dialog_run (GTK_DIALOG (dialog));
+        if (response == GTK_RESPONSE_OK)
+        {
+            /* Save all settings */
+            g_list_foreach (sections, (GFunc) _save, &requires_restart);
+        }
+        if (save_ret)
+            break;
     }
 
     gtk_widget_destroy (GTK_WIDGET (dialog));