# HG changeset patch # User Olaf Wintermann # Date 1779624759 -7200 # Node ID 999911de398b0a2c273a1540669c7a481ca84350 # Parent db9c3838fd4d79c8ab9396bcea70fb5df4af811f fix gtk4 menu radiobutton enumeration diff -r db9c3838fd4d -r 999911de398b application/main.c --- a/application/main.c Sun May 24 08:53:45 2026 +0200 +++ b/application/main.c Sun May 24 14:12:39 2026 +0200 @@ -370,6 +370,8 @@ doc->link_label = ui_string_new(docctx, "link_label"); doc->link_uri = ui_string_new(docctx, "link_uri"); + ui_int_new(docctx, "menu_radio"); + //doc->text = ui_text_new(docctx, "text"); return doc; } @@ -624,7 +626,10 @@ } static void action_menu_radio(UiEvent *event, void *userdata) { - printf("option: %d\n", event->intval); + if(event->intval) { + int i = ui_var_get_int(event->obj->ctx, "menu_radio"); + printf("menu radio option: %d\n", i); + } } static void action_menu_toggle(UiEvent *event, void *userdata) { @@ -899,11 +904,11 @@ ui_menu_toggleitem(.label = "Toggle 1", .varname = "menu_toggle1", .onchange = action_menu_toggle); ui_menu_toggleitem(.label = "Toggle 2", .varname = "menu_toggle2", .onchange = action_menu_toggle); ui_menuseparator(); - ui_menu_radioitem(.label = "Option 1", .varname = "menu_radio"); - ui_menu_radioitem(.label = "Option 2", .varname = "menu_radio"); - ui_menu_radioitem(.label = "Option 3", .varname = "menu_radio"); - ui_menu_radioitem(.label = "Option 4", .varname = "menu_radio"); - ui_menu_radioitem(.label = "Option 5", .varname = "menu_radio"); + ui_menu_radioitem(.label = "Option 1", .varname = "menu_radio", .onchange = action_menu_radio); + ui_menu_radioitem(.label = "Option 2", .varname = "menu_radio", .onchange = action_menu_radio); + ui_menu_radioitem(.label = "Option 3", .varname = "menu_radio", .onchange = action_menu_radio); + ui_menu_radioitem(.label = "Option 4", .varname = "menu_radio", .onchange = action_menu_radio); + ui_menu_radioitem(.label = "Option 5", .varname = "menu_radio", .onchange = action_menu_radio); ui_menuseparator(); } diff -r db9c3838fd4d -r 999911de398b ui/gtk/menu.c --- a/ui/gtk/menu.c Sun May 24 08:53:45 2026 +0200 +++ b/ui/gtk/menu.c Sun May 24 14:12:39 2026 +0200 @@ -677,7 +677,7 @@ CxIterator iter = cxListIterator(group->callbacks); cx_foreach(UiCallbackData *, cb, iter) { - event.intval = intval == iter.index; + event.intval = intval-1 == iter.index; if(cb->callback) { cb->callback(&event, cb->userdata); } @@ -801,7 +801,7 @@ cxListAdd(group->callbacks, &cb); - cxmutstr action_name = cx_asprintf("win.%s::%d", i->varname, (int)item_index); + cxmutstr action_name = cx_asprintf("win.%s::%d", i->varname, (int)item_index+1); g_menu_append(parent, i->label, action_name.ptr); free(action_name.ptr); }