feat(menu): F-keys passen a GlobalInputs amb menú obert

This commit is contained in:
JailDesigner committed 2026-05-14 09:02:03 +02:00
1 parent 885af944c5
commit fd3da8cb99
2 files changed
+13 -6

No files matched your search

+5 -3
View File
@@ -446,9 +446,11 @@ void Director::processGamepadEvents() {
}
void Director::processMenuInput() {
// Intercepta input abans que l'escena vegi els events. Si el menú està
// obert, consumeix TOTS els KEY_DOWN perquè ni GlobalInputs (F1–F8,
// F11, F12) ni el jugador els veuen. F9 obre el menú quan està tancat.
// Intercepta input abans que l'escena vegi els events. Amb el menú
// obert, `handleEvent` consumeix tot KEY_DOWN excepte les F-keys
// (F1–F12), que són hotkeys d'UI omnipresents i passen avall a
// GlobalInputs. Quan el menú està tancat, la branca de baix detecta
// `menu_toggle` (F12 per defecte) i obre el menú.
// Erase invalida iteradors, per això actualitzem `it` a cada branca.
for (auto it = EventBuffer::events.begin(); it != EventBuffer::events.end();) {
if (ServiceMenu::get().isOpen() && ServiceMenu::get().handleEvent(*it)) {
+8 -3
View File
@@ -677,9 +677,14 @@ auto ServiceMenu::handleEvent(const SDL_Event& ev) -> bool {
default:
break;
}
// Mentre el menú està obert consumim TOTS els KEY_DOWN perquè les
// hotkeys globals (F1–F8, F11, F12) no s'activen per sota.
return true;
// Context d'entrada exclusiu: amb el menú obert, el teclat va al menú
// i les escenes no veuen res. Les F-keys (F1–F12) són hotkeys d'UI
// omnipresents (zoom, shader, screenshot, render info, menu_toggle…)
// i passen avall a GlobalInputs. Tota la resta queda absorbida —
// inclús tecles que el menú no fa servir — perquè una J en LogoScene
// no salti la secció mentre l'usuari està al menú.
const bool IS_FUNCTION_KEY = SC >= SDL_SCANCODE_F1 && SC <= SDL_SCANCODE_F12;
return !IS_FUNCTION_KEY;
}
// --- Builders de pàgines ---