--- a/gntbox.c Sun Nov 25 14:16:54 2007 +0000
+++ b/gntbox.c Mon Nov 26 05:41:09 2007 +0000
@@ -851,8 +851,14 @@
void gnt_box_give_focus_to_child(GntBox *box, GntWidget *widget)
- GList *find = g_list_find(box->focus, widget);
- gpointer now = box->active;
+ while (GNT_WIDGET(box)->parent) + box = GNT_BOX(GNT_WIDGET(box)->parent); + find = g_list_find(box->focus, widget); if (now && now != box->active)
--- a/gntmenu.c Sun Nov 25 14:16:54 2007 +0000
+++ b/gntmenu.c Mon Nov 26 05:41:09 2007 +0000
@@ -47,6 +47,8 @@
static void (*org_size_request)(GntWidget *wid);
static gboolean (*org_key_pressed)(GntWidget *w, const char *t);
+static void menuitem_activate(GntMenu *menu, GntMenuItem *item); menu_hide_all(GntMenu *menu)
@@ -56,6 +58,20 @@
+show_submenu(GntMenu *menu) + if (menu->type != GNT_MENU_TOPLEVEL) + item = g_list_nth_data(menu->list, menu->selected); + if (!item || !item->submenu) + menuitem_activate(menu, item); gnt_menu_draw(GntWidget *widget)
GntMenu *menu = GNT_MENU(widget);
@@ -276,6 +292,8 @@
+ if (par && par->type == GNT_MENU_TOPLEVEL) + gnt_menu_key_pressed(GNT_WIDGET(par), text); @@ -297,6 +315,7 @@
GntMenu *sub = menu->submenu;
gnt_widget_hide(GNT_WIDGET(sub));