From bb88becc2bb1a0fe22a9b98aa3161e11ab7095a5 Mon Sep 17 00:00:00 2001 From: Andrew Lanzone Date: Sat, 10 May 2025 22:50:16 -0700 Subject: [PATCH] Basic controller support for the journal --- apps/openmw/mwgui/journalwindow.cpp | 61 +++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/apps/openmw/mwgui/journalwindow.cpp b/apps/openmw/mwgui/journalwindow.cpp index 574c425d3e..7fd6e3d995 100644 --- a/apps/openmw/mwgui/journalwindow.cpp +++ b/apps/openmw/mwgui/journalwindow.cpp @@ -639,6 +639,67 @@ namespace } } } + + bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override + { + if (arg.button == SDL_CONTROLLER_BUTTON_A) + { + // Fall through to mouse click + return false; + } + else if (arg.button == SDL_CONTROLLER_BUTTON_B) + { + if (mOptionsMode) + notifyCancel(getWidget(CancelBTN)); + else if (mStates.size() > 1) + notifyJournal(getWidget(JournalBTN)); + else + notifyClose(getWidget(CloseBTN)); + return true; + } + else if (arg.button == SDL_CONTROLLER_BUTTON_X) + { + if (mQuestMode) + { + if (!mOptionsMode) + notifyOptions(getWidget(OptionsBTN)); + notifyTopics(getWidget(TopicsBTN)); + } + return true; + } + else if (arg.button == SDL_CONTROLLER_BUTTON_Y) + { + if (!mQuestMode) + { + if (!mOptionsMode) + notifyOptions(getWidget(OptionsBTN)); + notifyQuests(getWidget(QuestsBTN)); + } + return true; + } + else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_UP) + { + return true; + } + else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_DOWN) + { + return true; + } + else if (arg.button == SDL_CONTROLLER_BUTTON_LEFTSHOULDER || + arg.button == SDL_CONTROLLER_BUTTON_DPAD_LEFT) + { + notifyPrevPage(getWidget(PrevPageBTN)); + return true; + } + else if (arg.button == SDL_CONTROLLER_BUTTON_RIGHTSHOULDER || + arg.button == SDL_CONTROLLER_BUTTON_DPAD_RIGHT) + { + notifyNextPage(getWidget(NextPageBTN)); + return true; + } + + return false; + } }; }