comparison render_sdl.c @ 2695:84771c6e31c5

Allow keybinds to still fire for debug windows with no Nuklear UI
author Michael Pavone <pavone@retrodev.com>
date Thu, 19 Jun 2025 20:34:00 -0700
parents 46dba737b931
children d1a79e4ba26a
comparison
equal deleted inserted replaced
2694:a6a27d4aa8ab 2695:84771c6e31c5
956 int render_ui_to_pixels_y(int ui) 956 int render_ui_to_pixels_y(int ui)
957 { 957 {
958 return ui * ui_scale_y + 0.5f; 958 return ui * ui_scale_y + 0.5f;
959 } 959 }
960 960
961 static uint8_t has_event_handler(SDL_Window *win)
962 {
963 for (uint8_t i = 0; i < num_extras; i++)
964 {
965 if (extras[i].win == win) {
966 return extras[i].on_event != NULL;
967 }
968 }
969 return 0;
970 }
971
961 static int32_t handle_event(SDL_Event *event) 972 static int32_t handle_event(SDL_Event *event)
962 { 973 {
963 SDL_Window *event_win = NULL; 974 SDL_Window *event_win = NULL;
964 switch (event->type) { 975 switch (event->type) {
965 case SDL_KEYDOWN: 976 case SDL_KEYDOWN:
966 event_win = SDL_GetWindowFromID(event->key.windowID); 977 event_win = SDL_GetWindowFromID(event->key.windowID);
967 if (event_win == main_window) { 978 if (event_win == main_window || !has_event_handler(event_win)) {
968 handle_keydown(event->key.keysym.sym, scancode_map[event->key.keysym.scancode]); 979 handle_keydown(event->key.keysym.sym, scancode_map[event->key.keysym.scancode]);
969 } 980 }
970 break; 981 break;
971 case SDL_KEYUP: 982 case SDL_KEYUP:
972 event_win = SDL_GetWindowFromID(event->key.windowID); 983 event_win = SDL_GetWindowFromID(event->key.windowID);
973 if (event_win == main_window) { 984 if (event_win == main_window || !has_event_handler(event_win)) {
974 handle_keyup(event->key.keysym.sym, scancode_map[event->key.keysym.scancode]); 985 handle_keyup(event->key.keysym.sym, scancode_map[event->key.keysym.scancode]);
975 } 986 }
976 break; 987 break;
977 case SDL_JOYBUTTONDOWN: 988 case SDL_JOYBUTTONDOWN:
978 event_win = main_window; 989 event_win = main_window;