evolution r36474 - in branches/gnome-2-24: mail widgets/misc



Author: mcrha
Date: Mon Sep 29 10:07:44 2008
New Revision: 36474
URL: http://svn.gnome.org/viewvc/evolution?rev=36474&view=rev

Log:
2008-09-29  Milan Crha  <mcrha redhat com>

	** Fix for bug #530716

	* mail/mail-session.c: (user_message_response), (user_message_exec),
	(user_message_response_free): Differentiate between response
	with valid message pointer and with one already freed.

	* widgets/misc/e-activity-handler.c: (error_cleanup): GtkDialog errors close
	by the response message, not as other widgets, because creator
	of the dialog waits for that signal and takes care of the widget.



Modified:
   branches/gnome-2-24/mail/ChangeLog
   branches/gnome-2-24/mail/mail-session.c
   branches/gnome-2-24/widgets/misc/ChangeLog
   branches/gnome-2-24/widgets/misc/e-activity-handler.c

Modified: branches/gnome-2-24/mail/mail-session.c
==============================================================================
--- branches/gnome-2-24/mail/mail-session.c	(original)
+++ branches/gnome-2-24/mail/mail-session.c	Mon Sep 29 10:07:44 2008
@@ -286,20 +286,13 @@
 
 static void user_message_exec (struct _user_message_msg *m);
 
-/* clicked, send back the reply */
 static void
-user_message_response (GtkDialog *dialog, int button, struct _user_message_msg *m)
+user_message_response_free (GtkDialog *dialog, int button, struct _user_message_msg *m)
 {
 	gtk_widget_destroy ((GtkWidget *) dialog);
 
 	user_message_dialog = NULL;
 
-	/* if !allow_cancel, then we've already replied */
-	if (m->allow_cancel) {
-		m->result = button == GTK_RESPONSE_OK;
-		e_flag_set (m->done);
-	}
-
 	/* check for pendings */
 	if (!g_queue_is_empty (&user_message_queue)) {
 		m = g_queue_pop_head (&user_message_queue);
@@ -308,6 +301,19 @@
 	}
 }
 
+/* clicked, send back the reply */
+static void
+user_message_response (GtkDialog *dialog, int button, struct _user_message_msg *m)
+{
+	/* if !allow_cancel, then we've already replied */
+	if (m->allow_cancel) {
+		m->result = button == GTK_RESPONSE_OK;
+		e_flag_set (m->done);
+	}
+
+	user_message_response_free (dialog, button, m);
+}
+
 static void
 user_message_exec (struct _user_message_msg *m)
 {
@@ -364,7 +370,7 @@
 	} else {
 		g_signal_connect (
 			user_message_dialog, "response",
-			G_CALLBACK (user_message_response), m);
+			G_CALLBACK (user_message_response_free), m);
 		g_object_set_data (
 			user_message_dialog, "response-handled",
 			GINT_TO_POINTER (TRUE));
@@ -375,8 +381,8 @@
 static void
 user_message_free (struct _user_message_msg *m)
 {
-	g_free(m->prompt);
-	e_flag_free(m->done);
+	g_free (m->prompt);
+	e_flag_free (m->done);
 }
 
 static MailMsgInfo user_message_info = {

Modified: branches/gnome-2-24/widgets/misc/e-activity-handler.c
==============================================================================
--- branches/gnome-2-24/widgets/misc/e-activity-handler.c	(original)
+++ branches/gnome-2-24/widgets/misc/e-activity-handler.c	Mon Sep 29 10:07:44 2008
@@ -515,7 +515,12 @@
 			/* Error older than wanted time. So cleanup */
 			e_logger_log (priv->logger, info->error_type, g_object_get_data (info->error, "primary"), 
 						    g_object_get_data (info->error, "secondary"));
-			gtk_widget_destroy (info->error);
+
+			if (GTK_IS_DIALOG (info->error))
+				gtk_dialog_response (GTK_DIALOG (info->error), GTK_RESPONSE_CLOSE);
+			else
+				gtk_widget_destroy (info->error);
+
 			node = p;
 			p = p->next;
 



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