From ba58d14fae68c551073dd4bc97179551eeecd098 Mon Sep 17 00:00:00 2001 From: Not Zed Date: Tue, 27 Nov 2001 21:41:18 +0000 Subject: merged from evoution-1-0-branch 2001-11-25 Not Zed * mail-config.c (config_read): Enable news accounts that exist always, since no gui for it. 2001-11-20 Jeffrey Stedfast * message-list.c (message_list_select): 'n' shouldn't wrap if 'p' doesn't. * mail-format.c (format_mime_part): Make sure the mime-type is non-NULL before passing it off to mail_lookup_handler(). 2001-11-20 Not Zed * folder-browser-ui.c: Disable search if no message loaded/viewed. Also for #14348. * folder-browser.c: Disable "Add sender to addressbook" if we dont have a message loaded (it wont work). For #14348. 2001-11-20 Jeffrey Stedfast * mail-display.c (load_content_loaded): Make sure the mail-display object is still "alive" before accessing any of it's data. svn path=/trunk/; revision=14796 --- mail/mail-display.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'mail/mail-display.c') diff --git a/mail/mail-display.c b/mail/mail-display.c index 552f4db3ca..47709c1897 100644 --- a/mail/mail-display.c +++ b/mail/mail-display.c @@ -1116,7 +1116,7 @@ on_url_requested (GtkHTML *html, const char *url, GtkHTMLStream *handle, struct _load_content_msg { struct _mail_msg msg; - + MailDisplay *display; GtkHTMLStream *handle; @@ -1146,10 +1146,10 @@ try_part_urls (struct _load_content_msg *m) { GHashTable *urls; CamelMedium *medium; - + urls = g_datalist_get_data (m->display->data, "part_urls"); g_return_val_if_fail (urls != NULL, FALSE); - + /* See if it refers to a MIME part (cid: or http:) */ medium = g_hash_table_lookup (urls, m->url); if (medium) { @@ -1167,11 +1167,11 @@ try_part_urls (struct _load_content_msg *m) html_stream = mail_stream_gtkhtml_new (m->display->html, m->handle); camel_data_wrapper_write_to_stream (data, html_stream); camel_object_unref (CAMEL_OBJECT (html_stream)); - + gtk_html_end (m->display->html, m->handle, GTK_HTML_STREAM_OK); return TRUE; } - + return FALSE; } @@ -1180,10 +1180,10 @@ try_data_urls (struct _load_content_msg *m) { GHashTable *urls; GByteArray *ba; - + urls = g_datalist_get_data (m->display->data, "data_urls"); ba = g_hash_table_lookup (urls, m->url); - + printf ("url: %s data: %p len: %d\n", m->url, ba, ba ? ba->len : -1); if (ba) { if (ba->len) { @@ -1193,7 +1193,7 @@ try_data_urls (struct _load_content_msg *m) gtk_html_end (m->display->html, m->handle, GTK_HTML_STREAM_OK); return TRUE; } - + return FALSE; } @@ -1201,7 +1201,10 @@ static void load_content_loaded (struct _mail_msg *mm) { struct _load_content_msg *m = (struct _load_content_msg *)mm; - + + if (GTK_OBJECT_DESTROYED (m->display)) + return; + if (m->display->current_message == m->message) { if (m->handle) { printf ("handle: %p orig: %d actual: %d\n", m->handle, @@ -1220,7 +1223,7 @@ static void load_content_free (struct _mail_msg *mm) { struct _load_content_msg *m = (struct _load_content_msg *)mm; - + g_free (m->url); gtk_object_unref (GTK_OBJECT (m->display)); camel_object_unref (CAMEL_OBJECT (m->message)); @@ -1243,7 +1246,7 @@ stream_write_or_redisplay_when_loaded (MailDisplay *md, { struct _load_content_msg *m; GHashTable *loading; - + loading = g_datalist_get_data (md->data, "loading"); if (loading) { if (g_hash_table_lookup (loading, key)) @@ -1254,18 +1257,18 @@ stream_write_or_redisplay_when_loaded (MailDisplay *md, (GDestroyNotify)g_hash_table_destroy); } g_hash_table_insert (loading, (gpointer)key, GINT_TO_POINTER (1)); - + m = mail_msg_new (&load_content_op, NULL, sizeof (*m)); m->display = md; + gtk_object_ref (GTK_OBJECT (m->display)); m->handle = handle; m->url = g_strdup (url); m->redisplay_counter = md->redisplay_counter; - gtk_object_ref (GTK_OBJECT (m->display)); m->message = md->current_message; camel_object_ref (CAMEL_OBJECT (m->message)); m->callback = callback; m->data = data; - + e_thread_put (mail_thread_queued, (EMsg *)m); return; } @@ -1469,7 +1472,8 @@ mail_display_destroy (GtkObject *object) g_datalist_clear (mail_display->data); g_free (mail_display->data); - + mail_display->data = NULL; + if (mail_display->idle_id) gtk_timeout_remove(mail_display->idle_id); -- cgit v1.2.3