diff --git a/e-util/e-table-item.c b/e-util/e-table-item.c
index 5ff9b48..6c5eae1 100644
--- a/e-util/e-table-item.c
+++ b/e-util/e-table-item.c
@@ -4102,3 +4102,19 @@ e_table_item_cursor_scrolled (ETableItem *eti)
 
 	eti_check_cursor_bounds (eti);
 }
+
+void
+e_table_item_cancel_scroll_to_cursor (ETableItem *eti)
+{
+	ETableItemPrivate *priv;
+
+	g_return_if_fail (E_IS_TABLE_ITEM (eti));
+
+	priv = E_TABLE_ITEM_GET_PRIVATE (eti);
+
+	if (priv->show_cursor_delay_source) {
+		g_source_destroy (priv->show_cursor_delay_source);
+		g_source_unref (priv->show_cursor_delay_source);
+		priv->show_cursor_delay_source = NULL;
+	}
+}
diff --git a/e-util/e-table-item.h b/e-util/e-table-item.h
index 5fc9346..2ed1f9e 100644
--- a/e-util/e-table-item.h
+++ b/e-util/e-table-item.h
@@ -258,6 +258,9 @@ gboolean	e_table_item_is_editing		(ETableItem *eti);
 
 void		e_table_item_cursor_scrolled	(ETableItem *eti);
 
+void		e_table_item_cancel_scroll_to_cursor
+						(ETableItem *eti);
+
 void		e_table_item_freeze		(ETableItem *eti);
 void		e_table_item_thaw		(ETableItem *eti);
 
diff --git a/e-util/e-tree.c b/e-util/e-tree.c
index a525513..8ff1bb3 100644
--- a/e-util/e-tree.c
+++ b/e-util/e-tree.c
@@ -810,6 +810,8 @@ scroll_to_cursor (ETree *tree)
 				&row, &col, &x, &y, &w, &h);
 	}
 
+	e_table_item_cancel_scroll_to_cursor (E_TABLE_ITEM (tree->priv->item));
+
 	scrollable = GTK_SCROLLABLE (tree->priv->table_canvas);
 	adjustment = gtk_scrollable_get_vadjustment (scrollable);
 
