From 5d8c349899f66f4a2db362c0c465fadfa52fb5bb Mon Sep 17 00:00:00 2001 From: Andrew Lanzone Date: Thu, 3 Jul 2025 11:44:36 -0700 Subject: [PATCH] Fix issues with setControllerFocus --- apps/openmw/mwgui/dialogue.cpp | 20 ++++++++++---------- apps/openmw/mwgui/dialogue.hpp | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/apps/openmw/mwgui/dialogue.cpp b/apps/openmw/mwgui/dialogue.cpp index 4a30532f5e..6508622bba 100644 --- a/apps/openmw/mwgui/dialogue.cpp +++ b/apps/openmw/mwgui/dialogue.cpp @@ -921,20 +921,20 @@ namespace MWGui && actor.getRefData().getLocals().getIntVar(actor.getClass().getScript(actor), "companion"); } - void DialogueWindow::setControllerFocus(int index, bool focused) + void DialogueWindow::setControllerFocus(size_t index, bool focused) { // List is mTopicsList + "Goodbye" button below the list. - if (index < 0 || index > static_cast(mTopicsList->getItemCount())) + if (index < 0 || index > mTopicsList->getItemCount()) return; - if (index == static_cast(mTopicsList->getItemCount())) + if (index == mTopicsList->getItemCount()) { mGoodbyeButton->setStateSelected(focused); } else { - std::string keyword = mTopicsList->getItemNameAt(mControllerFocus); - if (keyword.length() == 0) + const std::string& keyword = mTopicsList->getItemNameAt(mControllerFocus); + if (keyword.empty()) return; MyGUI::Button* button = mTopicsList->getItemWidget(keyword); @@ -949,10 +949,10 @@ namespace MWGui else { int offset = 0; - for (int i = 0; i < index - 8; i++) + for (size_t i = 0; i < index - 8; i++) { - std::string keyword = mTopicsList->getItemNameAt(i); - if (keyword.length() == 0) + const std::string& keyword = mTopicsList->getItemNameAt(i); + if (keyword.empty()) offset += 21; else offset += mTopicsList->getItemWidget(keyword)->getHeight() + 3; @@ -997,7 +997,7 @@ namespace MWGui setControllerFocus(mControllerFocus, false); if (mControllerFocus <= 0) mControllerFocus = mTopicsList->getItemCount(); // "Goodbye" button - else if (mTopicsList->getItemNameAt(mControllerFocus - 1).length() == 0) + else if (mTopicsList->getItemNameAt(mControllerFocus - 1).empty()) mControllerFocus -= 2; // Skip separator else mControllerFocus--; @@ -1020,7 +1020,7 @@ namespace MWGui mControllerFocus = 0; else if (mControllerFocus == static_cast(mTopicsList->getItemCount()) - 1) mControllerFocus = mTopicsList->getItemCount(); // "Goodbye" button - else if (mTopicsList->getItemNameAt(mControllerFocus + 1).length() == 0) + else if (mTopicsList->getItemNameAt(mControllerFocus + 1).empty()) mControllerFocus += 2; // Skip separator else mControllerFocus++; diff --git a/apps/openmw/mwgui/dialogue.hpp b/apps/openmw/mwgui/dialogue.hpp index 9a19617425..6f03076e92 100644 --- a/apps/openmw/mwgui/dialogue.hpp +++ b/apps/openmw/mwgui/dialogue.hpp @@ -229,7 +229,7 @@ namespace MWGui std::unique_ptr mCallback; std::unique_ptr mGreetingCallback; - void setControllerFocus(int index, bool focused); + void setControllerFocus(size_t index, bool focused); int mControllerFocus = 0; int mControllerChoice = -1;