aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2011-05-12 15:18:34 +0800
committerRodrigo Moya <rodrigo@gnome-db.org>2011-06-30 00:42:12 +0800
commit0c2cfce79f79f6fbbe30130de9d55b930169ed02 (patch)
tree6cc0855e7968dcb9fa61c5bc6dabdc6ec2357113 /mail
parent6215f7990598eed1a7212ae6d08c61442c622fb8 (diff)
downloadgsoc2013-evolution-0c2cfce79f79f6fbbe30130de9d55b930169ed02.tar.gz
gsoc2013-evolution-0c2cfce79f79f6fbbe30130de9d55b930169ed02.tar.zst
gsoc2013-evolution-0c2cfce79f79f6fbbe30130de9d55b930169ed02.zip
Bug #645476 - Avoid scroll to cursor on folder change in message list
Diffstat (limited to 'mail')
-rw-r--r--mail/message-list.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/mail/message-list.c b/mail/message-list.c
index 811f5e95e4..592e8e1370 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -215,7 +215,7 @@ static gchar *filter_size (gint size);
/* note: @changes is owned/freed by the caller */
/*static void mail_do_regenerate_messagelist (MessageList *list, const gchar *search, const gchar *hideexpr, CamelFolderChangeInfo *changes);*/
-static void mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, CamelFolderChangeInfo *changes);
+static void mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, CamelFolderChangeInfo *changes, gboolean scroll_to_cursor);
static void mail_regen_cancel (MessageList *ml);
static void clear_info (gchar *key, ETreePath *node, MessageList *ml);
@@ -2422,7 +2422,7 @@ ml_tree_sorting_changed (ETreeTableAdapter *adapter, MessageList *ml)
ml->thread_tree = NULL;
}
- mail_regen_list (ml, ml->search, NULL, NULL);
+ mail_regen_list (ml, ml->search, NULL, NULL, TRUE);
return TRUE;
}
@@ -3741,7 +3741,7 @@ folder_changed (CamelFolder *folder,
}
/* XXX This apparently eats the ChangeFolderChangeInfo. */
- mail_regen_list (ml, ml->search, NULL, altered_changes);
+ mail_regen_list (ml, ml->search, NULL, altered_changes, FALSE);
}
/**
@@ -3862,7 +3862,7 @@ message_list_set_folder (MessageList *message_list,
!(folder->folder_flags & CAMEL_FOLDER_IS_TRASH);
if (message_list->frozen == 0)
- mail_regen_list (message_list, message_list->search, NULL, NULL);
+ mail_regen_list (message_list, message_list->search, NULL, NULL, TRUE);
}
}
@@ -4137,7 +4137,7 @@ message_list_thaw (MessageList *ml)
ml->frozen--;
if (ml->frozen == 0) {
- mail_regen_list (ml, ml->frozen_search?ml->frozen_search:ml->search, NULL, NULL);
+ mail_regen_list (ml, ml->frozen_search ? ml->frozen_search : ml->search, NULL, NULL, TRUE);
g_free (ml->frozen_search);
ml->frozen_search = NULL;
}
@@ -4151,7 +4151,7 @@ message_list_set_threaded_expand_all (MessageList *ml)
ml->expand_all = 1;
if (ml->frozen == 0)
- mail_regen_list (ml, ml->search, NULL, NULL);
+ mail_regen_list (ml, ml->search, NULL, NULL, TRUE);
}
}
@@ -4162,7 +4162,7 @@ message_list_set_threaded_collapse_all (MessageList *ml)
ml->collapse_all = 1;
if (ml->frozen == 0)
- mail_regen_list (ml, ml->search, NULL, NULL);
+ mail_regen_list (ml, ml->search, NULL, NULL, TRUE);
}
}
@@ -4173,7 +4173,7 @@ message_list_set_threaded (MessageList *ml, gboolean threaded)
ml->threaded = threaded;
if (ml->frozen == 0)
- mail_regen_list (ml, ml->search, NULL, NULL);
+ mail_regen_list (ml, ml->search, NULL, NULL, TRUE);
}
}
@@ -4184,7 +4184,7 @@ message_list_set_hidedeleted (MessageList *ml, gboolean hidedeleted)
ml->hidedeleted = hidedeleted;
if (ml->frozen == 0)
- mail_regen_list (ml, ml->search, NULL, NULL);
+ mail_regen_list (ml, ml->search, NULL, NULL, TRUE);
}
}
@@ -4261,7 +4261,7 @@ message_list_set_search (MessageList *ml, const gchar *search)
#endif
if (ml->frozen == 0)
- mail_regen_list (ml, search, NULL, NULL);
+ mail_regen_list (ml, search, NULL, NULL, TRUE);
else {
g_free (ml->frozen_search);
ml->frozen_search = g_strdup (search);
@@ -4460,6 +4460,7 @@ struct _regen_list_msg {
gboolean hidedel; /* we want to/dont want to show deleted messages */
gboolean hidejunk; /* we want to/dont want to show junk messages */
gboolean thread_subject;
+ gboolean scroll_to_cursor; /* whether ensure scrolling to the cursor after rebuild */
CamelFolderThread *tree;
CamelFolder *folder;
@@ -4641,7 +4642,8 @@ regen_list_done (struct _regen_list_msg *m)
tree = E_TREE (m->ml);
- e_tree_show_cursor_after_reflow (tree);
+ if (m->scroll_to_cursor)
+ e_tree_show_cursor_after_reflow (tree);
g_signal_handlers_block_by_func (e_tree_get_table_adapter (tree), ml_tree_sorting_changed, m->ml);
@@ -4835,7 +4837,7 @@ mail_regen_cancel (MessageList *ml)
}
static void
-mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, CamelFolderChangeInfo *changes)
+mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, CamelFolderChangeInfo *changes, gboolean scroll_to_cursor)
{
struct _regen_list_msg *m;
GConfClient *client;
@@ -4882,6 +4884,7 @@ mail_regen_list (MessageList *ml, const gchar *search, const gchar *hideexpr, Ca
m->hidedel = ml->hidedeleted;
m->hidejunk = ml->hidejunk;
m->thread_subject = thread_subject;
+ m->scroll_to_cursor = scroll_to_cursor;
m->folder = g_object_ref (ml->folder);
m->last_row = -1;
m->expand_state = NULL;