Mercurial > pidgin.yaz
diff finch/libgnt/gntmenu.c @ 21256:e8b0f224483f
Add gnt_menuitem_activate, and 'activate' signal for GntMenuItem.
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Sat, 20 Oct 2007 05:52:52 +0000 |
parents | 9187d331aebe |
children | 084c5d5472ad |
line wrap: on
line diff
--- a/finch/libgnt/gntmenu.c Sat Oct 20 05:50:48 2007 +0000 +++ b/finch/libgnt/gntmenu.c Sat Oct 20 05:52:52 2007 +0000 @@ -181,7 +181,15 @@ static void menuitem_activate(GntMenu *menu, GntMenuItem *item) { - if (item) { + if (!item) + return; + + if (gnt_menuitem_activate(item)) { + while (menu) { + gnt_widget_hide(GNT_WIDGET(menu)); + menu = menu->parentmenu; + } + } else { if (item->submenu) { GntMenu *sub = GNT_MENU(item->submenu); menu->submenu = sub; @@ -195,12 +203,6 @@ gnt_widget_set_position(GNT_WIDGET(sub), item->priv.x, item->priv.y); GNT_WIDGET_UNSET_FLAGS(GNT_WIDGET(sub), GNT_WIDGET_INVISIBLE); gnt_widget_draw(GNT_WIDGET(sub)); - } else if (item->callback) { - item->callback(item, item->callbackdata); - while (menu) { - gnt_widget_hide(GNT_WIDGET(menu)); - menu = menu->parentmenu; - } } } } @@ -326,8 +328,7 @@ GntMenu *menu = GNT_MENU(tree); gboolean check = gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item)); gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), !check); - if (item->callback) - item->callback(item, item->callbackdata); + gnt_menuitem_activate(item); while (menu) { gnt_widget_hide(GNT_WIDGET(menu)); menu = menu->parentmenu;