aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-shell-sidebar.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@src.gnome.org>2009-01-25 11:28:18 +0800
committerMatthew Barnes <mbarnes@src.gnome.org>2009-01-25 11:28:18 +0800
commit32ffc3ca1ca80b2d843fbe28da7deab35fabcbf1 (patch)
tree36f52060c250aacf445013b1bf15541892098f3f /mail/e-mail-shell-sidebar.c
parentcbb3a71adc5551f4c600cfc6f53fc112f3022a78 (diff)
downloadgsoc2013-evolution-32ffc3ca1ca80b2d843fbe28da7deab35fabcbf1.tar
gsoc2013-evolution-32ffc3ca1ca80b2d843fbe28da7deab35fabcbf1.tar.gz
gsoc2013-evolution-32ffc3ca1ca80b2d843fbe28da7deab35fabcbf1.tar.bz2
gsoc2013-evolution-32ffc3ca1ca80b2d843fbe28da7deab35fabcbf1.tar.lz
gsoc2013-evolution-32ffc3ca1ca80b2d843fbe28da7deab35fabcbf1.tar.xz
gsoc2013-evolution-32ffc3ca1ca80b2d843fbe28da7deab35fabcbf1.tar.zst
gsoc2013-evolution-32ffc3ca1ca80b2d843fbe28da7deab35fabcbf1.zip
Make the sidebar icon follow the folder icon.
Fix more runtime warnings. svn path=/branches/kill-bonobo/; revision=37130
Diffstat (limited to 'mail/e-mail-shell-sidebar.c')
-rw-r--r--mail/e-mail-shell-sidebar.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/mail/e-mail-shell-sidebar.c b/mail/e-mail-shell-sidebar.c
index 242216d602..c448be9782 100644
--- a/mail/e-mail-shell-sidebar.c
+++ b/mail/e-mail-shell-sidebar.c
@@ -25,6 +25,7 @@
#include <camel/camel.h>
#include "em-utils.h"
+#include "em-folder-utils.h"
#include "e-mail-shell-module.h"
@@ -44,6 +45,42 @@ enum {
static gpointer parent_class;
static void
+mail_shell_sidebar_selection_changed_cb (EShellSidebar *shell_sidebar,
+ GtkTreeSelection *selection)
+{
+ EShellView *shell_view;
+ EShellViewClass *shell_view_class;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ const gchar *icon_name;
+ gchar *display_name = NULL;
+ gboolean is_folder = FALSE;
+ guint flags = 0;
+
+ shell_view = e_shell_sidebar_get_shell_view (shell_sidebar);
+ shell_view_class = E_SHELL_VIEW_GET_CLASS (shell_view);
+
+ if (gtk_tree_selection_get_selected (selection, &model, &iter))
+ gtk_tree_model_get (
+ model, &iter,
+ COL_STRING_DISPLAY_NAME, &display_name,
+ COL_BOOL_IS_FOLDER, &is_folder,
+ COL_UINT_FLAGS, &flags, -1);
+
+ if (is_folder)
+ icon_name = em_folder_utils_get_icon_name (flags);
+ else {
+ icon_name = shell_view_class->icon_name;
+ display_name = g_strdup (shell_view_class->label);
+ }
+
+ e_shell_sidebar_set_icon_name (shell_sidebar, icon_name);
+ e_shell_sidebar_set_primary_text (shell_sidebar, display_name);
+
+ g_free (display_name);
+}
+
+static void
mail_shell_sidebar_get_property (GObject *object,
guint property_id,
GValue *value,
@@ -94,6 +131,8 @@ mail_shell_sidebar_constructed (GObject *object)
EShellSidebar *shell_sidebar;
EShellModule *shell_module;
EShellView *shell_view;
+ GtkTreeSelection *selection;
+ GtkTreeView *tree_view;
GtkWidget *container;
GtkWidget *widget;
@@ -127,6 +166,14 @@ mail_shell_sidebar_constructed (GObject *object)
gtk_container_add (GTK_CONTAINER (container), widget);
priv->folder_tree = g_object_ref (widget);
gtk_widget_show (widget);
+
+ tree_view = GTK_TREE_VIEW (priv->folder_tree);
+ selection = gtk_tree_view_get_selection (tree_view);
+
+ g_signal_connect_swapped (
+ selection, "changed",
+ G_CALLBACK (mail_shell_sidebar_selection_changed_cb),
+ shell_sidebar);
}
static guint32