diff options
Diffstat (limited to 'mail')
-rw-r--r-- | mail/ChangeLog | 15 | ||||
-rw-r--r-- | mail/mail-callbacks.h | 1 | ||||
-rw-r--r-- | mail/mail-display.c | 18 | ||||
-rw-r--r-- | mail/mail-send-recv.c | 15 |
4 files changed, 42 insertions, 7 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 5a6efc7742..f0c521d76f 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,18 @@ +2001-12-04 Jeffrey Stedfast <fejj@ximian.com> + + * mail-display.c (stream_write_or_redisplay_when_loaded): Check + that the mail-display hasn't been destroyed. + (mail_display_redisplay): Same here. + +2001-12-07 Dan Winship <danw@ximian.com> + + * mail-send-recv.c (receive_update_got_store): If updating a store + that we don't have an associated storage for, just request a + folder tree and then free it. (For the Connector) + + * mail-callbacks.h: Add missing part of Jeff's 12-03 patch so this + actually compiles. + 2001-12-06 Jeffrey Stedfast <fejj@ximian.com> * mail-ops.c (mail_send_message): s/PREVIEW_RELEASE/VERSION_COMMENT diff --git a/mail/mail-callbacks.h b/mail/mail-callbacks.h index c2bfe06bfb..f2bee415cf 100644 --- a/mail/mail-callbacks.h +++ b/mail/mail-callbacks.h @@ -84,6 +84,7 @@ void load_images (GtkWidget *widget, gpointer user_data); void add_sender_to_addrbook (BonoboUIComponent *uih, void *user_data, const char *path); void move_msg (BonoboUIComponent *uih, void *user_data, const char *path); void copy_msg (BonoboUIComponent *uih, void *user_data, const char *path); +void add_sender_to_addrbook(BonoboUIComponent *uih, void *user_data, const char *path); void select_all (BonoboUIComponent *uih, void *user_data, const char *path); void select_thread (BonoboUIComponent *uih, void *user_data, const char *path); void invert_selection (BonoboUIComponent *uih, void *user_data, const char *path); diff --git a/mail/mail-display.c b/mail/mail-display.c index 47709c1897..8b4545880a 100644 --- a/mail/mail-display.c +++ b/mail/mail-display.c @@ -1247,6 +1247,9 @@ stream_write_or_redisplay_when_loaded (MailDisplay *md, struct _load_content_msg *m; GHashTable *loading; + if (GTK_OBJECT_DESTROYED (md)) + return; + loading = g_datalist_get_data (md->data, "loading"); if (loading) { if (g_hash_table_lookup (loading, key)) @@ -1350,10 +1353,13 @@ clear_data (CamelObject *object, gpointer event_data, gpointer user_data) void mail_display_redisplay (MailDisplay *md, gboolean unscroll) { + if (GTK_OBJECT_DESTROYED (md)) + return; + md->last_active = NULL; - md->redisplay_counter ++; + md->redisplay_counter++; /* printf ("md %p redisplay %d\n", md, md->redisplay_counter); */ - + md->stream = gtk_html_begin (GTK_HTML (md->html)); if (!unscroll) { /* This is a hack until there's a clean way to do this. */ @@ -1469,16 +1475,16 @@ mail_display_destroy (GtkObject *object) g_free (mail_display->charset); g_free (mail_display->selection); - + 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); - + gtk_timeout_remove (mail_display->idle_id); + gtk_widget_unref (mail_display->invisible); - + mail_display_parent_class->destroy (object); } diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c index be5b13f248..f42c018a8e 100644 --- a/mail/mail-send-recv.c +++ b/mail/mail-send-recv.c @@ -608,6 +608,14 @@ receive_get_folder(CamelFilterDriver *d, const char *uri, void *data, CamelExcep } static void +receive_update_got_folderinfo (CamelStore *store, CamelFolderInfo *info, void *data) +{ + if (info) + camel_store_free_folder_info (store, info); + receive_done ("", data); +} + +static void receive_update_got_store (char *uri, CamelStore *store, void *data) { struct _send_info *info = data; @@ -619,7 +627,12 @@ receive_update_got_store (char *uri, CamelStore *store, void *data) mail_note_store(store, storage, CORBA_OBJECT_NIL, receive_update_done, info); /*bonobo_object_unref (BONOBO_OBJECT (storage));*/ } else { - receive_done ("", info); + /* If we get here, store must be an external + * storage other than /local. (Eg, Exchange). + * Do a get_folder_info just to force it to + * update itself. + */ + mail_get_folderinfo(store, receive_update_got_folderinfo, info); } } else { receive_done ("", info); |