aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog15
-rw-r--r--mail/mail-callbacks.h1
-rw-r--r--mail/mail-display.c18
-rw-r--r--mail/mail-send-recv.c15
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);