From 3600c982fe704e390c202b0d6bf22204e786c057 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Mon, 9 Dec 2019 17:45:45 +1100 Subject: [PATCH] Fix not being able to activate function key keybindings if a texture pack or URL warning overlay is open --- src/Menus.c | 32 +++++++++++++++----------------- src/Screens.c | 5 +++-- src/Screens.h | 1 + 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/Menus.c b/src/Menus.c index 711d1bc8a..d4eaeb292 100644 --- a/src/Menus.c +++ b/src/Menus.c @@ -452,8 +452,6 @@ void ListScreen_Show(void) { /*########################################################################################################################* *--------------------------------------------------------MenuScreen-------------------------------------------------------* *#########################################################################################################################*/ -static int MenuScreen_KeyDown(void* screen, int key) { return key < KEY_F1 || key > KEY_F35; } - static void MenuScreen_Render(void* screen, double delta) { Menu_RenderBounds(); Gfx_SetTexturing(true); @@ -555,11 +553,11 @@ static void PauseScreen_Free(void* screen) { } static const struct ScreenVTABLE PauseScreen_VTABLE = { - PauseScreen_Init, Screen_NullUpdate, PauseScreen_Free, - MenuScreen_Render, PauseScreen_BuildMesh, - MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText, - Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, - Screen_Layout, Screen_ContextLost, PauseScreen_ContextRecreated + PauseScreen_Init, Screen_NullUpdate, PauseScreen_Free, + MenuScreen_Render, PauseScreen_BuildMesh, + Screen_InputDown, Screen_TInput, Screen_TKeyPress, Screen_TText, + Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, + Screen_Layout, Screen_ContextLost, PauseScreen_ContextRecreated }; void PauseScreen_Show(void) { struct PauseScreen* s = &PauseScreen_Instance; @@ -682,7 +680,7 @@ static int OptionsGroupScreen_PointerMove(void* screen, int id, int x, int y) { static const struct ScreenVTABLE OptionsGroupScreen_VTABLE = { OptionsGroupScreen_Init, Screen_NullUpdate, OptionsGroupScreen_Free, MenuScreen_Render2, OptionsGroupScreen_BuildMesh, - MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText, + Screen_InputDown, Screen_TInput, Screen_TKeyPress, Screen_TText, Menu_PointerDown, Screen_TPointer, OptionsGroupScreen_PointerMove, Screen_TMouseScroll, Screen_Layout, OptionsGroupScreen_ContextLost, OptionsGroupScreen_ContextRecreated }; @@ -857,7 +855,7 @@ static int EditHotkeyScreen_KeyDown(void* screen, int key) { EditHotkeyScreen_UpdateModifiers(s); return true; } - return Elem_HandlesKeyDown(&s->input.base, key) || MenuScreen_KeyDown(s, key); + return Elem_HandlesKeyDown(&s->input.base, key) || Screen_InputDown(s, key); } static void EditHotkeyScreen_ContextLost(void* screen) { @@ -1013,7 +1011,7 @@ static void GenLevelScreen_Make(struct GenLevelScreen* s, int i, int y, int def) static int GenLevelScreen_KeyDown(void* screen, int key) { struct GenLevelScreen* s = (struct GenLevelScreen*)screen; if (s->selected && Elem_HandlesKeyDown(&s->selected->base, key)) return true; - return MenuScreen_KeyDown(s, key); + return Screen_InputDown(s, key); } static int GenLevelScreen_KeyPress(void* screen, char keyChar) { @@ -1178,7 +1176,7 @@ static void ClassicGenScreen_Init(void* screen) { static const struct ScreenVTABLE ClassicGenScreen_VTABLE = { ClassicGenScreen_Init, Screen_NullUpdate, Screen_NullFunc, MenuScreen_Render2, ClassicGenScreen_BuildMesh, - MenuScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText, + Screen_InputDown, Screen_TInput, Screen_TKeyPress, Screen_TText, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Screen_Layout, Screen_ContextLost, ClassicGenScreen_ContextRecreated }; @@ -1390,7 +1388,7 @@ static int SaveLevelScreen_KeyDown(void* screen, int key) { SaveLevelScreen_RemoveOverwrites(s); return true; } - return MenuScreen_KeyDown(s, key); + return Screen_InputDown(s, key); } static void SaveLevelScreen_ContextLost(void* screen) { @@ -1722,7 +1720,7 @@ static int KeyBindingsScreen_KeyDown(void* screen, int key) { KeyBind bind; int idx; - if (s->curI == -1) return MenuScreen_KeyDown(s, key); + if (s->curI == -1) return Screen_InputDown(s, key); bind = s->binds[s->curI]; if (key == KEY_ESCAPE) key = KeyBind_Defaults[bind]; KeyBind_Set(bind, key); @@ -2071,7 +2069,7 @@ static int MenuOptionsScreen_KeyDown(void* screen, int key) { MenuOptionsScreen_EnterInput(s); return true; } } - return MenuScreen_KeyDown(s, key); + return Screen_InputDown(s, key); } static int MenuOptionsScreen_PointerMove(void* screen, int id, int x, int y) { @@ -3182,7 +3180,7 @@ static void UrlWarningOverlay_Init(void* screen) { static const struct ScreenVTABLE UrlWarningOverlay_VTABLE = { UrlWarningOverlay_Init, Screen_NullUpdate, Screen_NullFunc, MenuScreen_Render2, UrlWarningOverlay_BuildMesh, - Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText, + Screen_InputDown, Screen_TInput, Screen_TKeyPress, Screen_TText, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Screen_Layout, Screen_ContextLost, UrlWarningOverlay_ContextRecreated }; @@ -3355,7 +3353,7 @@ static void TexPackOverlay_Init(void* screen) { static const struct ScreenVTABLE TexPackOverlay_VTABLE = { TexPackOverlay_Init, TexPackOverlay_Update, Screen_NullFunc, MenuScreen_Render2, TexPackOverlay_BuildMesh, - Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText, + Screen_InputDown, Screen_TInput, Screen_TKeyPress, Screen_TText, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Screen_Layout, TexPackOverlay_ContextLost, TexPackOverlay_ContextRecreated }; @@ -3438,7 +3436,7 @@ static void TouchMoreOverlay_Init(void* screen) { static const struct ScreenVTABLE TouchMoreOverlay_VTABLE = { TouchMoreOverlay_Init, MenuScreen_Render, Screen_NullFunc, - Screen_TInput, Screen_TInput, Screen_TKeyPress, Screen_TText, + Screen_InputDown, Screen_TInput, Screen_TKeyPress, Screen_TText, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll, Screen_Layout, Screen_ContextLost, TouchMoreOverlay_ContextRecreated }; diff --git a/src/Screens.c b/src/Screens.c index 625360539..fc7fe93b6 100644 --- a/src/Screens.c +++ b/src/Screens.c @@ -35,8 +35,10 @@ int Screen_TKeyPress(void* s, char keyChar) { return true; } int Screen_TText(void* s, const String* str) { return true; } int Screen_TMouseScroll(void* s, float delta) { return true; } int Screen_TPointer(void* s, int id, int x, int y) { return true; } + void Screen_NullFunc(void* screen) { } void Screen_NullUpdate(void* screen, double delta) { } +int Screen_InputDown(void* screen, int key) { return key < KEY_F1 || key > KEY_F35; } CC_NOINLINE static cc_bool IsOnlyHudActive(void) { struct Screen* s; @@ -1454,7 +1456,6 @@ static void DisconnectScreen_Render(void* screen, double delta) { } static void DisconnectScreen_Free(void* screen) { Game_SetFpsLimit(Game_FpsLimit); } -static int DisconnectScreen_KeyDown(void* s, int key) { return key < KEY_F1 || key > KEY_F35; } static int DisconnectScreen_PointerDown(void* screen, int id, int x, int y) { struct DisconnectScreen* s = (struct DisconnectScreen*)screen; @@ -1479,7 +1480,7 @@ static int DisconnectScreen_PointerMove(void* screen, int idx, int x, int y) { static const struct ScreenVTABLE DisconnectScreen_VTABLE = { DisconnectScreen_Init, Screen_NullUpdate, DisconnectScreen_Free, DisconnectScreen_Render, DisconnectScreen_BuildMesh, - DisconnectScreen_KeyDown, Screen_TInput, Screen_TKeyPress, Screen_TText, + Screen_InputDown, Screen_TInput, Screen_TKeyPress, Screen_TText, DisconnectScreen_PointerDown, Screen_TPointer, DisconnectScreen_PointerMove, Screen_TMouseScroll, Screen_Layout, DisconnectScreen_ContextLost, DisconnectScreen_ContextRecreated }; diff --git a/src/Screens.h b/src/Screens.h index f485b2526..11e689b3c 100644 --- a/src/Screens.h +++ b/src/Screens.h @@ -23,6 +23,7 @@ int Screen_TPointer(void* s, int id, int x, int y); void Screen_NullFunc(void* screen); void Screen_NullUpdate(void* screen, double delta); +int Screen_InputDown(void* screen, int key); /* Calls Elem_Render on each widget in the screen. */ void Screen_RenderWidgets(void* screen, double delta);