diff options
-rw-r--r-- | shell/ChangeLog | 5 | ||||
-rw-r--r-- | shell/evolution-shell-component.c | 10 |
2 files changed, 11 insertions, 4 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog index a5acff39cf..d7f70b0d15 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,5 +1,10 @@ 2000-06-30 Ettore Perazzoli <ettore@helixcode.com> + * evolution-shell-component.c (impl_ShellComponent_set_owner): + Duplicate the object before storing it, you doofus. + +2000-06-30 Ettore Perazzoli <ettore@helixcode.com> + * evolution-shell-component.c (impl_ShellComponent_unset_owner): NULL the owner_client. diff --git a/shell/evolution-shell-component.c b/shell/evolution-shell-component.c index d110a424d7..4069086c85 100644 --- a/shell/evolution-shell-component.c +++ b/shell/evolution-shell-component.c @@ -127,6 +127,7 @@ impl_ShellComponent_set_owner (PortableServer_Servant servant, BonoboObject *bonobo_object; EvolutionShellComponent *shell_component; EvolutionShellComponentPrivate *priv; + Evolution_Shell shell_duplicate; bonobo_object = bonobo_object_from_servant (servant); shell_component = EVOLUTION_SHELL_COMPONENT (bonobo_object); @@ -138,11 +139,12 @@ impl_ShellComponent_set_owner (PortableServer_Servant servant, return; } - priv->owner_client = evolution_shell_client_new (shell); + shell_duplicate = CORBA_Object_duplicate (shell, ev); - g_print ("%s -- %p\n", __FUNCTION__, shell); - - gtk_signal_emit (GTK_OBJECT (shell_component), signals[OWNER_SET], priv->owner_client); + if (ev->_major == CORBA_NO_EXCEPTION) { + priv->owner_client = evolution_shell_client_new (shell_duplicate); + gtk_signal_emit (GTK_OBJECT (shell_component), signals[OWNER_SET], priv->owner_client); + } } static void |