2005-02-25 [paul] 1.0.1cvs19.1
[claws.git] / src / gtk / prefswindow.c
index ffb5211149dc346d76b494bcd25f79deb00b2932..345f2368337bbc9209326375ff0666efa9025399 100644 (file)
@@ -95,6 +95,20 @@ static void save_all_pages(GSList *prefs_pages)
        }
 }
 
+static gboolean query_can_close_all_pages(GSList *prefs_pages)
+{
+       GSList *cur;
+
+       for (cur = prefs_pages; cur != NULL; cur = g_slist_next(cur)) {
+               PrefsPage *page = (PrefsPage *) cur->data;
+
+               if (page->can_close)
+                       if (!page->can_close(page))
+                               return FALSE;
+       }
+       return TRUE;
+}
+
 static void close_all_pages(GSList *prefs_pages)
 {
        GSList *cur;
@@ -133,8 +147,10 @@ static void ok_button_released(GtkButton *button, gpointer user_data)
 {
        PrefsWindow *prefswindow = (PrefsWindow *) user_data;
 
-       save_all_pages(prefswindow->prefs_pages);
-       close_prefs_window(prefswindow);
+       if (query_can_close_all_pages(prefswindow->prefs_pages)) {
+               save_all_pages(prefswindow->prefs_pages);
+               close_prefs_window(prefswindow);
+       }               
 }
 
 static void cancel_button_released(GtkButton *button, gpointer user_data)