aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/ChangeLog10
-rw-r--r--shell/e-shell-folder-title-bar.c1
-rw-r--r--shell/e-shell.c8
-rw-r--r--shell/evolution-shell-client.c8
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");