Currently, apps made with glade/libglade do not have the positions of
their dock items saved. If you drag the menubar to a certain place in a
non-glade app and then quit and restart, the menubar is in the same
place. But if you do the same with a glade app, the menubar returns to
the default location.
This is because glade treats dock items as children of the dock, which i
think is a mistake. This leads to libglade manually creating new dock
items and adding them to the dock. Instead, libglade should be calling
gnome_app_add_docked, which will add the dock items using the dock
layout widget. In order to call gnome_app_add_docked, the dock items
need to be treated as children of the app, rather than children of the
dock. This seems okay to me, since you can only have one dock in an app
anyway.
I was looking at fixing this, but it needs changes in Glade also, which
i am not familiar with. I suppose this would also break a lot of
existing code, but i don't see any other way to do this. Feel free to
point out an obviously simpler solution and i'll kick myself in the
head.
On a related note, the dock_new function in glade-gnome.c in libglade is
not needed, GnomeApps create their own dock, which libglade uses in
app_build_children. To test this, i removed the dock_new function and
set the appropriate field in the widget_data struct to NULL. It works
just fine.
Here is a patch which moves the work that was happening in dock_new to a
new function dock_set_attributes, which is called by app_build_children.
--
Eric Gillespie, Jr. <*> [EMAIL PROTECTED]
"Let us be thankful we have commerce. Buy more. Buy more now.
Buy. And be happy."
--OMM (THX 1138)
dock-set-attributes.diff.gz
PGP signature