| 141 action->callback(event, action->userdata); |
141 action->callback(event, action->userdata); |
| 142 } |
142 } |
| 143 } |
143 } |
| 144 } |
144 } |
| 145 |
145 |
| 146 void ui_call_action(UiContext *ctx, const char *action_name) { |
146 static int call_action(UiContext *ctx, const char *action_name, void *eventdata, UiEventType eventdatatype, int intval) { |
| 147 ui_call_action2(ctx, action_name, NULL, 0); |
|
| 148 } |
|
| 149 |
|
| 150 void ui_call_action2(UiContext *ctx, const char *action_name, void *eventdata, int intval) { |
|
| 151 UiAction *action = uic_resolve_action(ctx, action_name); |
147 UiAction *action = uic_resolve_action(ctx, action_name); |
| 152 if(action && action->callback) { |
148 if(action && action->callback) { |
| 153 UiEvent event; |
149 UiEvent event; |
| 154 memset(&event, 0, sizeof(UiEvent)); |
150 memset(&event, 0, sizeof(UiEvent)); |
| 155 event.obj = ctx->obj; |
151 event.obj = ctx->obj; |
| 156 event.window = event.obj ? event.obj->window : NULL; |
152 event.window = event.obj ? event.obj->window : NULL; |
| 157 event.document = ctx->self_doc ? ctx->self_doc : ctx->document; |
153 event.document = ctx->self_doc ? ctx->self_doc : ctx->document; |
| 158 if(eventdata) { |
154 if(eventdata) { |
| 159 event.eventdata = eventdata; |
155 event.eventdata = eventdata; |
| 160 event.eventdatatype = UI_EVENT_DATA_POINTER; |
156 event.eventdatatype = eventdatatype; |
| 161 } |
157 } |
| 162 event.intval = intval; |
158 event.intval = intval; |
| 163 action->callback(&event, action->userdata); |
159 action->callback(&event, action->userdata); |
| 164 } |
160 return 1; |
| |
161 } else { |
| |
162 return 0; |
| |
163 } |
| |
164 } |
| |
165 |
| |
166 int ui_call_action(UiContext *ctx, const char *action_name) { |
| |
167 return ui_call_action2(ctx, action_name, NULL, 0); |
| |
168 } |
| |
169 |
| |
170 int ui_call_action2(UiContext *ctx, const char *action_name, void *eventdata, int intval) { |
| |
171 return call_action(ctx, action_name, eventdata, UI_EVENT_DATA_POINTER, intval); |
| |
172 } |
| |
173 |
| |
174 int ui_call_action3(UiContext *ctx, const char *action_name, void *ptr, uint64_t type_id) { |
| |
175 UiTypedObj *obj = malloc(sizeof(UiTypedObj)); |
| |
176 obj->ptr = ptr; |
| |
177 obj->type = type_id; |
| |
178 int ret = call_action(ctx, action_name, obj, UI_EVENT_DATA_TYPED_OBJECT, 0); |
| |
179 free(obj); |
| |
180 return ret; |
| 165 } |
181 } |
| 166 |
182 |
| 167 void ui_broadcast_action(const char *action_name) { |
183 void ui_broadcast_action(const char *action_name) { |
| 168 ui_broadcast_action2(action_name, NULL, 0); |
184 ui_broadcast_action2(action_name, NULL, 0); |
| 169 } |
185 } |