diff -r 2dda1ad6dc7a -r 012418e7dc90 ui/motif/menu.c --- a/ui/motif/menu.c Wed Apr 02 20:31:47 2014 +0200 +++ b/ui/motif/menu.c Thu Apr 03 11:12:22 2014 +0200 @@ -28,6 +28,7 @@ #include #include +#include #include "menu.h" #include "button.h" @@ -80,6 +81,14 @@ } void ui_menuitem(char *label, ui_callback f, void *userdata) { + ui_menuitem_gr(label, f, userdata, -1); +} + +void ui_menuitem_st(char *stockid, ui_callback f, void *userdata) { + ui_menuitem_stgr(stockid, f, userdata, -1); +} + +void ui_menuitem_gr(char *label, ui_callback f, void *userdata, ...) { if(!current) { return; } @@ -90,12 +99,22 @@ item->label = label; item->userdata = userdata; item->callback = f; + item->groups = NULL; + + // add groups + va_list ap; + va_start(ap, userdata); + int group; + while((group = va_arg(ap, int)) != -1) { + item->groups = ucx_list_append(item->groups, (void*)(intptr_t)group); + } + va_end(ap); UiMenu *cm = current->data; cm->items = ucx_list_append(cm->items, item); } -void ui_menuitem_st(char *stockid, ui_callback f, void *userdata) { +void ui_menuitem_stgr(char *stockid, ui_callback f, void *userdata, ...) { if(!current) { return; } @@ -106,6 +125,16 @@ item->stockid = stockid; item->userdata = userdata; item->callback = f; + item->groups = NULL; + + // add groups + va_list ap; + va_start(ap, userdata); + int group; + while((group = va_arg(ap, int)) != -1) { + item->groups = ucx_list_append(item->groups, (void*)(intptr_t)group); + } + va_end(ap); UiMenu *cm = current->data; cm->items = ucx_list_append(cm->items, item); @@ -244,6 +273,10 @@ event); } + if(mi->groups) { + uic_add_group_widget(obj->ctx, mitem, mi->groups); + } + return 1; } @@ -299,6 +332,10 @@ event); } + if(mi->groups) { + uic_add_group_widget(obj->ctx, mitem, mi->groups); + } + return 1; }