From 31b5261fdbe2c98e7f4f71e908e5d9b58609de94 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 4 Jul 2013 11:04:51 -0400 Subject: EShellView: Add a "view-instance" property. EShellView now holds a reference to the active GalViewInstance. Where applicable, the EShellView subclass is responsible for keeping this up to date when the sidebar selection changes. Holding a reference allows EShellView to implement common actions like "Save Current View" directly instead pushing it on to subclasses. New functions: e_shell_view_get_view_instance e_shell_view_set_view_instance --- mail/e-mail-paned-view.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'mail/e-mail-paned-view.c') diff --git a/mail/e-mail-paned-view.c b/mail/e-mail-paned-view.c index 41c98f0e23..e0c63992c8 100644 --- a/mail/e-mail-paned-view.c +++ b/mail/e-mail-paned-view.c @@ -246,12 +246,17 @@ mail_paned_view_restore_state_cb (EShellWindow *shell_window, } static void -mail_paned_display_view_cb (EMailView *view, - GalView *gal_view) +mail_paned_display_view_cb (GalViewInstance *view_instance, + GalView *gal_view, + EMailView *view) { EMailReader *reader; + EShellView *shell_view; GtkWidget *message_list; + shell_view = e_mail_view_get_shell_view (view); + e_shell_view_set_view_instance (shell_view, view_instance); + reader = E_MAIL_READER (view); message_list = e_mail_reader_get_message_list (reader); @@ -868,7 +873,7 @@ mail_paned_view_update_view_instance (EMailView *view) shell_view, view_id); } - priv->view_instance = view_instance; + priv->view_instance = g_object_ref (view_instance); orientable = GTK_ORIENTABLE (view); orientation = gtk_orientable_get_orientation (orientable); @@ -961,12 +966,16 @@ mail_paned_view_update_view_instance (EMailView *view) g_free (state_filename); } - g_signal_connect_swapped ( + g_signal_connect ( view_instance, "display-view", G_CALLBACK (mail_paned_display_view_cb), view); mail_paned_display_view_cb ( - view, gal_view_instance_get_current_view (view_instance)); + view_instance, + gal_view_instance_get_current_view (view_instance), + view); + + g_object_unref (view_instance); g_clear_object (&folder); } -- cgit v1.2.3