--- a/gntmenu.c Sat Apr 26 19:55:55 2014 +0200
+++ b/gntmenu.c Sat Apr 26 20:39:33 2014 +0200
@@ -89,7 +89,11 @@
GntMenuItem *item = GNT_MENU_ITEM(iter->data);
if (!gnt_menuitem_is_visible(item))
- type = ' ' | gnt_color_pair(GNT_COLOR_HIGHLIGHT);
+ if (item->callback || item->submenu) + type |= gnt_color_pair(GNT_COLOR_HIGHLIGHT); + type |= gnt_color_pair(GNT_COLOR_DISABLED); item->priv.x = getcurx(widget->window) + widget->priv.x;
@@ -121,7 +125,7 @@
menu_tree_add(GntMenu *menu, GntMenuItem *item, GntMenuItem *parent)
- char trigger[4] = "\0 )\0";
+ char trigger[] = "\0 )\0"; g_return_if_fail(item != NULL);
@@ -132,9 +136,12 @@
gnt_tree_add_choice(GNT_TREE(menu), item,
gnt_tree_create_row(GNT_TREE(menu), item->text, trigger, " "), parent, NULL);
gnt_tree_set_choice(GNT_TREE(menu), item, gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item)));
gnt_tree_add_row_last(GNT_TREE(menu), item,
gnt_tree_create_row(GNT_TREE(menu), item->text, trigger, item->submenu ? ">" : " "), parent);
+ if (!item->callback && !item->submenu) + gnt_tree_set_row_color(GNT_TREE(menu), item, GNT_COLOR_DISABLED); if (0 && item->submenu) {
GntMenu *sub = GNT_MENU(item->submenu);
@@ -307,15 +314,25 @@
if (menu->type == GNT_MENU_TOPLEVEL) {
if (strcmp(text, GNT_KEY_LEFT) == 0) {
- if (menu->selected == 0)
- menu->selected = g_list_length(menu->list) - 1;
+ if (menu->selected == 0) + menu->selected = g_list_length(menu->list) - 1; + it = g_list_nth(menu->list, menu->selected); + item = it ? it->data : NULL; + } while (!gnt_menuitem_is_visible(item)); } else if (strcmp(text, GNT_KEY_RIGHT) == 0) {
- if (menu->selected >= g_list_length(menu->list))
+ if (menu->selected >= g_list_length(menu->list)) + it = g_list_nth(menu->list, menu->selected); + item = it ? it->data : NULL; + } while (!gnt_menuitem_is_visible(item)); } else if (strcmp(text, GNT_KEY_ENTER) == 0 ||
strcmp(text, GNT_KEY_DOWN) == 0) {
gnt_widget_activate(widget);