From 9178fed291ee57d90636be4f0ca69db80b61df4b Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Sat, 12 Aug 2000 23:07:19 +0000 Subject: Don't clear the tree here. If two "folder_changed"s arrive in close * message-list.c (cleanup_regenerate_messagelist): Don't clear the tree here. If two "folder_changed"s arrive in close succession, then one possible ordering of events is cleanup_regenerate_messagelist, cleanup_regenerate_messagelist, cleanup_thread_messages, cleanup_thread_messages. Which would result in the message list being filled in twice without being cleared in between. So don't clear it until the rebuilding function itself is called. (clear_tree): New function to empty out the ETreeModel in the message list. (build_tree): Change to simpler interface. Call clear_tree. (build_subtree): Does most of the work of the old build_tree (build_flat): Remove unused arg. Call clear_tree. * message-thread.c (cleanup_thread_messages): Update for build_tree interface change. svn path=/trunk/; revision=4787 --- mail/message-thread.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'mail/message-thread.c') diff --git a/mail/message-thread.c b/mail/message-thread.c index cb17a65c34..b703889670 100644 --- a/mail/message-thread.c +++ b/mail/message-thread.c @@ -509,13 +509,11 @@ typedef struct thread_messages_input_s { MessageList *ml; GPtrArray *uids; gboolean use_camel_uidfree; - void (*build) (MessageList *, ETreePath *, - struct _container *, int *); + void (*build) (MessageList *, struct _container *); } thread_messages_input_t; typedef struct thread_messages_data_s { struct _container *container; - int row; } thread_messages_data_t; static gchar *describe_thread_messages (gpointer in_data, gboolean gerund); @@ -562,7 +560,6 @@ static void do_thread_messages (gpointer in_data, gpointer op_data, CamelExcepti thread_messages_data_t *data = (thread_messages_data_t *) op_data; data->container = thread_messages (input->ml->folder, input->uids); - data->row = 0; } static void cleanup_thread_messages (gpointer in_data, gpointer op_data, CamelException *ex) @@ -570,8 +567,7 @@ static void cleanup_thread_messages (gpointer in_data, gpointer op_data, CamelEx thread_messages_input_t *input = (thread_messages_input_t *) in_data; thread_messages_data_t *data = (thread_messages_data_t *) op_data; - (input->build) (input->ml, input->ml->tree_root, - data->container, &(data->row)); + (input->build) (input->ml, data->container); thread_messages_free (data->container); if (input->use_camel_uidfree) { @@ -597,8 +593,8 @@ static const mail_operation_spec op_thread_messages = void mail_do_thread_messages (MessageList *ml, GPtrArray *uids, gboolean use_camel_uidfree, - void (*build) (MessageList *, ETreePath *, - struct _container *, int *)) + void (*build) (MessageList *, + struct _container *)) { thread_messages_input_t *input; -- cgit v1.2.3