From 76dcdf6e5a0b67cafc60fe919006bf835c38fe79 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sun, 3 Apr 2022 12:26:21 +1000 Subject: [PATCH] Launcher: Fix checkboxes in settings menu not being aligned when not using Arial font (Thanks 123DMWM) --- src/LBackend.c | 4 +++- src/LBackend.h | 5 ++++- src/LScreens.c | 12 ++++-------- src/Launcher.c | 8 ++++++-- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/LBackend.c b/src/LBackend.c index 5a8bd4e37..f0c2f38c3 100644 --- a/src/LBackend.c +++ b/src/LBackend.c @@ -30,7 +30,7 @@ static int xBorder, xBorder2, xBorder3, xBorder4; static int yBorder, yBorder2, yBorder3, yBorder4; static int xInputOffset, yInputOffset; -void LBackend_CalcOffsets(void) { +void LBackend_Init(void) { xBorder = Display_ScaleX(1); xBorder2 = xBorder * 2; xBorder3 = xBorder * 3; xBorder4 = xBorder * 4; yBorder = Display_ScaleY(1); yBorder2 = yBorder * 2; yBorder3 = yBorder * 3; yBorder4 = yBorder * 4; @@ -54,6 +54,8 @@ static void DrawBoxBounds(BitmapCol col, int x, int y, int width, int height) { } void LBackend_WidgetRepositioned(struct LWidget* w) { } +void LBackend_SetScreen(struct LScreen* s) { } +void LBackend_CloseScreen(struct LScreen* s) { } /*########################################################################################################################* diff --git a/src/LBackend.h b/src/LBackend.h index 7fd7ab1dc..37768eee4 100644 --- a/src/LBackend.h +++ b/src/LBackend.h @@ -5,6 +5,7 @@ Copyright 2014-2021 ClassiCube | Licensed under BSD-3 */ struct Bitmap; +struct LScreen; struct LWidget; struct LButton; struct LCheckbox; @@ -13,8 +14,10 @@ struct LLabel; struct LLine; struct LSlider; -void LBackend_CalcOffsets(void); +void LBackend_Init(void); void LBackend_WidgetRepositioned(struct LWidget* w); +void LBackend_SetScreen(struct LScreen* s); +void LBackend_CloseScreen(struct LScreen* s); void LBackend_InitButton(struct LButton* w, int width, int height); void LBackend_UpdateButton(struct LButton* w); diff --git a/src/LScreens.c b/src/LScreens.c index 598136554..45f5d2493 100644 --- a/src/LScreens.c +++ b/src/LScreens.c @@ -1609,15 +1609,11 @@ static void SettingsScreen_Layout(struct LScreen* s_) { LWidget_SetLocation(&s->btnColours, ANCHOR_CENTRE, ANCHOR_CENTRE, -135, -20); LWidget_SetLocation(&s->lblColours, ANCHOR_CENTRE_MIN, ANCHOR_CENTRE, -70, -20); - LWidget_SetLocation(&s->sep, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 15); -#if defined CC_BUILD_MOBILE - LWidget_SetLocation(&s->cbExtra, ANCHOR_CENTRE, ANCHOR_CENTRE, -100, 44); -#else - LWidget_SetLocation(&s->cbExtra, ANCHOR_CENTRE, ANCHOR_CENTRE, -58, 44); -#endif - LWidget_SetLocation(&s->cbEmpty, ANCHOR_CENTRE, ANCHOR_CENTRE, -63, 84); + LWidget_SetLocation(&s->sep, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 15); + LWidget_SetLocation(&s->cbExtra, ANCHOR_CENTRE_MIN, ANCHOR_CENTRE, -190, 44); + LWidget_SetLocation(&s->cbEmpty, ANCHOR_CENTRE_MIN, ANCHOR_CENTRE, -190, 84); - LWidget_SetLocation(&s->btnBack, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 170); + LWidget_SetLocation(&s->btnBack, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 170); } void SettingsScreen_SetActive(void) { diff --git a/src/Launcher.c b/src/Launcher.c index 5973d25ab..a429ed450 100644 --- a/src/Launcher.c +++ b/src/Launcher.c @@ -43,7 +43,10 @@ static struct Bitmap dirtBmp, stoneBmp; static void CloseActiveScreen(void) { Window_CloseKeyboard(); - if (activeScreen) activeScreen->Free(activeScreen); + if (!activeScreen) return; + + activeScreen->Free(activeScreen); + LBackend_CloseScreen(activeScreen); } void Launcher_SetScreen(struct LScreen* screen) { @@ -59,6 +62,7 @@ void Launcher_SetScreen(struct LScreen* screen) { screen->MouseMove(screen, i); } + LBackend_SetScreen(screen); Launcher_Redraw(); } @@ -290,7 +294,7 @@ void Launcher_Run(void) { Window_SetTitle(&title); Window_Show(); LWidget_CalcOffsets(); - LBackend_CalcOffsets(); + LBackend_Init(); #ifdef CC_BUILD_WIN /* clean leftover exe from updating */