From 89d666e54338b9f8e8c6574aef45060f2371d8d5 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 9 Mar 2010 15:07:28 -0500 Subject: Bug 610023 - Does not restore "Current View" on startup Adds a GalViewInstance::loaded signal so EShellView gets notified when the initial view is loaded. --- shell/e-shell-view.c | 4 ++++ widgets/menus/gal-view-instance.c | 11 +++++++++++ widgets/menus/gal-view-instance.h | 1 + 3 files changed, 16 insertions(+) diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c index 0be1dc193e..9a8ec9c267 100644 --- a/shell/e-shell-view.c +++ b/shell/e-shell-view.c @@ -1594,5 +1594,9 @@ e_shell_view_new_view_instance (EShellView *shell_view, view_instance, "changed", G_CALLBACK (shell_view_update_view_id), shell_view); + g_signal_connect_swapped ( + view_instance, "loaded", + G_CALLBACK (shell_view_update_view_id), shell_view); + return view_instance; } diff --git a/widgets/menus/gal-view-instance.c b/widgets/menus/gal-view-instance.c index 7b903107fe..05b8709573 100644 --- a/widgets/menus/gal-view-instance.c +++ b/widgets/menus/gal-view-instance.c @@ -51,6 +51,7 @@ G_DEFINE_TYPE (GalViewInstance, gal_view_instance, G_TYPE_OBJECT) enum { DISPLAY_VIEW, CHANGED, + LOADED, LAST_SIGNAL }; @@ -196,6 +197,15 @@ gal_view_instance_class_init (GalViewInstanceClass *klass) g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); + gal_view_instance_signals [LOADED] = + g_signal_new ("loaded", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (GalViewInstanceClass, loaded), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + klass->display_view = NULL; klass->changed = NULL; } @@ -436,6 +446,7 @@ gal_view_instance_load (GalViewInstance *instance) if (!instance->loaded) { load_current_view (instance); instance->loaded = TRUE; + g_signal_emit (instance, gal_view_instance_signals[LOADED], 0); } } diff --git a/widgets/menus/gal-view-instance.h b/widgets/menus/gal-view-instance.h index 0b0fd42945..2ca4e86de1 100644 --- a/widgets/menus/gal-view-instance.h +++ b/widgets/menus/gal-view-instance.h @@ -66,6 +66,7 @@ typedef struct { void (*display_view) (GalViewInstance *instance, GalView *view); void (*changed) (GalViewInstance *instance); + void (*loaded) (GalViewInstance *instance); } GalViewInstanceClass; /* Standard functions */ -- cgit v1.2.3