ui/win32/menu.c

changeset 1035
86d3a45dc928
parent 954
07c1effb2a31
child 1036
24677835f298
equal deleted inserted replaced
1034:330b415910bd 1035:86d3a45dc928
56 56
57 void ui_add_menu(HMENU parent, int pos, UiMenuItemI *item, UiObject *obj) { 57 void ui_add_menu(HMENU parent, int pos, UiMenuItemI *item, UiObject *obj) {
58 UiMenu *menu = (UiMenu*)item; 58 UiMenu *menu = (UiMenu*)item;
59 HMENU hMenu = CreatePopupMenu(); 59 HMENU hMenu = CreatePopupMenu();
60 AppendMenu(parent, MF_POPUP, (UINT_PTR)hMenu, menu->label); 60 AppendMenu(parent, MF_POPUP, (UINT_PTR)hMenu, menu->label);
61
62 int i = 0; 61 int i = 0;
63 UiMenuItemI *child = menu->items_begin; 62 UiMenuItemI *child = menu->items_begin;
64 while (child) { 63 while (child) {
65 createMenuItem[child->type](hMenu, i++, child, obj); 64 createMenuItem[child->type](hMenu, i++, child, obj);
66 child = child->next; 65 child = child->next;
67 } 66 }
68 } 67 }
69 68
69 static void menu_item_clicked(UiObject *obj, UiMenuItem *item) {
70 UiEvent event;
71 event.obj = obj;
72 event.window = obj->window;
73 event.document = obj->ctx->document;
74 event.eventdata = NULL;
75 event.eventdatatype = 0;
76 event.intval = 0;
77 event.set = 0;
78 if (item->callback) {
79 item->callback(&event, item->userdata);
80 }
81 }
82
70 void ui_add_menu_item(HMENU parent, int pos, UiMenuItemI *item, UiObject *obj) { 83 void ui_add_menu_item(HMENU parent, int pos, UiMenuItemI *item, UiObject *obj) {
84 uint64_t id = ++obj->ctx->command_id_counter;
85
71 UiMenuItem *i = (UiMenuItem*)item; 86 UiMenuItem *i = (UiMenuItem*)item;
72 AppendMenu(parent, MF_STRING, 0, i->label); 87 AppendMenu(parent, MF_STRING, id, i->label);
88
89 UiCommand cmd;
90 cmd.callback = (ui_command_func)menu_item_clicked;
91 cmd.userdata = i;
92 cxMapPut(obj->ctx->command_map, id, &cmd);
73 } 93 }
74 94
75 void ui_add_menu_checkitem(HMENU parent, int pos, UiMenuItemI *item, UiObject *obj) { 95 void ui_add_menu_checkitem(HMENU parent, int pos, UiMenuItemI *item, UiObject *obj) {
76 96
77 } 97 }

mercurial