aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/e-mail-reader.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c
index 9dc6ed3001..b63800dcf1 100644
--- a/mail/e-mail-reader.c
+++ b/mail/e-mail-reader.c
@@ -2672,9 +2672,9 @@ mail_reader_load_status_changed_cb (EMailReader *reader,
e_mail_display_get_part_list (display) &&
e_mail_view_get_preview_visible (E_MAIL_VIEW (reader))) {
if (priv->folder_was_just_selected)
- priv->folder_was_just_selected = FALSE;
+ priv->folder_was_just_selected = FALSE;
else
- schedule_timeout_mark_seen (reader);
+ schedule_timeout_mark_seen (reader);
}
}
@@ -2990,6 +2990,22 @@ mail_reader_emit_folder_loaded (EMailReader *reader)
g_signal_emit (reader, signals[FOLDER_LOADED], 0);
}
+static void
+mail_reader_message_list_built_cb (MessageList *message_list,
+ EMailReader *reader)
+{
+ EMailReaderPrivate *priv;
+
+ priv = E_MAIL_READER_GET_PRIVATE (reader);
+ mail_reader_emit_folder_loaded (reader);
+
+ /* No cursor_uid means that there will not be emitted any
+ "cursor-changed" and "message-selected" signal, thus
+ unset the "just selected folder" flag */
+ if (!message_list->cursor_uid)
+ priv->folder_was_just_selected = FALSE;
+}
+
static EAlertSink *
mail_reader_get_alert_sink (EMailReader *reader)
{
@@ -4018,9 +4034,9 @@ connect_signals:
message_list, "right-click",
G_CALLBACK (discard_timeout_mark_seen_cb), reader);
- g_signal_connect_swapped (
+ g_signal_connect_after (
message_list, "message-list-built",
- G_CALLBACK (mail_reader_emit_folder_loaded), reader);
+ G_CALLBACK (mail_reader_message_list_built_cb), reader);
g_signal_connect_swapped (
message_list, "double-click",