diff -up evolution-3.22.6/e-util/e-table-selection-model.c.indefinite-message-download evolution-3.22.6/e-util/e-table-selection-model.c
--- evolution-3.22.6/e-util/e-table-selection-model.c.indefinite-message-download 2014-03-24 10:25:23.000000000 +0100
+++ evolution-3.22.6/e-util/e-table-selection-model.c 2017-10-19 17:51:10.488332515 +0200
@@ -127,8 +127,8 @@ model_changed_idle (ETableSelectionModel
g_free (save_id);
}
free_hash (etsm);
- e_selection_model_cursor_changed (E_SELECTION_MODEL (etsm), cursor_row, cursor_col);
e_selection_model_selection_changed (E_SELECTION_MODEL (etsm));
+ e_selection_model_cursor_changed (E_SELECTION_MODEL (etsm), cursor_row, cursor_col);
}
etsm->model_changed_idle_id = 0;
return FALSE;
diff -up evolution-3.22.6/mail/message-list.c.indefinite-message-download evolution-3.22.6/mail/message-list.c
--- evolution-3.22.6/mail/message-list.c.indefinite-message-download 2017-01-13 16:06:56.000000000 +0100
+++ evolution-3.22.6/mail/message-list.c 2017-10-19 17:51:14.995332453 +0200
@@ -5056,7 +5056,7 @@ on_selection_changed_cmd (ETree *tree,
* is also used for other updating. If it is empty, it might just be a setup event
* from etree which we do need to ignore */
if ((newuid == NULL && message_list->cursor_uid == NULL && selected_count == 0) ||
- (message_list->last_sel_single && selected_count == 1 && newuid != NULL && message_list->cursor_uid != NULL && !strcmp (message_list->cursor_uid, newuid))) {
+ (message_list->last_sel_single && selected_count == 1 && message_list->cursor_uid != NULL && (newuid == NULL || !strcmp (message_list->cursor_uid, newuid)))) {
/* noop */
} else {
g_free (message_list->cursor_uid);