diff options
Diffstat (limited to 'calendar/gui')
-rw-r--r-- | calendar/gui/calendar-component.c | 4 | ||||
-rw-r--r-- | calendar/gui/component-factory.c | 4 | ||||
-rw-r--r-- | calendar/gui/dialogs/comp-editor.c | 13 | ||||
-rw-r--r-- | calendar/gui/dialogs/comp-editor.h | 2 | ||||
-rw-r--r-- | calendar/gui/e-comp-editor-registry.c | 11 | ||||
-rw-r--r-- | calendar/gui/e-comp-editor-registry.h | 2 |
6 files changed, 21 insertions, 15 deletions
diff --git a/calendar/gui/calendar-component.c b/calendar/gui/calendar-component.c index f1d09b90ed..71c52f9c7c 100644 --- a/calendar/gui/calendar-component.c +++ b/calendar/gui/calendar-component.c @@ -472,9 +472,7 @@ xfer_folder (EvolutionShellComponent *shell_component, static gboolean request_quit (EvolutionShellComponent *shell_component, void *closure) { - e_comp_editor_registry_close_all (comp_editor_registry); - - return TRUE; + return e_comp_editor_registry_close_all (comp_editor_registry); } static GList *shells = NULL; diff --git a/calendar/gui/component-factory.c b/calendar/gui/component-factory.c index f1d09b90ed..71c52f9c7c 100644 --- a/calendar/gui/component-factory.c +++ b/calendar/gui/component-factory.c @@ -472,9 +472,7 @@ xfer_folder (EvolutionShellComponent *shell_component, static gboolean request_quit (EvolutionShellComponent *shell_component, void *closure) { - e_comp_editor_registry_close_all (comp_editor_registry); - - return TRUE; + return e_comp_editor_registry_close_all (comp_editor_registry); } static GList *shells = NULL; diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c index 21f5e1c9f3..18ca46af27 100644 --- a/calendar/gui/dialogs/comp-editor.c +++ b/calendar/gui/dialogs/comp-editor.c @@ -978,16 +978,21 @@ comp_editor_send_comp (CompEditor *editor, CalComponentItipMethod method) klass->send_comp (editor, method); } -void +gboolean comp_editor_close (CompEditor *editor) { - g_return_if_fail (editor != NULL); - g_return_if_fail (IS_COMP_EDITOR (editor)); + gboolean close; + + g_return_val_if_fail (editor != NULL, FALSE); + g_return_val_if_fail (IS_COMP_EDITOR (editor), FALSE); commit_all_fields (editor); - if (prompt_to_save_changes (editor, TRUE)) + close = prompt_to_save_changes (editor, TRUE); + if (close) close_dialog (editor); + + return close; } /** diff --git a/calendar/gui/dialogs/comp-editor.h b/calendar/gui/dialogs/comp-editor.h index 9297526e48..db4a407e25 100644 --- a/calendar/gui/dialogs/comp-editor.h +++ b/calendar/gui/dialogs/comp-editor.h @@ -83,7 +83,7 @@ gboolean comp_editor_save_comp (CompEditor *editor, void comp_editor_delete_comp (CompEditor *editor); void comp_editor_send_comp (CompEditor *editor, CalComponentItipMethod method); -void comp_editor_close (CompEditor *editor); +gboolean comp_editor_close (CompEditor *editor); void comp_editor_merge_ui (CompEditor *editor, const char *filename, BonoboUIVerb *verbs, diff --git a/calendar/gui/e-comp-editor-registry.c b/calendar/gui/e-comp-editor-registry.c index 4385cb1a84..46548a57c6 100644 --- a/calendar/gui/e-comp-editor-registry.c +++ b/calendar/gui/e-comp-editor-registry.c @@ -171,15 +171,16 @@ foreach_close_cb (gpointer key, gpointer value, gpointer data) gtk_signal_disconnect_by_data (GTK_OBJECT (rdata->editor), data); comp_editor_focus (rdata->editor); - comp_editor_close (rdata->editor); - + if (!comp_editor_close (rdata->editor)) + return FALSE; + g_free (rdata->uid); g_free (rdata); return TRUE; } -void +gboolean e_comp_editor_registry_close_all (ECompEditorRegistry *reg) { ECompEditorRegistryPrivate *priv; @@ -190,6 +191,10 @@ e_comp_editor_registry_close_all (ECompEditorRegistry *reg) priv = reg->priv; g_hash_table_foreach_remove (priv->editors, foreach_close_cb, reg); + if (g_hash_table_size (priv->editors) != 0) + return FALSE; + + return TRUE; } static void diff --git a/calendar/gui/e-comp-editor-registry.h b/calendar/gui/e-comp-editor-registry.h index 13833e2357..dfcc1b21bc 100644 --- a/calendar/gui/e-comp-editor-registry.h +++ b/calendar/gui/e-comp-editor-registry.h @@ -68,7 +68,7 @@ void e_comp_editor_registry_add (ECompEditorRegistry *reg, gboolean remote); CompEditor *e_comp_editor_registry_find (ECompEditorRegistry *reg, const char *uid); -void e_comp_editor_registry_close_all (ECompEditorRegistry *reg); +gboolean e_comp_editor_registry_close_all (ECompEditorRegistry *reg); #ifdef __cplusplus } |