[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: libegg (egg-dock) and gtksocket/gtkplug
- From: Biswapesh Chattopadhyay <biswapesh_chatterjee tcscal co in>
- To: gtk-app-devel-lisT gnome org
- Cc: Gustavo Giráldez <gustavo giraldez gmx net>
- Subject: Re: libegg (egg-dock) and gtksocket/gtkplug
- Date: 05 May 2003 10:10:19 +0530
Hi
The docking stuff was written by Gustavo, so I'm CC-ing him.
This is just a guess, but:
1) Have you tried ref()ing the widgets that are getting destroyed
explicitly ?
2) Are you using the latest code from libegg, which has seen some memory
management and other fixes in the past week or two ?
Rgds,
Biswa.
> Hi,
>
> I'm using the docking widget framework from libegg and most (if not all)
> of the docked widgets need to be embedded from other processes.
> Everything works fine with the libegg stuff when using both non-embedded
> and embedded widgets until I actually interact with the docked items and
> move them around. Then the gtkplug attached to the embedded widgets
> gets destroyed. This happens both when the embedded widget is pulled
> out and floated as well as when it's moved around the docking area.
>
> >From what I understand, there's some kind of re-parenting going on when
> the gtksocket widget gets moved around, but that's the extent of my
> understanding here !
>
> I'd be grateful if anyone who's used any of the docking libegg stuff
> with embedded widgets could help me out or advise me of a better way of
> doing this kind of thing (other docking frameworks which work better
> with embedded widgets, maybe from bonobo ?)
>
>
> Thanks,
>
> Mac.
>
>
> Some test code from plug process:
>
> plug = gtk_plug_new(0);
> ...
> (widgets added to plug)
> ...
> g_print("Plug ID = %d\n", gtk_plug_get_id(GTK_PLUG(plug)));
>
> (printed on command-line for now)
>
>
> Test code from socket process:
>
> ...
> table = gtk_vbox_new(FALSE, 5);
> gtk_container_add(GTK_CONTAINER(win), table);
> gtk_container_set_border_width(GTK_CONTAINER(table), 10);
>
> dock = egg_dock_new();
> gtk_box_pack_start(GTK_BOX(table), dock, TRUE, TRUE, 0);
>
> ...
> (items added to dock)
> ...
>
> display_socket_item = egg_dock_item_new("display_socket_item",
> "Display Socket Item", EGG_DOCK_ITEM_BEH_NORMAL);
> display_socket = gtk_socket_new();
> gtk_container_add(GTK_CONTAINER(display_socket_item),
> display_socket);
> g_signal_connect(display_socket, "plug_added",
> G_CALLBACK(plug_added), display_socket);
> g_signal_connect(display_socket, "plug_removed",
> G_CALLBACK(plug_removed), display_socket);
>
> egg_dock_add_item(EGG_DOCK(dock),
> EGG_DOCK_ITEM(display_socket_item),
> EGG_DOCK_BOTTOM);
> gtk_widget_show_all(display_socket_item);
> ...
>
> I put the XID from the plug on the command line and in the "realize"
> callback for the main window, I do:
>
> gtk_socket_add_id(GTK_SOCKET(display_socket), xid);
>
> I check the plug_window member of the gtksocket struct in the callbacks
> (plug_added, plug_removed) so I know when the plug gets destroyed.
>
>
> _______________________________________________
> gtk-app-devel-list mailing list
> gtk-app-devel-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
>
>
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]