From fcdb4db2fef1e473dde8f349da90fe5198fd7d04 Mon Sep 17 00:00:00 2001 From: bean <62624884+alpsfordays@users.noreply.github.com> Date: Mon, 26 Jan 2026 14:59:59 -0500 Subject: [PATCH] Fix: moved loadFontsFromSd to occur on exit from settings This fixes a bug where the loaded IDs do not exist in accessible memory if a user only changes font size in settings with a custom font defined; as a result, re-entering a book would rerender it with the correct size but the default font. --- src/activities/settings/FontSelectionActivity.cpp | 7 ++++--- src/activities/settings/SettingsActivity.cpp | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/activities/settings/FontSelectionActivity.cpp b/src/activities/settings/FontSelectionActivity.cpp index f7ab6879..9915a14c 100644 --- a/src/activities/settings/FontSelectionActivity.cpp +++ b/src/activities/settings/FontSelectionActivity.cpp @@ -76,9 +76,6 @@ void FontSelectionActivity::saveAndExit() { SETTINGS.customFontFamily[sizeof(SETTINGS.customFontFamily) - 1] = '\0'; SETTINGS.fontFamily = CrossPointSettings::FONT_CUSTOM; SETTINGS.saveToFile(); - - // Reload fonts to make sure the newly selected font is loaded - EpdFontLoader::loadFontsFromSd(renderer); } onClose(); } @@ -119,5 +116,9 @@ void FontSelectionActivity::render() const { y += 30; } + // Draw help text + const auto labels = mappedInput.mapLabels("« Back", "Select", "", ""); + renderer.drawButtonHints(UI_10_FONT_ID, labels.btn1, labels.btn2, labels.btn3, labels.btn4); + renderer.displayBuffer(); } diff --git a/src/activities/settings/SettingsActivity.cpp b/src/activities/settings/SettingsActivity.cpp index 928c6ec4..437ddd26 100644 --- a/src/activities/settings/SettingsActivity.cpp +++ b/src/activities/settings/SettingsActivity.cpp @@ -105,6 +105,8 @@ void SettingsActivity::loop() { if (mappedInput.wasPressed(MappedInputManager::Button::Back)) { SETTINGS.saveToFile(); + // Reload fonts to make sure the newly selected font settings are loaded + EpdFontLoader::loadFontsFromSd(renderer); onGoHome(); return; }