qulogic/libgnt

Improve the 'menu experience' a little bit.

2007-11-23, Sadrul Habib Chowdhury
9df6e14e18cf
Parents 19db9cbb33be
Children e218d47842e0
Improve the 'menu experience' a little bit.
  • +19 -0
    gntmenu.c
  • --- a/gntmenu.c Fri Nov 23 04:04:33 2007 +0000
    +++ b/gntmenu.c Fri Nov 23 11:05:43 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);
    +
    static void
    menu_hide_all(GntMenu *menu)
    {
    @@ -56,6 +58,20 @@
    }
    static void
    +show_submenu(GntMenu *menu)
    +{
    + GntMenuItem *item;
    +
    + if (menu->type != GNT_MENU_TOPLEVEL)
    + return;
    +
    + item = g_list_nth_data(menu->list, menu->selected);
    + if (!item || !item->submenu)
    + return;
    + menuitem_activate(menu, item);
    +}
    +
    +static void
    gnt_menu_draw(GntWidget *widget)
    {
    GntMenu *menu = GNT_MENU(widget);
    @@ -276,6 +292,8 @@
    gnt_widget_hide(widget);
    } else
    gnt_widget_hide(widget);
    + if (par && par->type == GNT_MENU_TOPLEVEL)
    + gnt_menu_key_pressed(GNT_WIDGET(par), text);
    return TRUE;
    }
    @@ -297,6 +315,7 @@
    GntMenu *sub = menu->submenu;
    if (sub)
    gnt_widget_hide(GNT_WIDGET(sub));
    + show_submenu(menu);
    gnt_widget_draw(widget);
    return TRUE;
    }