Fix not being able to activate function key keybindings if a texture pack or URL warning overlay is open

This commit is contained in:
UnknownShadow200 2019-12-09 17:45:45 +11:00
parent b67a9f0a0f
commit 3600c982fe
3 changed files with 19 additions and 19 deletions

View File

@ -452,8 +452,6 @@ void ListScreen_Show(void) {
/*########################################################################################################################* /*########################################################################################################################*
*--------------------------------------------------------MenuScreen-------------------------------------------------------* *--------------------------------------------------------MenuScreen-------------------------------------------------------*
*#########################################################################################################################*/ *#########################################################################################################################*/
static int MenuScreen_KeyDown(void* screen, int key) { return key < KEY_F1 || key > KEY_F35; }
static void MenuScreen_Render(void* screen, double delta) { static void MenuScreen_Render(void* screen, double delta) {
Menu_RenderBounds(); Menu_RenderBounds();
Gfx_SetTexturing(true); Gfx_SetTexturing(true);
@ -557,7 +555,7 @@ static void PauseScreen_Free(void* screen) {
static const struct ScreenVTABLE PauseScreen_VTABLE = { static const struct ScreenVTABLE PauseScreen_VTABLE = {
PauseScreen_Init, Screen_NullUpdate, PauseScreen_Free, PauseScreen_Init, Screen_NullUpdate, PauseScreen_Free,
MenuScreen_Render, PauseScreen_BuildMesh, MenuScreen_Render, PauseScreen_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, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Screen_Layout, Screen_ContextLost, PauseScreen_ContextRecreated Screen_Layout, Screen_ContextLost, PauseScreen_ContextRecreated
}; };
@ -682,7 +680,7 @@ static int OptionsGroupScreen_PointerMove(void* screen, int id, int x, int y) {
static const struct ScreenVTABLE OptionsGroupScreen_VTABLE = { static const struct ScreenVTABLE OptionsGroupScreen_VTABLE = {
OptionsGroupScreen_Init, Screen_NullUpdate, OptionsGroupScreen_Free, OptionsGroupScreen_Init, Screen_NullUpdate, OptionsGroupScreen_Free,
MenuScreen_Render2, OptionsGroupScreen_BuildMesh, 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, Menu_PointerDown, Screen_TPointer, OptionsGroupScreen_PointerMove, Screen_TMouseScroll,
Screen_Layout, OptionsGroupScreen_ContextLost, OptionsGroupScreen_ContextRecreated Screen_Layout, OptionsGroupScreen_ContextLost, OptionsGroupScreen_ContextRecreated
}; };
@ -857,7 +855,7 @@ static int EditHotkeyScreen_KeyDown(void* screen, int key) {
EditHotkeyScreen_UpdateModifiers(s); EditHotkeyScreen_UpdateModifiers(s);
return true; 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) { 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) { static int GenLevelScreen_KeyDown(void* screen, int key) {
struct GenLevelScreen* s = (struct GenLevelScreen*)screen; struct GenLevelScreen* s = (struct GenLevelScreen*)screen;
if (s->selected && Elem_HandlesKeyDown(&s->selected->base, key)) return true; 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) { static int GenLevelScreen_KeyPress(void* screen, char keyChar) {
@ -1178,7 +1176,7 @@ static void ClassicGenScreen_Init(void* screen) {
static const struct ScreenVTABLE ClassicGenScreen_VTABLE = { static const struct ScreenVTABLE ClassicGenScreen_VTABLE = {
ClassicGenScreen_Init, Screen_NullUpdate, Screen_NullFunc, ClassicGenScreen_Init, Screen_NullUpdate, Screen_NullFunc,
MenuScreen_Render2, ClassicGenScreen_BuildMesh, 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, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Screen_Layout, Screen_ContextLost, ClassicGenScreen_ContextRecreated Screen_Layout, Screen_ContextLost, ClassicGenScreen_ContextRecreated
}; };
@ -1390,7 +1388,7 @@ static int SaveLevelScreen_KeyDown(void* screen, int key) {
SaveLevelScreen_RemoveOverwrites(s); SaveLevelScreen_RemoveOverwrites(s);
return true; return true;
} }
return MenuScreen_KeyDown(s, key); return Screen_InputDown(s, key);
} }
static void SaveLevelScreen_ContextLost(void* screen) { static void SaveLevelScreen_ContextLost(void* screen) {
@ -1722,7 +1720,7 @@ static int KeyBindingsScreen_KeyDown(void* screen, int key) {
KeyBind bind; KeyBind bind;
int idx; 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]; bind = s->binds[s->curI];
if (key == KEY_ESCAPE) key = KeyBind_Defaults[bind]; if (key == KEY_ESCAPE) key = KeyBind_Defaults[bind];
KeyBind_Set(bind, key); KeyBind_Set(bind, key);
@ -2071,7 +2069,7 @@ static int MenuOptionsScreen_KeyDown(void* screen, int key) {
MenuOptionsScreen_EnterInput(s); return true; 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) { 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 = { static const struct ScreenVTABLE UrlWarningOverlay_VTABLE = {
UrlWarningOverlay_Init, Screen_NullUpdate, Screen_NullFunc, UrlWarningOverlay_Init, Screen_NullUpdate, Screen_NullFunc,
MenuScreen_Render2, UrlWarningOverlay_BuildMesh, 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, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Screen_Layout, Screen_ContextLost, UrlWarningOverlay_ContextRecreated Screen_Layout, Screen_ContextLost, UrlWarningOverlay_ContextRecreated
}; };
@ -3355,7 +3353,7 @@ static void TexPackOverlay_Init(void* screen) {
static const struct ScreenVTABLE TexPackOverlay_VTABLE = { static const struct ScreenVTABLE TexPackOverlay_VTABLE = {
TexPackOverlay_Init, TexPackOverlay_Update, Screen_NullFunc, TexPackOverlay_Init, TexPackOverlay_Update, Screen_NullFunc,
MenuScreen_Render2, TexPackOverlay_BuildMesh, 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, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Screen_Layout, TexPackOverlay_ContextLost, TexPackOverlay_ContextRecreated Screen_Layout, TexPackOverlay_ContextLost, TexPackOverlay_ContextRecreated
}; };
@ -3438,7 +3436,7 @@ static void TouchMoreOverlay_Init(void* screen) {
static const struct ScreenVTABLE TouchMoreOverlay_VTABLE = { static const struct ScreenVTABLE TouchMoreOverlay_VTABLE = {
TouchMoreOverlay_Init, MenuScreen_Render, Screen_NullFunc, 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, Menu_PointerDown, Screen_TPointer, Menu_PointerMove, Screen_TMouseScroll,
Screen_Layout, Screen_ContextLost, TouchMoreOverlay_ContextRecreated Screen_Layout, Screen_ContextLost, TouchMoreOverlay_ContextRecreated
}; };

View File

@ -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_TText(void* s, const String* str) { return true; }
int Screen_TMouseScroll(void* s, float delta) { return true; } int Screen_TMouseScroll(void* s, float delta) { return true; }
int Screen_TPointer(void* s, int id, int x, int y) { return true; } int Screen_TPointer(void* s, int id, int x, int y) { return true; }
void Screen_NullFunc(void* screen) { } void Screen_NullFunc(void* screen) { }
void Screen_NullUpdate(void* screen, double delta) { } 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) { CC_NOINLINE static cc_bool IsOnlyHudActive(void) {
struct Screen* s; 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 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) { static int DisconnectScreen_PointerDown(void* screen, int id, int x, int y) {
struct DisconnectScreen* s = (struct DisconnectScreen*)screen; 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 = { static const struct ScreenVTABLE DisconnectScreen_VTABLE = {
DisconnectScreen_Init, Screen_NullUpdate, DisconnectScreen_Free, DisconnectScreen_Init, Screen_NullUpdate, DisconnectScreen_Free,
DisconnectScreen_Render, DisconnectScreen_BuildMesh, 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, DisconnectScreen_PointerDown, Screen_TPointer, DisconnectScreen_PointerMove, Screen_TMouseScroll,
Screen_Layout, DisconnectScreen_ContextLost, DisconnectScreen_ContextRecreated Screen_Layout, DisconnectScreen_ContextLost, DisconnectScreen_ContextRecreated
}; };

View File

@ -23,6 +23,7 @@ int Screen_TPointer(void* s, int id, int x, int y);
void Screen_NullFunc(void* screen); void Screen_NullFunc(void* screen);
void Screen_NullUpdate(void* screen, double delta); void Screen_NullUpdate(void* screen, double delta);
int Screen_InputDown(void* screen, int key);
/* Calls Elem_Render on each widget in the screen. */ /* Calls Elem_Render on each widget in the screen. */
void Screen_RenderWidgets(void* screen, double delta); void Screen_RenderWidgets(void* screen, double delta);