From 6629a186b1f1f025b73899d5b86490963303aac1 Mon Sep 17 00:00:00 2001 From: Andrew Lanzone Date: Sat, 12 Jul 2025 15:37:48 -0700 Subject: [PATCH] Controller mode uses LB/RB in journal and spell list to scroll faster --- apps/openmw/mwgui/journalwindow.cpp | 12 ++++++++++-- apps/openmw/mwgui/spellview.cpp | 7 ++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwgui/journalwindow.cpp b/apps/openmw/mwgui/journalwindow.cpp index a462ed914d..ac8e779505 100644 --- a/apps/openmw/mwgui/journalwindow.cpp +++ b/apps/openmw/mwgui/journalwindow.cpp @@ -911,13 +911,21 @@ namespace } else if (arg.button == SDL_CONTROLLER_BUTTON_LEFTSHOULDER) // LB: Previous Page { - if (!mOptionsMode) + // Scroll through the list of quests or topics + if (mOptionsMode && (mQuestMode || mTopicsMode)) + setControllerFocusedQuest(std::max(int(mSelectedQuest) - 5, 0)); + // Page through the journal + else if (!mOptionsMode) notifyPrevPage(getWidget(PrevPageBTN)); return true; } else if (arg.button == SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) // RB: Next Page { - if (!mOptionsMode) + // Scroll through the list of quests or topics + if (mOptionsMode && (mQuestMode || mTopicsMode)) + setControllerFocusedQuest(std::min(mSelectedQuest + 5, mButtons.size() - 1)); + // Page through the journal + else if (!mOptionsMode) notifyNextPage(getWidget(NextPageBTN)); return true; } diff --git a/apps/openmw/mwgui/spellview.cpp b/apps/openmw/mwgui/spellview.cpp index a3eef23092..44bdcffe07 100644 --- a/apps/openmw/mwgui/spellview.cpp +++ b/apps/openmw/mwgui/spellview.cpp @@ -389,14 +389,19 @@ namespace MWGui else if (button == SDL_CONTROLLER_BUTTON_RIGHTSHOULDER) { // Jump to first item in next group + int newFocus = mControllerFocus; for (int groupIndex : mGroupIndices) { if (groupIndex > mControllerFocus) { - mControllerFocus = groupIndex; + newFocus = groupIndex; break; } } + // If on last group, jump to bottom of whole list + if (newFocus == mControllerFocus) + newFocus = mButtons.size() - 1; + mControllerFocus = newFocus; } mControllerFocus = wrap(mControllerFocus, mButtons.size());