aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author2 <NotZed@Ximian.com>2001-11-03 08:07:33 +0800
committerMichael Zucci <zucchi@src.gnome.org>2001-11-03 08:07:33 +0800
commite735e8fa8965d907fe91467482e0fb5d00364bc2 (patch)
treea769546f14ac3b4c1fce79c462c24b2f7c6d979c
parent8fcca3dc0b5e3355977230ce61dc172652e69032 (diff)
downloadgsoc2013-evolution-e735e8fa8965d907fe91467482e0fb5d00364bc2.tar
gsoc2013-evolution-e735e8fa8965d907fe91467482e0fb5d00364bc2.tar.gz
gsoc2013-evolution-e735e8fa8965d907fe91467482e0fb5d00364bc2.tar.bz2
gsoc2013-evolution-e735e8fa8965d907fe91467482e0fb5d00364bc2.tar.lz
gsoc2013-evolution-e735e8fa8965d907fe91467482e0fb5d00364bc2.tar.xz
gsoc2013-evolution-e735e8fa8965d907fe91467482e0fb5d00364bc2.tar.zst
gsoc2013-evolution-e735e8fa8965d907fe91467482e0fb5d00364bc2.zip
Disconnect from the message_list_built function so we dont do it every
2001-11-02 <NotZed@Ximian.com> * message-browser.c (message_browser_message_list_built): Disconnect from the message_list_built function so we dont do it every time the list is rebuilt. * mail-callbacks.c (composer_send_cb): Disable autosave when we're sending mail. (composer_sent_cb): Re-enable autosave. * folder-browser-ui.c (fbui_sensitize_timeout): Make sure we reset any data we're using on the folderbrowser before doing anything 'cause things could vanish while we're doing it, and also ref/unref the folderbrowser so it doesn't vanish while w'ere working. * folder-browser.c (folder_browser_set_ui_component): If we are changing the ui comp, remove any pending timeouts. For #13719. svn path=/trunk/; revision=14575
-rw-r--r--mail/ChangeLog19
-rw-r--r--mail/folder-browser-ui.c17
-rw-r--r--mail/folder-browser.c16
-rw-r--r--mail/mail-callbacks.c2
-rw-r--r--mail/message-browser.c4
5 files changed, 49 insertions, 9 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 19a5c4c9c2..5b502ecf33 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,22 @@
+2001-11-02 <NotZed@Ximian.com>
+
+ * message-browser.c (message_browser_message_list_built):
+ Disconnect from the message_list_built function so we dont do it
+ every time the list is rebuilt.
+
+ * mail-callbacks.c (composer_send_cb): Disable autosave when we're
+ sending mail.
+ (composer_sent_cb): Re-enable autosave.
+
+ * folder-browser-ui.c (fbui_sensitize_timeout): Make sure we reset
+ any data we're using on the folderbrowser before doing anything
+ 'cause things could vanish while we're doing it, and also
+ ref/unref the folderbrowser so it doesn't vanish while w'ere
+ working.
+
+ * folder-browser.c (folder_browser_set_ui_component): If we are
+ changing the ui comp, remove any pending timeouts. For #13719.
+
2001-11-01 Larry Ewing <lewing@ximian.com>
* folder-browser.c (folder_browser_copy): fix cut & paste from the
diff --git a/mail/folder-browser-ui.c b/mail/folder-browser-ui.c
index 5b137d95bc..4e673cb493 100644
--- a/mail/folder-browser-ui.c
+++ b/mail/folder-browser-ui.c
@@ -455,13 +455,20 @@ static gboolean
fbui_sensitize_timeout (gpointer data)
{
FolderBrowser *fb = FOLDER_BROWSER (data);
- GSList *iter;
+ GSList *iter, *list;
struct sensitize_data *sd;
int i;
+ list = fb->sensitize_changes;
+ fb->sensitize_changes = NULL;
+ iter = list;
+ fb->sensitize_timeout_id = 0;
+
+ gtk_object_ref((GtkObject *)fb);
+
/*bonobo_ui_component_freeze (uic, NULL);*/
- for (iter = fb->sensitize_changes; iter; iter = iter->next) {
+ for (; iter; iter = iter->next) {
sd = (struct sensitize_data *) iter->data;
for (i=0;sd->items[i];i++) {
if (fb->uicomp)
@@ -470,9 +477,9 @@ fbui_sensitize_timeout (gpointer data)
g_free(sd);
}
- g_slist_free (fb->sensitize_changes);
- fb->sensitize_changes = NULL;
- fb->sensitize_timeout_id = 0;
+ g_slist_free (list);
+ gtk_object_unref((GtkObject *)fb);
+
return FALSE;
}
diff --git a/mail/folder-browser.c b/mail/folder-browser.c
index 8ff6d97547..0a06090adf 100644
--- a/mail/folder-browser.c
+++ b/mail/folder-browser.c
@@ -69,7 +69,7 @@
#include <camel/camel-mime-message.h>
#include <camel/camel-stream-mem.h>
-#define d(x)
+#define d(x)
#define PARENT_TYPE (gtk_table_get_type ())
@@ -895,6 +895,16 @@ void
folder_browser_set_ui_component (FolderBrowser *fb, BonoboUIComponent *uicomp)
{
g_return_if_fail (IS_FOLDER_BROWSER (fb));
+
+ if (fb->sensitize_timeout_id) {
+ g_source_remove (fb->sensitize_timeout_id);
+ fb->sensitize_timeout_id = 0;
+ }
+
+ if (fb->sensitise_state) {
+ g_hash_table_destroy(fb->sensitise_state);
+ fb->sensitise_state = NULL;
+ }
if (fb->uicomp)
bonobo_object_unref (BONOBO_OBJECT (fb->uicomp));
@@ -1920,7 +1930,7 @@ done_message_selected (CamelFolder *folder, char *uid, CamelMimeMessage *msg, vo
static gboolean
do_message_selected (FolderBrowser *fb)
{
- d(printf ("selecting uid %s (delayed)\n", fb->new_uid ? fb->new_uid : "NONE"));
+ d(printf ("%p: selecting uid %s (delayed)\n", fb, fb->new_uid ? fb->new_uid : "NONE"));
fb->loading_id = 0;
@@ -1944,7 +1954,7 @@ do_message_selected (FolderBrowser *fb)
static void
on_message_selected (MessageList *ml, const char *uid, FolderBrowser *fb)
{
- d(printf ("selecting uid %s (direct)\n", uid ? uid : "NONE"));
+ d(printf ("%p: selecting uid %s (direct)\n", fb, uid ? uid : "NONE"));
if (fb->loading_id != 0)
gtk_timeout_remove (fb->loading_id);
diff --git a/mail/mail-callbacks.c b/mail/mail-callbacks.c
index cb4f217ad6..ae3fdaad75 100644
--- a/mail/mail-callbacks.c
+++ b/mail/mail-callbacks.c
@@ -424,6 +424,7 @@ composer_sent_cb (char *uri, CamelMimeMessage *message, gboolean sent, void *dat
}
gtk_widget_destroy (GTK_WIDGET (send->composer));
} else {
+ e_msg_composer_set_enable_autosave(send->composer, TRUE);
gtk_widget_show (GTK_WIDGET (send->composer));
gtk_object_unref (GTK_OBJECT (send->composer));
}
@@ -617,6 +618,7 @@ composer_send_cb (EMsgComposer *composer, gpointer data)
send->composer = composer;
gtk_object_ref (GTK_OBJECT (composer));
gtk_widget_hide (GTK_WIDGET (composer));
+ e_msg_composer_set_enable_autosave(composer, FALSE);
mail_send_mail (transport->url, message, composer_sent_cb, send);
}
diff --git a/mail/message-browser.c b/mail/message-browser.c
index d37d1eab18..c8f2b7ed85 100644
--- a/mail/message-browser.c
+++ b/mail/message-browser.c
@@ -134,7 +134,9 @@ static void
message_browser_message_list_built (MessageList *ml, MessageBrowser *mb)
{
const char *uid = gtk_object_get_data (GTK_OBJECT (mb), "uid");
-
+
+ gtk_signal_disconnect_by_func (GTK_OBJECT (ml), message_browser_message_list_built, mb);
+
message_list_select_uid (ml, uid);
}