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