From 7cc25d8916518068be48241d89217fcd349404b5 Mon Sep 17 00:00:00 2001 From: Andrew Lanzone Date: Wed, 2 Jul 2025 22:00:40 -0700 Subject: [PATCH] Dialog window improvements: use LB/RB to move up/down by 5; if only one dialog choice, autoselect it. --- apps/openmw/mwgui/dialogue.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwgui/dialogue.cpp b/apps/openmw/mwgui/dialogue.cpp index b96bf85f6f..4a30532f5e 100644 --- a/apps/openmw/mwgui/dialogue.cpp +++ b/apps/openmw/mwgui/dialogue.cpp @@ -968,7 +968,9 @@ namespace MWGui { if (mChoices.size() > 0) { - if (mControllerChoice >= 0 && mControllerChoice < static_cast(mChoices.size())) + if (mChoices.size() == 1) + onChoiceActivated(mChoices[0].second); + else if (mControllerChoice >= 0 && mControllerChoice < static_cast(mChoices.size())) onChoiceActivated(mChoices[mControllerChoice].second); } else if (mControllerFocus == static_cast(mTopicsList->getItemCount())) @@ -1025,6 +1027,18 @@ namespace MWGui setControllerFocus(mControllerFocus, true); } } + else if (arg.button == SDL_CONTROLLER_BUTTON_LEFTSHOULDER && mChoices.size() == 0) + { + setControllerFocus(mControllerFocus, false); + mControllerFocus = std::max(mControllerFocus - 5, 0); + setControllerFocus(mControllerFocus, true); + } + else if (arg.button == SDL_CONTROLLER_BUTTON_RIGHTSHOULDER && mChoices.size() == 0) + { + setControllerFocus(mControllerFocus, false); + mControllerFocus = std::min(mControllerFocus + 5, static_cast(mTopicsList->getItemCount())); + setControllerFocus(mControllerFocus, true); + } return true; }