diff -r 5eb765a7a793 -r 0cdb8089a29f ui/wpf/menu.c --- a/ui/wpf/menu.c Sun Jan 25 15:01:04 2015 +0100 +++ b/ui/wpf/menu.c Tue Jan 27 09:59:32 2015 +0100 @@ -37,13 +37,36 @@ } void ui_submenu(char *label) { - + UIsubmenu(label); } void ui_submenu_end() { - + UIsubmenu_end(); } void ui_menuitem(char *label, ui_callback f, void *userdata) { - UImenuitem(label, f, userdata); + ui_callback cb = NULL; + void *e = NULL; + if (f) { + UiEventData *event = malloc(sizeof(UiEventData)); + event->obj = NULL; + event->user_data = userdata; + event->callback = f; + event->value = 0; + cb = (ui_callback)ui_menu_callback; + e = event; + } + + UImenuitem(label, cb, e); } + + +void ui_menu_callback(UiObject *obj, UiEventData *e) { + UiEvent event; + event.obj = obj; + event.window = obj->window; + event.intval = 0; + event.eventdata = NULL; + event.document = obj->ctx->document; + e->callback(&event, e->user_data); +}