diff options
-rw-r--r-- | mail/ChangeLog | 8 | ||||
-rw-r--r-- | mail/mail-session.c | 28 | ||||
-rw-r--r-- | widgets/misc/ChangeLog | 8 | ||||
-rw-r--r-- | widgets/misc/e-activity-handler.c | 7 |
4 files changed, 39 insertions, 12 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index c73a4511b4..c14f4f07b3 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,5 +1,13 @@ 2008-09-29 Milan Crha <mcrha@redhat.com> + ** Fix for bug #530716 + + * 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. + +2008-09-29 Milan Crha <mcrha@redhat.com> + ** Fix for bug #530691 * em-folder-utils.c: (emfu_delete_rec), (emfu_delete_done), diff --git a/mail/mail-session.c b/mail/mail-session.c index b317612960..9009bb607b 100644 --- a/mail/mail-session.c +++ b/mail/mail-session.c @@ -286,20 +286,13 @@ struct _user_message_msg { 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 @@ user_message_response (GtkDialog *dialog, int button, struct _user_message_msg * } } +/* 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 @@ user_message_exec (struct _user_message_msg *m) } 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 @@ user_message_exec (struct _user_message_msg *m) 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 = { diff --git a/widgets/misc/ChangeLog b/widgets/misc/ChangeLog index e3f85dab74..dee6690520 100644 --- a/widgets/misc/ChangeLog +++ b/widgets/misc/ChangeLog @@ -1,3 +1,11 @@ +2008-09-29 Milan Crha <mcrha@redhat.com> + + ** Part of fix for bug #530716 + + * 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. + 2008-09-29 Sankar P <psankar@novell.com> License Changes diff --git a/widgets/misc/e-activity-handler.c b/widgets/misc/e-activity-handler.c index e6e4d80386..98c844ff3f 100644 --- a/widgets/misc/e-activity-handler.c +++ b/widgets/misc/e-activity-handler.c @@ -515,7 +515,12 @@ error_cleanup (EActivityHandler *activity_handler) /* 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; |