diff options
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ChangeLog | 10 | ||||
-rw-r--r-- | shell/e-shell-folder-title-bar.c | 1 | ||||
-rw-r--r-- | shell/e-shell.c | 8 | ||||
-rw-r--r-- | shell/evolution-shell-client.c | 8 |
4 files changed, 21 insertions, 6 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog index e1d4bc95ac..87fa75b6f8 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,13 @@ +2003-01-09 Ettore Perazzoli <ettore@ximian.com> + + * evolution-shell-client.c (impl_dispose): Properly reset + activity_interface to NULL. + (evolution_shell_client_construct): Ref the shell object here. + + * e-shell.c (view_weak_notify): Ref the shell since it's being + passed to notify_no_views_left_idle_cb as the data. + (notify_no_views_left_idle_cb): Only unref the shell here. + 2003-01-08 Not Zed <NotZed@Ximian.com> * e-shell-settings-dialog.c (set_dialog_size): dont unref the diff --git a/shell/e-shell-folder-title-bar.c b/shell/e-shell-folder-title-bar.c index b79933b2d6..60f27c9fbc 100644 --- a/shell/e-shell-folder-title-bar.c +++ b/shell/e-shell-folder-title-bar.c @@ -379,6 +379,7 @@ title_button_toggled_cb (GtkToggleButton *title_button, EShellFolderTitleBar *folder_title_bar; folder_title_bar = E_SHELL_FOLDER_TITLE_BAR (data); + g_signal_emit (folder_title_bar, signals[TITLE_TOGGLED], 0, gtk_toggle_button_get_active (title_button)); } diff --git a/shell/e-shell.c b/shell/e-shell.c index e15902abc0..267addbfa8 100644 --- a/shell/e-shell.c +++ b/shell/e-shell.c @@ -979,8 +979,6 @@ notify_no_views_left_idle_cb (void *data) set_interactive (shell, FALSE); - bonobo_object_ref (BONOBO_OBJECT (shell)); - g_signal_emit (shell, signals [NO_VIEWS_LEFT], 0); bonobo_object_unref (BONOBO_OBJECT (shell)); @@ -1002,13 +1000,15 @@ view_weak_notify (void *data, /* If this is our last view, save settings now because in the callback for no_views_left shell->priv->views will be NULL and settings won't be saved because of that. */ - if (num_views - 1 == 0) + if (num_views == 1) e_shell_save_settings (shell); shell->priv->views = g_list_remove (shell->priv->views, where_the_object_was); - if (shell->priv->views == NULL) + if (shell->priv->views == NULL) { + bonobo_object_ref (BONOBO_OBJECT (shell)); g_idle_add (notify_no_views_left_idle_cb, shell); + } } static EShellView * diff --git a/shell/evolution-shell-client.c b/shell/evolution-shell-client.c index b0b6101279..e5cabc34e4 100644 --- a/shell/evolution-shell-client.c +++ b/shell/evolution-shell-client.c @@ -297,6 +297,7 @@ impl_dispose (GObject *object) "Error unreffing the ::Activity interface -- %s\n", BONOBO_EX_REPOID (&ev)); CORBA_Object_release (priv->activity_interface, &ev); + priv->activity_interface = CORBA_OBJECT_NIL; } if (priv->shortcuts_interface != CORBA_OBJECT_NIL) { @@ -383,6 +384,7 @@ evolution_shell_client_construct (EvolutionShellClient *shell_client, GNOME_Evolution_Shell corba_shell) { EvolutionShellClientPrivate *priv; + CORBA_Environment ev; g_return_if_fail (shell_client != NULL); g_return_if_fail (EVOLUTION_IS_SHELL_CLIENT (shell_client)); @@ -391,10 +393,12 @@ evolution_shell_client_construct (EvolutionShellClient *shell_client, priv = shell_client->priv; g_return_if_fail (priv->activity_interface == CORBA_OBJECT_NIL); - /* (Notice that we don't ref or duplicate, since this is what the old - BonoboObject did.) */ priv->corba_objref = corba_shell; + CORBA_exception_init (&ev); + Bonobo_Unknown_ref (priv->corba_objref, &ev); + CORBA_exception_free (&ev); + priv->activity_interface = query_shell_interface (shell_client, "IDL:GNOME/Evolution/Activity:1.0"); priv->shortcuts_interface = query_shell_interface (shell_client, "IDL:GNOME/Evolution/Shortcuts:1.0"); priv->storage_registry_interface = query_shell_interface (shell_client, "IDL:GNOME/Evolution/StorageRegistry:1.0"); |