[mlview-list][patch] fix cancel dialog on exit



Hi,

This patch should fix the bug 130184. 
It adds the name of the document to save in the dialog. A question is
asked for each document that need to be saved, and mlview is closed only
if all the documents open are saved (if you cancel one of the choice the
tab stays open and mlview is not closed).


Cheers,
 
Sebastien Bacher

Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/mlview/ChangeLog,v
retrieving revision 1.223
diff -u -r1.223 ChangeLog
--- ChangeLog	9 Feb 2004 21:03:06 -0000	1.223
+++ ChangeLog	9 Feb 2004 21:31:04 -0000
@@ -1,3 +1,12 @@
+2004-02-09  Sebastien Bacher  <seb128 debian org>
+
+	* src/mlview-app.c: (close_application), (delete_event_cb):
+	* src/mlview-editor.[ch]:
+	(mlview_editor_close_all_xml_documents_interactive),
+	(mlview_editor_confirm_close):
+	Fixed bug with cancel on the exit dialog (Closes: #130184).
+	Added name, of the document to save, to the dialog.
+
 2004-02-09  Dodji Seketeli  <dodji gnome org>
 
 	* src/mlview-editor.c:
Index: src/mlview-app.c
===================================================================
RCS file: /cvs/gnome/mlview/src/mlview-app.c,v
retrieving revision 1.61
diff -u -r1.61 mlview-app.c
--- src/mlview-app.c	11 Jan 2004 01:12:06 -0000	1.61
+++ src/mlview-app.c	9 Feb 2004 21:32:03 -0000
@@ -347,6 +347,7 @@
 {
         GnomeApp *app = NULL;
         MlViewEditor *editor = NULL;
+        gboolean is_ok = FALSE;
 
         g_return_if_fail (a_widget
                           && GTK_IS_WIDGET (a_widget)
@@ -357,8 +358,12 @@
                                                  "MlViewEditor");
 
         if (editor)
-                mlview_editor_close_all_xml_documents_interactive
+                is_ok = mlview_editor_close_all_xml_documents_interactive
                         (editor);
+
+        if(is_ok == FALSE)
+                return;
+
         app = mlview_app_context_get_element (a_context,
                                               "GnomeApp");
         g_object_unref (G_OBJECT (a_context));
@@ -375,7 +380,7 @@
                               FALSE) ;
 
         close_application (a_widget, a_context) ;
-        return FALSE ;
+        return TRUE ;
 }
 
 static gint
Index: src/mlview-editor.c
===================================================================
RCS file: /cvs/gnome/mlview/src/mlview-editor.c,v
retrieving revision 1.74
diff -u -r1.74 mlview-editor.c
--- src/mlview-editor.c	9 Feb 2004 21:02:16 -0000	1.74
+++ src/mlview-editor.c	9 Feb 2004 21:32:08 -0000
@@ -2148,23 +2148,23 @@
  *
  * param a_this the current mlview editor.
  */
-void
+gboolean
 mlview_editor_close_all_xml_documents_interactive (MlViewEditor *a_this)
 {
         GList *views = NULL,
                 *mobile_view_ptr = NULL;
 
-        g_return_if_fail (a_this != NULL);
-        g_return_if_fail (MLVIEW_EDITOR (a_this));
-        g_return_if_fail (PRIVATE (a_this) != NULL);
-        g_return_if_fail (PRIVATE (a_this)->
-                          mlview_xml_doc_views != NULL);
+        g_return_val_if_fail (a_this != NULL, FALSE);
+        g_return_val_if_fail (MLVIEW_EDITOR (a_this), FALSE);
+        g_return_val_if_fail (PRIVATE (a_this) != NULL, FALSE);
+        g_return_val_if_fail (PRIVATE (a_this)->
+                          mlview_xml_doc_views != NULL, FALSE);
 
         views = build_view_list_from_hashtable
                 (PRIVATE (a_this)->mlview_xml_doc_views);
 
         if (views == NULL)
-                return;
+                return FALSE;
 
         for (mobile_view_ptr = views;
              mobile_view_ptr;
@@ -2173,6 +2173,11 @@
                         (MlViewIView *) mobile_view_ptr->data;
                 mlview_editor_close_xml_document_interactive (a_this);
         }
+
+        if(g_list_length(mlview_editor_get_list_open_doc(a_this)) == 0)
+                return TRUE;
+        else
+                return FALSE;
 }
 
 
@@ -2186,17 +2191,21 @@
 {
         GtkWidget *dialog;
         gint ret;
+        guchar *a_name = NULL;
 
         g_return_if_fail (a_this != NULL);
         g_return_if_fail (MLVIEW_IS_EDITOR (a_this));
         g_return_if_fail (PRIVATE (a_this));
 
+        mlview_iview_get_name(PRIVATE (a_this)->cur_view, &a_name);
+
         dialog = gtk_message_dialog_new (NULL,
                                          GTK_DIALOG_MODAL,
                                          GTK_MESSAGE_QUESTION,
                                          GTK_BUTTONS_NONE,
-                                         _("The document has been modifed.\n"
-					   "Should I save it before closing it?"));
+                                         _("The document \"%s\" has been modifed.\n"
+					   "Should I save it before closing it?"), 
+                                         a_name);
 
         gtk_dialog_add_buttons (GTK_DIALOG (dialog),
                                 _("_Close without Saving"), GTK_RESPONSE_NO,
Index: src/mlview-editor.h
===================================================================
RCS file: /cvs/gnome/mlview/src/mlview-editor.h,v
retrieving revision 1.33
diff -u -r1.33 mlview-editor.h
--- src/mlview-editor.h	1 Feb 2004 01:28:20 -0000	1.33
+++ src/mlview-editor.h	9 Feb 2004 21:32:08 -0000
@@ -167,7 +167,7 @@
 
 void mlview_editor_close_xml_document_interactive (MlViewEditor * a_editor);
 
-void mlview_editor_close_all_xml_documents_interactive (MlViewEditor * a_editor);
+gboolean mlview_editor_close_all_xml_documents_interactive (MlViewEditor * a_editor);
 
 void mlview_editor_paste_node_as_prev_sibling (MlViewEditor * a_editor);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]