commit cbcbd9f670977dc662cc57ffc16c9da0785d09e5
parent 69ad42ac63e99ea220f04043b6fc832f57654ff4
Author: Colin Leroy <colin@colino.net>
Date: Thu, 1 May 2014 11:07:02 +0200
Better fix: cancel cb also when moving, exec'ing, etc
Diffstat:
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/src/summaryview.c b/src/summaryview.c
@@ -1587,6 +1587,12 @@ gboolean summary_show(SummaryView *summaryview, FolderItem *item)
#undef CURRENTLY_DISPLAYED
+static void summary_cancel_mark_read_timeout(SummaryView *summaryview) {
+ if (summaryview->mark_as_read_timeout_tag != 0) {
+ g_source_remove(summaryview->mark_as_read_timeout_tag);
+ summaryview->mark_as_read_timeout_tag = 0;
+ }
+}
void summary_clear_list(SummaryView *summaryview)
{
@@ -1603,10 +1609,7 @@ void summary_clear_list(SummaryView *summaryview)
summaryview->folder_item = NULL;
}
- if (summaryview->mark_as_read_timeout_tag != 0) {
- g_source_remove(summaryview->mark_as_read_timeout_tag);
- summaryview->mark_as_read_timeout_tag = 0;
- }
+ summary_cancel_mark_read_timeout(summaryview);
summaryview->display_msg = FALSE;
@@ -2254,10 +2257,7 @@ void summary_select_node(SummaryView *summaryview, GtkCMCTreeNode *node,
if (!summaryview->folder_item)
return;
if (node) {
- if (summaryview->mark_as_read_timeout_tag != 0) {
- g_source_remove(summaryview->mark_as_read_timeout_tag);
- summaryview->mark_as_read_timeout_tag = 0;
- }
+ summary_cancel_mark_read_timeout(summaryview);
gtkut_ctree_expand_parent_all(ctree, node);
if (do_refresh) {
summary_lock(summaryview);
@@ -4927,6 +4927,7 @@ gboolean summary_execute(SummaryView *summaryview)
if (node == summaryview->displayed) {
messageview_clear(summaryview->messageview);
+ summary_cancel_mark_read_timeout(summaryview);
summaryview->displayed = NULL;
}
if (GTK_CMCTREE_ROW(node)->children != NULL) {
@@ -5027,6 +5028,7 @@ gboolean summary_expunge(SummaryView *summaryview)
if (node == summaryview->displayed) {
messageview_clear(summaryview->messageview);
+ summary_cancel_mark_read_timeout(summaryview);
summaryview->displayed = NULL;
}
if (GTK_CMCTREE_ROW(node)->children != NULL) {
@@ -5459,6 +5461,8 @@ static void summary_unthread_for_exec_func(GtkCMCTree *ctree, GtkCMCTreeNode *no
if (node == summaryview->displayed)
summaryview->displayed = NULL;
+ summary_cancel_mark_read_timeout(summaryview);
+
for (top_parent = node;
GTK_CMCTREE_ROW(top_parent)->parent != NULL;
top_parent = GTK_CMCTREE_ROW(top_parent)->parent)