static void close_confirmation_dialog_response_handler (GtrCloseConfirmationDialog * dlg, gint response_id, GtrWindow * window) { GList *selected_documents; gboolean is_closing_all; gtk_widget_hide (GTK_WIDGET (dlg)); is_closing_all = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (window), GTR_IS_CLOSING_ALL)); switch (response_id) { case GTK_RESPONSE_YES: /* Save and Close */ selected_documents = gtr_close_confirmation_dialog_get_selected_documents (dlg); if (selected_documents == NULL) { if (is_closing_all) { gtk_widget_destroy (GTK_WIDGET (dlg)); close_all_tabs (window); return; } else g_return_if_reached (); } else { if (is_closing_all) { save_and_close_all_documents (selected_documents, window); } else { save_and_close_document (selected_documents->data, window); } } g_list_free (selected_documents); break; case GTK_RESPONSE_NO: /* Close without Saving */ if (is_closing_all) { gtk_widget_destroy (GTK_WIDGET (dlg)); close_all_tabs (window); return; } else { const GList *unsaved_documents; unsaved_documents = gtr_close_confirmation_dialog_get_unsaved_documents (dlg); g_return_if_fail (unsaved_documents->next == NULL); _gtr_window_close_tab (window, gtr_tab_get_from_document (unsaved_documents->data)); } break; default: /* Do not close */ break; } gtk_widget_destroy (GTK_WIDGET (dlg)); }
static void close_confirmation_dialog_response_handler (CeditCloseConfirmationDialog *dlg, gint response_id, CeditWindow *window) { GList *selected_documents; gboolean is_closing_all; cedit_debug (DEBUG_COMMANDS); is_closing_all = GPOINTER_TO_BOOLEAN (g_object_get_data (G_OBJECT (window), CEDIT_IS_CLOSING_ALL)); gtk_widget_hide (GTK_WIDGET (dlg)); switch (response_id) { case GTK_RESPONSE_YES: /* Save and Close */ selected_documents = cedit_close_confirmation_dialog_get_selected_documents (dlg); if (selected_documents == NULL) { if (is_closing_all) { /* There is no document to save -> close all tabs */ /* We call gtk_widget_destroy before close_all_tabs * because close_all_tabs could destroy the cedit window */ gtk_widget_destroy (GTK_WIDGET (dlg)); close_all_tabs (window); return; } else g_return_if_reached (); } else { if (is_closing_all) { save_and_close_all_documents (selected_documents, window); } else { save_and_close_document (selected_documents, window); } } g_list_free (selected_documents); break; case GTK_RESPONSE_NO: /* Close without Saving */ if (is_closing_all) { /* We call gtk_widget_destroy before close_all_tabs * because close_all_tabs could destroy the cedit window */ gtk_widget_destroy (GTK_WIDGET (dlg)); close_all_tabs (window); return; } else { const GList *unsaved_documents; unsaved_documents = cedit_close_confirmation_dialog_get_unsaved_documents (dlg); g_return_if_fail (unsaved_documents->next == NULL); close_document (window, CEDIT_DOCUMENT (unsaved_documents->data)); } break; default: /* Do not close */ /* Reset is_quitting flag */ g_object_set_data (G_OBJECT (window), CEDIT_IS_QUITTING, GBOOLEAN_TO_POINTER (FALSE)); break; } gtk_widget_destroy (GTK_WIDGET (dlg)); }