Mercurial > pidgin
changeset 21625:e5606c720791
Improve the 'menu experience' a little bit.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Fri, 23 Nov 2007 11:05:43 +0000 |
parents | 512785bd7fcb |
children | 4c03275346a9 |
files | finch/libgnt/gntmenu.c |
diffstat | 1 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/finch/libgnt/gntmenu.c Fri Nov 23 04:06:23 2007 +0000 +++ b/finch/libgnt/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; }