Skip to content

Commit 02361e0

Browse files
committed
Fix wrapper missing all-events call
* Issue (webui-dev/python-webui#12)
1 parent c9801ac commit 02361e0

File tree

1 file changed

+56
-25
lines changed

1 file changed

+56
-25
lines changed

src/webui.c

Lines changed: 56 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2208,46 +2208,77 @@ static void _webui_interface_bind_handler(webui_event_t* e) {
22082208
return;
22092209
_webui_window_t * win = _webui_core.wins[e->window];
22102210

2211-
// Generate WebUI internal id
2212-
char* webui_internal_id = _webui_generate_internal_id(win, e->element);
2213-
size_t cb_index = _webui_get_cb_index(webui_internal_id);
2211+
// Check for all events-bind functions
2212+
if (win->has_events) {
22142213

2215-
if (cb_index > 0 && _webui_core.cb_interface[cb_index] != NULL) {
2214+
char* events_id = _webui_generate_internal_id(win, "");
2215+
size_t events_cb_index = _webui_get_cb_index(events_id);
2216+
_webui_free_mem((void * ) events_id);
22162217

2217-
#ifdef WEBUI_LOG
2218-
printf(
2219-
"[Core]\t\t_webui_interface_bind_handler() -> User callback @ 0x%p\n",
2220-
_webui_core.cb_interface[cb_index]
2221-
);
2222-
printf("[Core]\t\t_webui_interface_bind_handler() -> e->event_type [%zu]\n", e->event_type);
2223-
printf("[Core]\t\t_webui_interface_bind_handler() -> e->element [%s]\n", e->element);
2224-
printf("[Core]\t\t_webui_interface_bind_handler() -> e->event_number %zu\n", e->event_number);
2225-
printf("[Core]\t\t_webui_interface_bind_handler() -> e->bind_id %zu\n", e->bind_id);
2226-
#endif
2218+
if (events_cb_index > 0 && _webui_core.cb_interface[events_cb_index] != NULL) {
22272219

2228-
// Call cb
2229-
#ifdef WEBUI_LOG
2230-
printf("[Core]\t\t_webui_interface_bind_handler() -> Calling user "
2231-
"callback...\n[Call]\n");
2232-
#endif
2233-
_webui_core.cb_interface[cb_index](e->window, e->event_type, e->element, e->event_number, e->bind_id);
2220+
// Call user all-events cb
2221+
#ifdef WEBUI_LOG
2222+
printf(
2223+
"[Core]\t\t_webui_interface_bind_handler() -> User all-events callback @ 0x%p\n",
2224+
_webui_core.cb_interface[events_cb_index]
2225+
);
2226+
printf("[Core]\t\t_webui_interface_bind_handler() -> User all-events e->event_type [%zu]\n", e->event_type);
2227+
printf("[Core]\t\t_webui_interface_bind_handler() -> User all-events e->element [%s]\n", e->element);
2228+
printf("[Core]\t\t_webui_interface_bind_handler() -> User all-events e->event_number %zu\n", e->event_number);
2229+
printf("[Core]\t\t_webui_interface_bind_handler() -> User all-events e->bind_id %zu\n", e->bind_id);
2230+
#endif
2231+
2232+
// Call all-events cb
2233+
#ifdef WEBUI_LOG
2234+
printf("[Core]\t\t_webui_interface_bind_handler() -> Calling user "
2235+
"all-events callback...\n[Call]\n");
2236+
#endif
2237+
_webui_core.cb_interface[events_cb_index](e->window, e->event_type, e->element, e->event_number, e->bind_id);
2238+
}
22342239
}
22352240

2236-
// Free
2237-
_webui_free_mem((void * ) webui_internal_id);
2241+
// Check for the regular bind functions
2242+
if (!_webui_mtx_is_exit_now(WEBUI_MUTEX_NONE) && !_webui_is_empty(e->element)) {
22382243

2239-
#ifdef WEBUI_LOG
2244+
// Generate WebUI internal id
2245+
char* webui_internal_id = _webui_generate_internal_id(win, e->element);
2246+
size_t cb_index = _webui_get_cb_index(webui_internal_id);
2247+
2248+
if (cb_index > 0 && _webui_core.cb_interface[cb_index] != NULL) {
2249+
2250+
#ifdef WEBUI_LOG
2251+
printf(
2252+
"[Core]\t\t_webui_interface_bind_handler() -> User callback @ 0x%p\n",
2253+
_webui_core.cb_interface[cb_index]
2254+
);
2255+
printf("[Core]\t\t_webui_interface_bind_handler() -> e->event_type [%zu]\n", e->event_type);
2256+
printf("[Core]\t\t_webui_interface_bind_handler() -> e->element [%s]\n", e->element);
2257+
printf("[Core]\t\t_webui_interface_bind_handler() -> e->event_number %zu\n", e->event_number);
2258+
printf("[Core]\t\t_webui_interface_bind_handler() -> e->bind_id %zu\n", e->bind_id);
2259+
#endif
2260+
2261+
// Call cb
2262+
#ifdef WEBUI_LOG
2263+
printf("[Core]\t\t_webui_interface_bind_handler() -> Calling user "
2264+
"callback...\n[Call]\n");
2265+
#endif
2266+
_webui_core.cb_interface[cb_index](e->window, e->event_type, e->element, e->event_number, e->bind_id);
2267+
}
2268+
2269+
// Free
2270+
_webui_free_mem((void * ) webui_internal_id);
2271+
}
22402272

2273+
#ifdef WEBUI_LOG
22412274
// Print cb response
22422275
char* response = NULL;
2243-
22442276
// Get event inf
22452277
webui_event_inf_t* event_inf = win->events[e->event_number];
22462278
if (event_inf != NULL) {
22472279
if (event_inf->response != NULL)
22482280
response = event_inf->response;
22492281
}
2250-
22512282
printf(
22522283
"[Core]\t\t_webui_interface_bind_handler() -> user-callback response [%s]\n",
22532284
response

0 commit comments

Comments
 (0)