Mercurial > repos > blastem
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; |