aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-notebook-view.c
diff options
context:
space:
mode:
authorSrinivasa Ragavan <sragavan@gnome.org>2010-07-13 15:31:11 +0800
committerMatthew Barnes <mbarnes@redhat.com>2010-07-26 09:29:59 +0800
commit75de89ef04f0bd69fe5d33919e281bdb8c30bd9e (patch)
treefe6acd687988f6972c362ee8991dce83b14c8a78 /mail/e-mail-notebook-view.c
parent9849889089a50d0e7a6efc37037956af83abc358 (diff)
downloadgsoc2013-evolution-75de89ef04f0bd69fe5d33919e281bdb8c30bd9e.tar
gsoc2013-evolution-75de89ef04f0bd69fe5d33919e281bdb8c30bd9e.tar.gz
gsoc2013-evolution-75de89ef04f0bd69fe5d33919e281bdb8c30bd9e.tar.bz2
gsoc2013-evolution-75de89ef04f0bd69fe5d33919e281bdb8c30bd9e.tar.lz
gsoc2013-evolution-75de89ef04f0bd69fe5d33919e281bdb8c30bd9e.tar.xz
gsoc2013-evolution-75de89ef04f0bd69fe5d33919e281bdb8c30bd9e.tar.zst
gsoc2013-evolution-75de89ef04f0bd69fe5d33919e281bdb8c30bd9e.zip
Make the update-actions work across tabs.
Diffstat (limited to 'mail/e-mail-notebook-view.c')
-rw-r--r--mail/e-mail-notebook-view.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/mail/e-mail-notebook-view.c b/mail/e-mail-notebook-view.c
index 16353cdb1d..5fa6c6844f 100644
--- a/mail/e-mail-notebook-view.c
+++ b/mail/e-mail-notebook-view.c
@@ -63,6 +63,16 @@ e_mail_notebook_view_finalize (GObject *object)
}
static void
+mnv_page_changed (GtkNotebook *book, GtkNotebookPage *page,
+ guint page_num, EMailNotebookView *view)
+{
+ EMailView *mview = gtk_notebook_get_nth_page (book, page_num);
+
+ view->priv->current_view = mview;
+ g_signal_emit_by_name (view, "changed");
+}
+
+static void
mail_notebook_view_constructed (GObject *object)
{
GtkWidget *widget, *container;
@@ -77,6 +87,8 @@ mail_notebook_view_constructed (GObject *object)
gtk_widget_show (widget);
gtk_box_pack_start (GTK_BOX(container), widget, TRUE, TRUE, 0);
+ g_signal_connect (widget, "switch-page", G_CALLBACK(mnv_page_changed), object);
+
priv->current_view = e_mail_paned_view_new (E_MAIL_VIEW(object)->content);
gtk_widget_show (priv->current_view);
gtk_notebook_append_page (priv->book, priv->current_view, gtk_label_new ("Please select a folder"));
@@ -222,6 +234,18 @@ emnv_get_page_num (EMailNotebookView *view,
}
static void
+reconnect_changed_event (EMailReader *child, EMailReader *parent)
+{
+ g_signal_emit_by_name (parent, "changed");
+}
+
+static void
+reconnect_folder_loaded_event (EMailReader *child, EMailReader *parent)
+{
+ g_signal_emit_by_name (parent, "folder-loaded");
+}
+
+static void
mail_notebook_view_set_folder (EMailReader *reader,
CamelFolder *folder,
const gchar *folder_uri)
@@ -244,11 +268,18 @@ mail_notebook_view_set_folder (EMailReader *reader,
int page;
new_view = e_mail_paned_view_new (E_MAIL_VIEW(reader)->content);
+ priv->current_view = (EMailView *)new_view;
gtk_widget_show (new_view);
page = gtk_notebook_append_page (priv->book, new_view, gtk_label_new (camel_folder_get_full_name(folder)));
e_mail_reader_set_folder (E_MAIL_READER(new_view), folder, folder_uri);
gtk_notebook_set_current_page (priv->book, page);
g_hash_table_insert (priv->views, g_strdup(folder_uri), new_view);
+ g_signal_connect ( E_MAIL_READER(new_view), "changed",
+ G_CALLBACK (reconnect_changed_event),
+ reader);
+ g_signal_connect ( E_MAIL_READER (new_view), "folder-loaded",
+ G_CALLBACK (reconnect_folder_loaded_event),
+ reader);
}
}