diff options
-rw-r--r-- | addressbook/gui/widgets/e-addressbook-view.c | 6 | ||||
-rw-r--r-- | modules/addressbook/e-book-shell-view-private.c | 5 | ||||
-rw-r--r-- | modules/calendar/e-memo-shell-content.c | 5 | ||||
-rw-r--r-- | modules/calendar/e-task-shell-content.c | 5 |
4 files changed, 18 insertions, 3 deletions
diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index db9917f37f..ca767ecf92 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -577,9 +577,13 @@ addressbook_view_constructed (GObject *object) g_signal_connect_swapped ( view_instance, "display-view", G_CALLBACK (addressbook_view_display_view_cb), view); - gal_view_instance_load (view_instance); view->priv->view_instance = view_instance; + /* Do not call gal_view_instance_load() here. EBookShellContent + * must first obtain a reference to this EAddressbookView so that + * e_book_shell_content_get_current_view() returns the correct + * view in GalViewInstance::loaded signal handlers. */ + g_free (uri); } diff --git a/modules/addressbook/e-book-shell-view-private.c b/modules/addressbook/e-book-shell-view-private.c index 4482383331..746a11c4e7 100644 --- a/modules/addressbook/e-book-shell-view-private.c +++ b/modules/addressbook/e-book-shell-view-private.c @@ -303,6 +303,11 @@ book_shell_view_activate_selected_source (EBookShellView *book_shell_view, E_ADDRESSBOOK_VIEW (widget)); view_instance = e_addressbook_view_get_view_instance (view); + + /* This must come after e_book_shell_content_set_current_view() + * because book_shell_view_notify_view_id_cb() relies on it. */ + gal_view_instance_load (view_instance); + view_id = gal_view_instance_get_current_view_id (view_instance); e_shell_view_set_view_id (shell_view, view_id); g_free (view_id); diff --git a/modules/calendar/e-memo-shell-content.c b/modules/calendar/e-memo-shell-content.c index 663920044c..cc17964f48 100644 --- a/modules/calendar/e-memo-shell-content.c +++ b/modules/calendar/e-memo-shell-content.c @@ -546,9 +546,12 @@ memo_shell_content_constructed (GObject *object) view_instance, "display-view", G_CALLBACK (memo_shell_content_display_view_cb), object); - gal_view_instance_load (view_instance); priv->view_instance = view_instance; + /* Do this last so e_memo_shell_content_get_view_instance() returns + * the correct instance in GalViewInstance::loaded signal handlers. */ + gal_view_instance_load (view_instance); + /* Restore pane positions from the last session once * the shell view is fully initialized and visible. */ g_signal_connect ( diff --git a/modules/calendar/e-task-shell-content.c b/modules/calendar/e-task-shell-content.c index bb2017fa8a..6b3f23eeb0 100644 --- a/modules/calendar/e-task-shell-content.c +++ b/modules/calendar/e-task-shell-content.c @@ -541,9 +541,12 @@ task_shell_content_constructed (GObject *object) view_instance, "display-view", G_CALLBACK (task_shell_content_display_view_cb), object); - gal_view_instance_load (view_instance); priv->view_instance = view_instance; + /* Do this last so e_task_shell_content_get_view_instance() returns + * the correct instance in GalViewInstance::loaded signal handlers. */ + gal_view_instance_load (view_instance); + /* Restore pane positions from the last session once * the shell view is fully initialized and visible. */ g_signal_connect ( |