diff options
author | Matthew Loper <mloper@src.gnome.org> | 2000-04-08 05:42:56 +0800 |
---|---|---|
committer | Matthew Loper <mloper@src.gnome.org> | 2000-04-08 05:42:56 +0800 |
commit | 59606c28498271b7e0d3734f9b094bee3fc10cf8 (patch) | |
tree | 3a1394611fd756784d32449927ccede0d8af6d15 /mail | |
parent | c893285da76dca4a43ace7819964f09ce8802882 (diff) | |
download | gsoc2013-evolution-59606c28498271b7e0d3734f9b094bee3fc10cf8.tar gsoc2013-evolution-59606c28498271b7e0d3734f9b094bee3fc10cf8.tar.gz gsoc2013-evolution-59606c28498271b7e0d3734f9b094bee3fc10cf8.tar.bz2 gsoc2013-evolution-59606c28498271b7e0d3734f9b094bee3fc10cf8.tar.lz gsoc2013-evolution-59606c28498271b7e0d3734f9b094bee3fc10cf8.tar.xz gsoc2013-evolution-59606c28498271b7e0d3734f9b094bee3fc10cf8.tar.zst gsoc2013-evolution-59606c28498271b7e0d3734f9b094bee3fc10cf8.zip |
+ * folder-browser.c (folder_browser_destroy): Unref the shell
+ interface that we have a handle to.
+
+ * folder-browser-factory.c (control_destroy_cb): New function;
+ destroys a folder-browser when its control is destroyed.
+ (folder_browser_factory): Hook up to the above.
+
+ * e-shell-view.c (destroy_folder_view): New function;
+ Bonobo_Unknown_unref's the controls that have the views in them.
+ (esv_destroy): Calls the above for each folder_view in the
+ hashtable.
+ (get_view): unref the ServiceRepository interface of the control
+ when we're done with it.
+
svn path=/trunk/; revision=2333
Diffstat (limited to 'mail')
-rw-r--r-- | mail/ChangeLog | 9 | ||||
-rw-r--r-- | mail/folder-browser-factory.c | 11 | ||||
-rw-r--r-- | mail/folder-browser.c | 8 |
3 files changed, 27 insertions, 1 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 04252f2d55..0c8813036e 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,12 @@ +2000-04-07 Matt Loper <matt@helixcode.com> + + * folder-browser.c (folder_browser_destroy): Unref the shell + interface that we have a handle to. + + * folder-browser-factory.c (control_destroy_cb): New function; + destroys a folder-browser when its control is destroyed. + (folder_browser_factory): Hook up to the above. + 2000-04-07 Dan Winship <danw@helixcode.com> * mail-ops.c: new file, for toolbar/menu callbacks diff --git a/mail/folder-browser-factory.c b/mail/folder-browser-factory.c index 8e2b7ec8f7..a6075f7858 100644 --- a/mail/folder-browser-factory.c +++ b/mail/folder-browser-factory.c @@ -39,7 +39,7 @@ folder_browser_set_shell (EvolutionServiceRepository *sr, CORBA_exception_init (&ev); folder_browser = FOLDER_BROWSER (closure); - /* FIXME : ref the shell here */ + folder_browser->shell = shell; /* test the component->shell registration */ @@ -225,7 +225,14 @@ control_activate_cb (BonoboControl *control, control_deactivate (control, uih); } +static void +control_destroy_cb (BonoboControl *control, + gpointer user_data) +{ + GtkWidget *folder_browser = user_data; + gtk_object_destroy (GTK_OBJECT (folder_browser)); +} /* * Creates the Folder Browser, wraps it in a Bonobo Control, and @@ -264,6 +271,8 @@ folder_browser_factory (BonoboGenericFactory *factory, void *closure) gtk_signal_connect (GTK_OBJECT (control), "activate", control_activate_cb, NULL); + gtk_signal_connect (GTK_OBJECT (control), "destroy", + control_destroy_cb, folder_browser); bonobo_control_set_property_bag (control, FOLDER_BROWSER (folder_browser)->properties); diff --git a/mail/folder-browser.c b/mail/folder-browser.c index 5b75fd189d..f4f32ba4b7 100644 --- a/mail/folder-browser.c +++ b/mail/folder-browser.c @@ -33,7 +33,15 @@ static void folder_browser_destroy (GtkObject *object) { FolderBrowser *folder_browser = FOLDER_BROWSER (object); + + if (folder_browser->shell) { + CORBA_Environment ev; + CORBA_exception_init (&ev); + Bonobo_Unknown_unref (folder_browser->shell, &ev); + CORBA_exception_free (&ev); + } + if (folder_browser->uri) g_free (folder_browser->uri); |