diff -r a137277f9173 -r 77b09bb52ca0 ui/gtk/toolbar.c --- a/ui/gtk/toolbar.c Sat Apr 05 15:53:41 2014 +0200 +++ b/ui/gtk/toolbar.c Sat Apr 05 18:41:30 2014 +0200 @@ -52,12 +52,25 @@ ucx_map_cstr_put(toolbar_items, name, item); } -void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *ud) { +void ui_toolitem_st(char *name, char *stockid, ui_callback f, void *userdata) { + ui_toolitem_stgr(name, stockid, f, userdata, -1); +} + +void ui_toolitem_stgr(char *name, char *stockid, ui_callback f, void *userdata, ...) { UiStToolItem *item = malloc(sizeof(UiStToolItem)); item->item.add_to = (ui_toolbar_add_f)add_toolitem_st_widget; item->stockid = stockid; item->callback = f; - item->userdata = ud; + item->userdata = userdata; + + // 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); ucx_map_cstr_put(toolbar_items, name, item); } @@ -114,6 +127,10 @@ } gtk_toolbar_insert(tb, button, -1); + + if(item->groups) { + uic_add_group_widget(obj->ctx, button, item->groups); + } } void add_toolitem_st_widget(GtkToolbar *tb, UiStToolItem *item, UiObject *obj) { @@ -136,4 +153,8 @@ } gtk_toolbar_insert(tb, button, -1); + + if(item->groups) { + uic_add_group_widget(obj->ctx, button, item->groups); + } }