aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog6
-rw-r--r--mail/message-list.c14
2 files changed, 13 insertions, 7 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 8577bb408a..928fba418b 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,5 +1,11 @@
2003-02-03 Jeffrey Stedfast <fejj@ximian.com>
+ * message-list.c (mail_regen_list): Get the thread_subject setting
+ here instead of in regen_list_regen since that function will be
+ called in another thread and we can't make corba calls in anything
+ but the main thread.
+ (regen_list_regen): Don't make CORBA calls here! (shame on me).
+
* mail-identify.c (mail_identify_mime_part): Just use
gnome_vfs_get_mime_type_from_name() so we can forget all the crap
I implemented before.
diff --git a/mail/message-list.c b/mail/message-list.c
index 17278893db..1d442c52f5 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -2577,6 +2577,7 @@ struct _regen_list_msg {
CamelFolderChangeInfo *changes;
gboolean dotree; /* we are building a tree */
gboolean hidedel; /* we want to/dont want to show deleted messages */
+ gboolean thread_subject;
CamelFolderThread *tree;
CamelFolder *folder;
@@ -2604,11 +2605,9 @@ regen_list_regen (struct _mail_msg *mm)
{
struct _regen_list_msg *m = (struct _regen_list_msg *)mm;
GPtrArray *uids, *uidnew, *showuids, *searchuids = NULL;
- gboolean thread_subject;
CamelMessageInfo *info;
- GConfClient *gconf;
int i;
-
+
/* if we have hidedeleted on, use a search to find it out, merge with existing search if set */
if (!camel_folder_has_search_capability(m->folder)) {
/* if we have no search capability, dont let search or hide deleted work */
@@ -2709,16 +2708,13 @@ regen_list_regen (struct _mail_msg *mm)
MESSAGE_LIST_UNLOCK(m->ml, hide_lock);
- gconf = gconf_client_get_default ();
- thread_subject = gconf_client_get_bool (gconf, "/apps/evolution/mail/display/thread_subject", NULL);
-
if (!camel_operation_cancel_check(mm->cancel)) {
/* update/build a new tree */
if (m->dotree) {
if (m->tree)
camel_folder_thread_messages_apply (m->tree, showuids);
else
- m->tree = camel_folder_thread_messages_new (m->folder, showuids, thread_subject);
+ m->tree = camel_folder_thread_messages_new (m->folder, showuids, m->thread_subject);
} else {
m->summary = g_ptr_array_new ();
for (i = 0; i < showuids->len; i++) {
@@ -2811,6 +2807,7 @@ static void
mail_regen_list (MessageList *ml, const char *search, const char *hideexpr, CamelFolderChangeInfo *changes)
{
struct _regen_list_msg *m;
+ GConfClient *gconf;
if (ml->folder == NULL)
return;
@@ -2828,6 +2825,8 @@ mail_regen_list (MessageList *ml, const char *search, const char *hideexpr, Came
}
}
+ gconf = gconf_client_get_default ();
+
#ifndef BROKEN_ETREE
/* this can sometimes crash,so ... */
@@ -2847,6 +2846,7 @@ mail_regen_list (MessageList *ml, const char *search, const char *hideexpr, Came
m->changes = changes;
m->dotree = ml->threaded;
m->hidedel = ml->hidedeleted;
+ m->thread_subject = gconf_client_get_bool (gconf, "/apps/evolution/mail/display/thread_subject", NULL);
g_object_ref(ml);
m->folder = ml->folder;
camel_object_ref(m->folder);