| 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 } |