ui/winui/button.cpp

branch
newapi
changeset 196
320d85f3cd14
parent 192
bcacd00ea955
child 205
b1ac0dd1d38b
equal deleted inserted replaced
195:0f2e69873875 196:320d85f3cd14
66 UiWidget* widget = new UiWidget(elm); 66 UiWidget* widget = new UiWidget(elm);
67 ui_context_add_widget_destructor(current->ctx, widget); 67 ui_context_add_widget_destructor(current->ctx, widget);
68 68
69 // register callback 69 // register callback
70 if (args.onclick) { 70 if (args.onclick) {
71 widget->obj = obj; 71 ui_callback cbfunc = args.onclick;
72 widget->event_func = (ui_eventfunc)args.onclick; 72 void* cbdata = args.onclickdata;
73 widget->event_data = args.onclickdata; 73 button.Click([cbfunc, cbdata, obj](IInspectable const& sender, RoutedEventArgs) {
74 button.Click([widget](IInspectable const& sender, RoutedEventArgs) {
75 ui_callback cb = (ui_callback)widget->event_func;
76
77 UiEvent evt; 74 UiEvent evt;
78 evt.obj = (UiObject*)widget->obj; 75 evt.obj = obj;
79 evt.window = evt.obj->window; 76 evt.window = obj->window;
80 evt.document = evt.obj->ctx->document; 77 evt.document = obj->ctx->document;
81 evt.eventdata = nullptr; 78 evt.eventdata = nullptr;
82 evt.intval = 0; 79 evt.intval = 0;
83 cb(&evt, widget->event_data); 80 cbfunc(&evt, cbdata);
84 }); 81 });
85 } 82 }
86 83
87 // add button to current container 84 // add button to current container
88 UI_APPLY_LAYOUT1(current, args); 85 UI_APPLY_LAYOUT1(current, args);

mercurial