Explicitly removing bonobo controls



Hi,

I'm currently writing an application that makes use of bonobo controls. I'm
using bonobo_widget_new_control_async() and related functions to load controls
in my application. Eventually I need to destroy explicitly the widget that
displays the control. As what I get from loading the control is a BonoboWidget,
which in turn is a GtkWidget, I thought that simply using gtk_widget_destroy()
would destroy the widget containing it and properly release the control:

	widget = bonobo_widget_new_control_async (...);

	/*
	 * Later...
	 */

	gtk_widget_destroy (widget);

However, I noticed that after the call to gtk_widget_destroy() the control
process is still running on the background, which makes me think that I forgot
to release some kind of "reference" to it. The only things I do with the bonobo
widget is getting the control frame and the popup UI component (which I release
properly before trying to destroy the widget):

	widget = bonobo_widget_new_control_async (...);

	/*
	 * Do the following when the async callback gets called...
	 */

	frame = bonobo_widget_get_control_frame (widget, ...);
	uic = bonobo_control_frame_get_popup_component (frame, ...);

	/*
	 * Later...
	 */

	bonobo_object_unref (uic);
	gtk_widget_destroy (widget);

I imagine I must be missing something, but I don't know what and I couldn't find
any documentation or examples on it. One of the things I've deeply looked at was
the gnome-panel sources (especially the part related to loading/unloading
applets). I've seen that it explicitly releases the CORBA object using
CORBA_Object_release().  However it doesn't use
bonobo_widget_new_control_async(), instead it uses
bonobo_widget_new_control_from_objref(), so I'm still not sure about that to do.

Could anyone help me with this?

Thanks in advance!
Adriano
-- 
Adriano Winter Bess
ICQ: 21569917
Irc: nyquide




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]