aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-shell-content.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@src.gnome.org>2009-01-24 12:45:19 +0800
committerMatthew Barnes <mbarnes@src.gnome.org>2009-01-24 12:45:19 +0800
commitcbb3a71adc5551f4c600cfc6f53fc112f3022a78 (patch)
tree74aee71ae289b726bb9c1e5097dbdc29aa22c610 /mail/e-mail-shell-content.c
parentbd9f473a896496b95b9896d30940f2ab27493432 (diff)
downloadgsoc2013-evolution-cbb3a71adc5551f4c600cfc6f53fc112f3022a78.tar
gsoc2013-evolution-cbb3a71adc5551f4c600cfc6f53fc112f3022a78.tar.gz
gsoc2013-evolution-cbb3a71adc5551f4c600cfc6f53fc112f3022a78.tar.bz2
gsoc2013-evolution-cbb3a71adc5551f4c600cfc6f53fc112f3022a78.tar.lz
gsoc2013-evolution-cbb3a71adc5551f4c600cfc6f53fc112f3022a78.tar.xz
gsoc2013-evolution-cbb3a71adc5551f4c600cfc6f53fc112f3022a78.tar.zst
gsoc2013-evolution-cbb3a71adc5551f4c600cfc6f53fc112f3022a78.zip
Get automatic message selection working.
Add a tooltip to the online button. svn path=/branches/kill-bonobo/; revision=37126
Diffstat (limited to 'mail/e-mail-shell-content.c')
-rw-r--r--mail/e-mail-shell-content.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/mail/e-mail-shell-content.c b/mail/e-mail-shell-content.c
index 68eafa1f6c..ece2e2ee3a 100644
--- a/mail/e-mail-shell-content.c
+++ b/mail/e-mail-shell-content.c
@@ -33,6 +33,7 @@
#include "em-search-context.h"
#include "em-utils.h"
#include "mail-config.h"
+#include "mail-ops.h"
#include "e-mail-reader.h"
#include "e-mail-shell-module.h"
@@ -60,8 +61,9 @@ struct _EMailShellContentPrivate {
guint message_list_built_id;
guint message_list_scrolled_id;
- guint preview_visible : 1;
- guint vertical_view : 1;
+ guint preview_visible : 1;
+ guint suppress_message_selection : 1;
+ guint vertical_view : 1;
};
enum {
@@ -485,6 +487,8 @@ mail_shell_content_set_folder (EMailReader *reader,
EMailShellContentPrivate *priv;
EMailReaderIface *default_iface;
MessageList *message_list;
+ gboolean different_folder;
+ gchar *meta_data;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
@@ -492,10 +496,34 @@ mail_shell_content_set_folder (EMailReader *reader,
message_list_freeze (message_list);
+ different_folder =
+ message_list->folder != NULL &&
+ folder != message_list->folder;
+
/* Chain up to interface's default set_folder() method. */
default_iface = g_type_default_interface_peek (E_TYPE_MAIL_READER);
default_iface->set_folder (reader, folder, folder_uri);
+ if (folder == NULL)
+ goto exit;
+
+ mail_refresh_folder (folder, NULL, NULL);
+
+ /* This function gets triggered several times at startup,
+ * so we don't want to reset the message suppression state
+ * unless we're actually switching to a different folder. */
+ if (different_folder)
+ priv->suppress_message_selection = FALSE;
+
+ if (!priv->suppress_message_selection)
+ meta_data = camel_object_meta_get (
+ folder, "evolution:selected_uid");
+ else
+ meta_data = NULL;
+
+ g_free (priv->selected_uid);
+ priv->selected_uid = meta_data;
+
/* This is a one-time-only callback. */
if (message_list->cursor_uid == NULL && priv->message_list_built_id == 0)
priv->message_list_built_id = g_signal_connect_swapped (
@@ -503,6 +531,7 @@ mail_shell_content_set_folder (EMailReader *reader,
G_CALLBACK (mail_shell_content_message_list_built_cb),
reader);
+exit:
message_list_thaw (message_list);
}