From 21c092bd8084b16b2c7b3713000abe136217cf84 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Wed, 30 Jul 2025 19:55:42 +1000 Subject: [PATCH] Make primary UI button smaller on small displays --- src/Graphics_GL1.c | 4 ++++ src/Menus.c | 21 +++++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/Graphics_GL1.c b/src/Graphics_GL1.c index 88c1fca10..01b3e6e7e 100644 --- a/src/Graphics_GL1.c +++ b/src/Graphics_GL1.c @@ -341,6 +341,10 @@ void Gfx_DepthOnlyRendering(cc_bool depthOnly) { cc_bool enabled = !depthOnly; #ifdef CC_BUILD_SYMBIAN if (mbx) { + /* On PowerVR MBX cards, glColorMask appears to be unimplemented in hardware */ + /* and thus any usage of it significantly hurts performance. */ + /* So instead, draw with blending of 'new_RGB = current_RGB' - that way */ + /* depth buffer is updated while the colour buffer remain unchanged. */ if (depthOnly) { _glBlendFunc(GL_ZERO, GL_ONE); Gfx_SetAlphaBlending(true); diff --git a/src/Menus.c b/src/Menus.c index b867470d0..6f6b1f728 100644 --- a/src/Menus.c +++ b/src/Menus.c @@ -196,6 +196,11 @@ static int Menu_PadAxis(void* screen, struct PadAxisUpdate* upd) { } } +static void AddPrimaryButton(void* screen, struct ButtonWidget* btn, Widget_LeftClick click) { + int width = Game_ClassicMode ? 400 : (Window_Main.Width < 300 ? 200 : 400); + ButtonWidget_Add(screen, btn, width, click); +} + /*########################################################################################################################* *------------------------------------------------------Menu utilities-----------------------------------------------------* @@ -508,7 +513,7 @@ static void PauseScreenBase_ContextRecreated(struct PauseScreen* s, struct FontD static void PauseScreenBase_AddWidgets(struct PauseScreen* s, int width) { TextWidget_Add(s, &s->title); Menu_AddButtons(s, s->btns, width, s->descs, s->descsCount); - ButtonWidget_Add(s, &s->back, 400, PauseScreenBase_Game); + AddPrimaryButton(s, &s->back, PauseScreenBase_Game); } @@ -741,7 +746,7 @@ static void OptionsGroupScreen_Init(void* screen) { Menu_AddButtons(s, s->btns, 300, optsGroup_btns, 8); TextWidget_Add(s, &s->desc); - ButtonWidget_Add(s, &s->done, 400, Menu_SwitchPause); + AddPrimaryButton(s, &s->done, Menu_SwitchPause); s->maxVertices = Screen_CalcDefaultMaxVertices(s); } @@ -1016,7 +1021,7 @@ static void EditHotkeyScreen_Init(void* screen) { } else { text = String_Empty; } TextInputWidget_Add(s, &s->input, 500, &text, &desc); - ButtonWidget_Add(s, &s->cancel, 400, Menu_SwitchHotkeys); + AddPrimaryButton(s, &s->cancel, Menu_SwitchHotkeys); s->input.onscreenPlaceholder = "Hotkey text"; s->maxVertices = Screen_CalcDefaultMaxVertices(s); @@ -1227,7 +1232,7 @@ static void GenLevelScreen_Init(void* screen) { TextWidget_Add(s, &s->title); ButtonWidget_Add(s, &s->flatgrass, 200, GenLevelScreen_Flatgrass); ButtonWidget_Add(s, &s->vanilla, 200, GenLevelScreen_Notchy); - ButtonWidget_Add(s, &s->cancel, 400, Menu_SwitchPause); + AddPrimaryButton(s, &s->cancel, Menu_SwitchPause); s->maxVertices = Screen_CalcDefaultMaxVertices(s); } @@ -1307,7 +1312,7 @@ static void ClassicGenScreen_Init(void* screen) { ButtonWidget_Add(s, &s->btns[0], 400, ClassicGenScreen_Small); ButtonWidget_Add(s, &s->btns[1], 400, ClassicGenScreen_Medium); ButtonWidget_Add(s, &s->btns[2], 400, ClassicGenScreen_Huge); - ButtonWidget_Add(s, &s->cancel, 400, Menu_SwitchPause); + AddPrimaryButton(s, &s->cancel, Menu_SwitchPause); s->maxVertices = Screen_CalcDefaultMaxVertices(s); } @@ -1544,7 +1549,7 @@ static void SaveLevelScreen_Init(void* screen) { ButtonWidget_Add(s, &s->save, 400, SaveLevelScreen_Save); ButtonWidget_Add(s, &s->file, 400, SaveLevelScreen_File); - ButtonWidget_Add(s, &s->cancel, 400, Menu_SwitchPause); + AddPrimaryButton(s, &s->cancel, Menu_SwitchPause); TextInputWidget_Add(s, &s->input, 400, &World.Name, &desc); Menu_SelectWidget((struct Screen*)s, 3); /* s->input */ @@ -1927,7 +1932,7 @@ static void BindsSourceScreen_Init(void* screen) { ButtonWidget_Add(s, &s->btns[0], 300, BindsSourceScreen_ModeNormal); ButtonWidget_Add(s, &s->btns[1], 300, BindsSourceScreen_ModeGamepad); - ButtonWidget_Add(s, &s->cancel, 400, Menu_SwitchPause); + AddPrimaryButton(s, &s->cancel, Menu_SwitchPause); s->maxVertices = Screen_CalcDefaultMaxVertices(s); } @@ -2108,7 +2113,7 @@ static void KeyBindsScreen_Init(void* screen) { TextWidget_Add(s, &s->title); TextWidget_Add(s, &s->msg); - ButtonWidget_Add(s, &s->back, 400, Gui.ClassicMenu ? Menu_SwitchClassicOptions : Menu_SwitchOptions); + AddPrimaryButton(s, &s->back, Gui.ClassicMenu ? Menu_SwitchClassicOptions : Menu_SwitchOptions); if (s->leftPage || s->rightPage) { ButtonWidget_Add(s, &s->left, 40, s->leftPage);