From 4cfd031cab88e5f3bb265b8330c1b8e24cd758cd Mon Sep 17 00:00:00 2001 From: jpirnay Date: Fri, 24 Apr 2026 14:48:12 +0200 Subject: [PATCH] And even more --- .../reader/EpubReaderMenuActivity.cpp | 30 +++++++++++++++---- .../reader/EpubReaderMenuActivity.h | 1 + 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/activities/reader/EpubReaderMenuActivity.cpp b/src/activities/reader/EpubReaderMenuActivity.cpp index af78acdc..6e68462b 100644 --- a/src/activities/reader/EpubReaderMenuActivity.cpp +++ b/src/activities/reader/EpubReaderMenuActivity.cpp @@ -202,6 +202,16 @@ EpubReaderMenuActivity::MenuAction EpubReaderMenuActivity::actionForNameId(StrId } } +EpubReaderMenuActivity::MenuAction EpubReaderMenuActivity::actionForSettingAction(SettingAction action) { + switch (action) { + case SettingAction::None: + case SettingAction::Submenu: + return MenuAction::NONE; + default: + return MenuAction::NONE; + } +} + void EpubReaderMenuActivity::finishWithAction(MenuAction action) { setResult(MenuResult{static_cast(action), -1, pendingOrientation, selectedPageTurnOption, pendingEmbeddedStyleOverride, pendingImageRenderingOverride, pendingFontFamilyOverride, @@ -329,11 +339,21 @@ void EpubReaderMenuActivity::openSubmenu(const SettingInfo& submenuEntry) { [this](const ActivityResult& result) { if (!result.isCancelled) { const auto* menuResult = std::get_if(&result.data); - if (menuResult && menuResult->nameId != -1) { - const auto action = actionForNameId(static_cast(menuResult->nameId)); - if (action != MenuAction::NONE) { - finishWithAction(action); - return; + if (menuResult) { + if (menuResult->action != -1) { + const auto action = + actionForSettingAction(static_cast(menuResult->action)); + if (action != MenuAction::NONE) { + finishWithAction(action); + return; + } + } + if (menuResult->nameId != -1) { + const auto action = actionForNameId(static_cast(menuResult->nameId)); + if (action != MenuAction::NONE) { + finishWithAction(action); + return; + } } } } diff --git a/src/activities/reader/EpubReaderMenuActivity.h b/src/activities/reader/EpubReaderMenuActivity.h index 368d39eb..a380e99b 100644 --- a/src/activities/reader/EpubReaderMenuActivity.h +++ b/src/activities/reader/EpubReaderMenuActivity.h @@ -58,6 +58,7 @@ class EpubReaderMenuActivity final : public MenuListActivity { // Map from StrId to MenuAction for result passing static MenuAction actionForNameId(StrId nameId); + static MenuAction actionForSettingAction(SettingAction action); // Pending state (mutated locally, returned to parent on finish) uint8_t pendingOrientation = 0;