diff -r 330b415910bd -r 86d3a45dc928 ui/win32/menu.c --- a/ui/win32/menu.c Wed Dec 31 09:16:02 2025 +0100 +++ b/ui/win32/menu.c Wed Dec 31 10:06:15 2025 +0100 @@ -58,7 +58,6 @@ UiMenu *menu = (UiMenu*)item; HMENU hMenu = CreatePopupMenu(); AppendMenu(parent, MF_POPUP, (UINT_PTR)hMenu, menu->label); - int i = 0; UiMenuItemI *child = menu->items_begin; while (child) { @@ -67,9 +66,30 @@ } } +static void menu_item_clicked(UiObject *obj, UiMenuItem *item) { + UiEvent event; + event.obj = obj; + event.window = obj->window; + event.document = obj->ctx->document; + event.eventdata = NULL; + event.eventdatatype = 0; + event.intval = 0; + event.set = 0; + if (item->callback) { + item->callback(&event, item->userdata); + } +} + void ui_add_menu_item(HMENU parent, int pos, UiMenuItemI *item, UiObject *obj) { + uint64_t id = ++obj->ctx->command_id_counter; + UiMenuItem *i = (UiMenuItem*)item; - AppendMenu(parent, MF_STRING, 0, i->label); + AppendMenu(parent, MF_STRING, id, i->label); + + UiCommand cmd; + cmd.callback = (ui_command_func)menu_item_clicked; + cmd.userdata = i; + cxMapPut(obj->ctx->command_map, id, &cmd); } void ui_add_menu_checkitem(HMENU parent, int pos, UiMenuItemI *item, UiObject *obj) {