Re: gtkplug commit
- From: Dietmar Maurer <dm vlsivie tuwien ac at>
- To: gnome-components-list gnome org, otaylor redhat com, gtk-devel-list gtk org
- Subject: Re: gtkplug commit
- Date: Sat, 20 Nov 1999 17:28:07 +0100
I´ve observed the following problem with gtk_plug/sockets:
void
gtk_plug_construct (GtkPlug *plug, guint32 socket_id)
{
plug->socket_window = gdk_window_lookup (socket_id);
plug->same_app = TRUE;
if (plug->socket_window == NULL)
{
plug->socket_window = gdk_window_foreign_new (socket_id);
plug->same_app = FALSE;
}
}
if gdk_window_lookup return something != NULL we use the existing window
(without increasing the reference count!). But gtk_plug_unrealize
always unrefs the window wich causes the window to be destroyed.
This is why bobobo doesn´t work.
A quick fix would be to "gdk_window_ref" the window:
gtk_plug_construct (GtkPlug *plug, guint32 socket_id)
{
plug->socket_window = gdk_window_lookup (socket_id);
plug->same_app = TRUE;
if (plug->socket_window == NULL)
{
plug->socket_window = gdk_window_foreign_new (socket_id);
plug->same_app = FALSE;
}
else gdk_window_ref (plug->socket_window); /* reference the window
*/
}
I´m sure this change will not break any code.
Owen Taylor wrote:
> (I have at least one reservation about it the patch... there
> are other ways that a plug/socket doesn't work in the same
> application, so this may just be papering over deeper
> problems.)
in the same application? The problem occurs also when plug and socket
are in different applications (see bonobo). I think the delete event
gets lost?
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]