From 75de89ef04f0bd69fe5d33919e281bdb8c30bd9e Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Tue, 13 Jul 2010 13:01:11 +0530 Subject: Make the update-actions work across tabs. --- mail/e-mail-notebook-view.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'mail/e-mail-notebook-view.c') 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 @@ -62,6 +62,16 @@ e_mail_notebook_view_finalize (GObject *object) G_OBJECT_CLASS (parent_class)->finalize (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) { @@ -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")); @@ -221,6 +233,18 @@ emnv_get_page_num (EMailNotebookView *view, g_warn_if_reached (); } +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, @@ -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); } } -- cgit v1.2.3