diff --git a/apps/openmw/mwgui/class.cpp b/apps/openmw/mwgui/class.cpp index 450a61b4f8..121793c3af 100644 --- a/apps/openmw/mwgui/class.cpp +++ b/apps/openmw/mwgui/class.cpp @@ -383,6 +383,7 @@ namespace MWGui InfoBoxDialog::InfoBoxDialog() : WindowModal("openmw_infobox.layout") + , mControllerFocus(0) { getWidget(mTextBox, "TextBox"); getWidget(mText, "Text"); @@ -467,7 +468,7 @@ namespace MWGui { if (arg.button == SDL_CONTROLLER_BUTTON_A) { - if (mControllerFocus >= 0 && mControllerFocus < static_cast(mButtons.size())) + if (mControllerFocus < mButtons.size()) onButtonClicked(mButtons[mControllerFocus]); } else if (arg.button == SDL_CONTROLLER_BUTTON_B) @@ -490,7 +491,7 @@ namespace MWGui { if (mButtons.size() <= 1) return true; - if (mButtons.size() == 2 && mControllerFocus == static_cast(mButtons.size()) - 1) + if (mButtons.size() == 2 && mControllerFocus == 1) return true; setControllerFocus(mButtons, mControllerFocus, false); @@ -524,6 +525,7 @@ namespace MWGui : WindowModal("openmw_chargen_create_class.layout") , mAffectedAttribute(nullptr) , mAffectedSkill(nullptr) + , mControllerFocus(2) { // Centre dialog center(); @@ -992,7 +994,7 @@ namespace MWGui { if (arg.button == SDL_CONTROLLER_BUTTON_A) { - if (mControllerFocus >= 0 && mControllerFocus < static_cast(mAttributeButtons.size())) + if (mControllerFocus < mAttributeButtons.size()) onAttributeClicked(mAttributeButtons[mControllerFocus]); } else if (arg.button == SDL_CONTROLLER_BUTTON_B) @@ -1094,7 +1096,7 @@ namespace MWGui { if (arg.button == SDL_CONTROLLER_BUTTON_A) { - if (mControllerFocus >= 0 && mControllerFocus < static_cast(mSkillButtons.size())) + if (mControllerFocus < mSkillButtons.size()) onSkillClicked(mSkillButtons[mControllerFocus]); } else if (arg.button == SDL_CONTROLLER_BUTTON_B) diff --git a/apps/openmw/mwgui/class.hpp b/apps/openmw/mwgui/class.hpp index a4db03d4ab..2f394af9c0 100644 --- a/apps/openmw/mwgui/class.hpp +++ b/apps/openmw/mwgui/class.hpp @@ -51,7 +51,7 @@ namespace MWGui MyGUI::TextBox* mText; MyGUI::Widget* mButtonBar; std::vector mButtons; - int mControllerFocus = 0; + size_t mControllerFocus; }; // Lets the player choose between 3 ways of creating a class @@ -218,7 +218,7 @@ namespace MWGui void onAttributeClicked(Widgets::MWAttributePtr _sender); void onCancelClicked(MyGUI::Widget* _sender); bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; - int mControllerFocus; + size_t mControllerFocus; std::vector mAttributeButtons; private: @@ -252,7 +252,7 @@ namespace MWGui void onSkillClicked(Widgets::MWSkillPtr _sender); void onCancelClicked(MyGUI::Widget* _sender); bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; - int mControllerFocus; + size_t mControllerFocus; std::vector mSkillButtons; private: @@ -350,7 +350,7 @@ namespace MWGui Widgets::MWSkillPtr mAffectedSkill; bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; - int mControllerFocus = 2; + size_t mControllerFocus; }; } #endif diff --git a/apps/openmw/mwgui/levelupdialog.cpp b/apps/openmw/mwgui/levelupdialog.cpp index b9c90e51e2..34f70e8660 100644 --- a/apps/openmw/mwgui/levelupdialog.cpp +++ b/apps/openmw/mwgui/levelupdialog.cpp @@ -386,7 +386,7 @@ namespace MWGui { if (arg.button == SDL_CONTROLLER_BUTTON_A) { - if (mControllerFocus >= 0 && mControllerFocus < static_cast(mAttributeButtons.size())) + if (mControllerFocus < mAttributeButtons.size()) onAttributeClicked(mAttributeButtons[mControllerFocus]); MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Item Gold Up")); } diff --git a/apps/openmw/mwgui/levelupdialog.hpp b/apps/openmw/mwgui/levelupdialog.hpp index 8a34a94c8b..05048b3e8f 100644 --- a/apps/openmw/mwgui/levelupdialog.hpp +++ b/apps/openmw/mwgui/levelupdialog.hpp @@ -52,7 +52,7 @@ namespace MWGui bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; std::vector mAttributeButtons; - int mControllerFocus; + size_t mControllerFocus; }; } diff --git a/apps/openmw/mwgui/merchantrepair.cpp b/apps/openmw/mwgui/merchantrepair.cpp index 425c519175..db0f3bf1a2 100644 --- a/apps/openmw/mwgui/merchantrepair.cpp +++ b/apps/openmw/mwgui/merchantrepair.cpp @@ -178,7 +178,7 @@ namespace MWGui { if (arg.button == SDL_CONTROLLER_BUTTON_A) { - if (mControllerFocus >= 0 && mControllerFocus < static_cast(mButtons.size())) + if (mControllerFocus < mButtons.size()) onRepairButtonClick(mButtons[mControllerFocus].first); } else if (arg.button == SDL_CONTROLLER_BUTTON_B) @@ -205,7 +205,7 @@ namespace MWGui } // Scroll the list to keep the active item in view - if (mControllerFocus >= 0 && mControllerFocus < static_cast(mButtons.size())) + if (mControllerFocus < mButtons.size()) { int line = mButtons[mControllerFocus].second; if (line <= 5) diff --git a/apps/openmw/mwgui/merchantrepair.hpp b/apps/openmw/mwgui/merchantrepair.hpp index e878d34b7d..8bc9ba4bac 100644 --- a/apps/openmw/mwgui/merchantrepair.hpp +++ b/apps/openmw/mwgui/merchantrepair.hpp @@ -27,7 +27,7 @@ namespace MWGui MWWorld::Ptr mActor; - int mControllerFocus; + size_t mControllerFocus; protected: void onMouseWheel(MyGUI::Widget* _sender, int _rel); diff --git a/apps/openmw/mwgui/messagebox.cpp b/apps/openmw/mwgui/messagebox.cpp index 80b2a34a5b..8020a4c3d5 100644 --- a/apps/openmw/mwgui/messagebox.cpp +++ b/apps/openmw/mwgui/messagebox.cpp @@ -218,7 +218,7 @@ namespace MWGui } InteractiveMessageBox::InteractiveMessageBox(MessageBoxManager& parMessageBoxManager, const std::string& message, - const std::vector& buttons, bool immediate, int defaultFocus) + const std::vector& buttons, bool immediate, size_t defaultFocus) : WindowModal(MWBase::Environment::get().getWindowManager()->isGuiMode() ? "openmw_interactive_messagebox_notransp.layout" : "openmw_interactive_messagebox.layout") @@ -226,6 +226,7 @@ namespace MWGui , mButtonPressed(-1) , mDefaultFocus(defaultFocus) , mImmediate(immediate) + , mControllerFocus(0) { int textPadding = 10; // padding between text-widget and main-widget int textButtonPadding = 10; // padding between the text-widget und the button-widget @@ -290,9 +291,9 @@ namespace MWGui if (mButtons.size() > 1) { mControllerFocus = 0; - if (mDefaultFocus >= 0 && mDefaultFocus < static_cast(mButtons.size())) + if (mDefaultFocus < mButtons.size()) mControllerFocus = mDefaultFocus; - for (int i = 0; i < static_cast(mButtons.size()); ++i) + for (size_t i = 0; i < mButtons.size(); ++i) mButtons[i]->setStateSelected(i == mControllerFocus); } } @@ -397,7 +398,7 @@ namespace MWGui MyGUI::Widget* InteractiveMessageBox::getDefaultKeyFocus() { - if (mDefaultFocus >= 0 && mDefaultFocus < static_cast(mButtons.size())) + if (mDefaultFocus < mButtons.size()) return mButtons[mDefaultFocus]; auto& languageManager = MyGUI::LanguageManager::getInstance(); std::vector keywords{ languageManager.replaceTags("#{sOk}"), @@ -452,8 +453,12 @@ namespace MWGui { if (arg.button == SDL_CONTROLLER_BUTTON_A) { - mControllerFocus = std::clamp(mControllerFocus, 0, static_cast(mButtons.size()) - 1); - buttonActivated(mButtons[mControllerFocus]); + if (!mButtons.empty()) + { + if (mControllerFocus >= mButtons.size()) + mControllerFocus = mButtons.size() - 1; + buttonActivated(mButtons[mControllerFocus]); + } } else if (arg.button == SDL_CONTROLLER_BUTTON_B) { @@ -475,7 +480,7 @@ namespace MWGui { if (mButtons.size() <= 1) return true; - if (mButtons.size() == 2 && mControllerFocus == static_cast(mButtons.size()) - 1) + if (mButtons.size() == 2 && mControllerFocus == 1) return true; setControllerFocus(mButtons, mControllerFocus, false); diff --git a/apps/openmw/mwgui/messagebox.hpp b/apps/openmw/mwgui/messagebox.hpp index e6128ee0d1..98eb69cc69 100644 --- a/apps/openmw/mwgui/messagebox.hpp +++ b/apps/openmw/mwgui/messagebox.hpp @@ -93,7 +93,7 @@ namespace MWGui { public: InteractiveMessageBox(MessageBoxManager& parMessageBoxManager, const std::string& message, - const std::vector& buttons, bool immediate, int defaultFocus); + const std::vector& buttons, bool immediate, size_t defaultFocus); void mousePressed(MyGUI::Widget* _widget); int readPressedButton(); @@ -114,9 +114,9 @@ namespace MWGui std::vector mButtons; int mButtonPressed; - int mDefaultFocus; + size_t mDefaultFocus; bool mImmediate; - int mControllerFocus = 0; + size_t mControllerFocus; }; } diff --git a/apps/openmw/mwgui/quickkeysmenu.cpp b/apps/openmw/mwgui/quickkeysmenu.cpp index 1b25b8b7d2..419cb26420 100644 --- a/apps/openmw/mwgui/quickkeysmenu.cpp +++ b/apps/openmw/mwgui/quickkeysmenu.cpp @@ -39,7 +39,7 @@ namespace MWGui , mKey(std::vector(10)) , mSelected(nullptr) , mActivated(nullptr) - + , mControllerFocus(0) { getWidget(mOkButton, "OKButton"); getWidget(mInstructionLabel, "InstructionLabel"); @@ -118,7 +118,7 @@ namespace MWGui if (Settings::gui().mControllerMenus) { mControllerFocus = 0; - for (int i = 0; i < static_cast(mKey.size()); i++) + for (size_t i = 0; i < mKey.size(); i++) mKey[i].button->setControllerFocus(i == mControllerFocus); } } @@ -490,7 +490,7 @@ namespace MWGui mControllerFocus++; } - for (int i = 0; i < static_cast(mKey.size()); i++) + for (size_t i = 0; i < mKey.size(); i++) mKey[i].button->setControllerFocus(i == mControllerFocus); return true; @@ -501,6 +501,7 @@ namespace MWGui QuickKeysMenuAssign::QuickKeysMenuAssign(QuickKeysMenu* parent) : WindowModal("openmw_quickkeys_menu_assign.layout") , mParent(parent) + , mControllerFocus(0) { getWidget(mLabel, "Label"); getWidget(mItemButton, "ItemButton"); diff --git a/apps/openmw/mwgui/quickkeysmenu.hpp b/apps/openmw/mwgui/quickkeysmenu.hpp index 228eb926b4..e740a93a68 100644 --- a/apps/openmw/mwgui/quickkeysmenu.hpp +++ b/apps/openmw/mwgui/quickkeysmenu.hpp @@ -74,7 +74,7 @@ namespace MWGui void unassign(keyData* key); bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; - int mControllerFocus; + size_t mControllerFocus; }; class QuickKeysMenuAssign : public WindowModal diff --git a/apps/openmw/mwgui/review.cpp b/apps/openmw/mwgui/review.cpp index dcaa49b1e2..236c7198d2 100644 --- a/apps/openmw/mwgui/review.cpp +++ b/apps/openmw/mwgui/review.cpp @@ -36,6 +36,7 @@ namespace MWGui ReviewDialog::ReviewDialog() : WindowModal("openmw_chargen_review.layout") , mUpdateSkillArea(false) + , mControllerFocus(5) { // Centre dialog center(); diff --git a/apps/openmw/mwgui/review.hpp b/apps/openmw/mwgui/review.hpp index fe53787fe3..cd3fc594a7 100644 --- a/apps/openmw/mwgui/review.hpp +++ b/apps/openmw/mwgui/review.hpp @@ -104,7 +104,7 @@ namespace MWGui // 0 = Name, 1 = Race, 2 = Class, 3 = BirthSign, 4 = Back, 5 = OK std::vector mButtons; - int mControllerFocus = 5; + int mControllerFocus; }; } #endif diff --git a/apps/openmw/mwgui/spellbuyingwindow.cpp b/apps/openmw/mwgui/spellbuyingwindow.cpp index e43bbfc497..4b6811e605 100644 --- a/apps/openmw/mwgui/spellbuyingwindow.cpp +++ b/apps/openmw/mwgui/spellbuyingwindow.cpp @@ -27,6 +27,7 @@ namespace MWGui SpellBuyingWindow::SpellBuyingWindow() : WindowBase("openmw_spell_buying_window.layout") , mCurrentY(0) + , mControllerFocus(0) { getWidget(mCancelButton, "CancelButton"); getWidget(mPlayerGold, "PlayerGold"); @@ -229,7 +230,7 @@ namespace MWGui { if (arg.button == SDL_CONTROLLER_BUTTON_A) { - if (mControllerFocus >= 0 && mControllerFocus < static_cast(mSpellButtons.size())) + if (mControllerFocus < mSpellButtons.size()) onSpellButtonClick(mSpellButtons[mControllerFocus].first); } else if (arg.button == SDL_CONTROLLER_BUTTON_B) @@ -261,7 +262,7 @@ namespace MWGui mSpellButtons[mControllerFocus].first->setStateSelected(true); } - if (mControllerFocus >= 0 && mControllerFocus < static_cast(mSpellButtons.size())) + if (mControllerFocus < mSpellButtons.size()) { // Scroll the list to keep the active item in view int line = mSpellButtons[mControllerFocus].second; diff --git a/apps/openmw/mwgui/spellbuyingwindow.hpp b/apps/openmw/mwgui/spellbuyingwindow.hpp index e67dfde76c..7a75afbed1 100644 --- a/apps/openmw/mwgui/spellbuyingwindow.hpp +++ b/apps/openmw/mwgui/spellbuyingwindow.hpp @@ -58,7 +58,7 @@ namespace MWGui private: static bool sortSpells(const ESM::Spell* left, const ESM::Spell* right); bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; - int mControllerFocus; + size_t mControllerFocus; }; } diff --git a/apps/openmw/mwgui/trainingwindow.cpp b/apps/openmw/mwgui/trainingwindow.cpp index 1a268fff5d..be8359cde5 100644 --- a/apps/openmw/mwgui/trainingwindow.cpp +++ b/apps/openmw/mwgui/trainingwindow.cpp @@ -250,7 +250,7 @@ namespace MWGui { if (arg.button == SDL_CONTROLLER_BUTTON_A) { - if (mControllerFocus >= 0 && mControllerFocus < static_cast(mTrainingButtons.size())) + if (mControllerFocus < mTrainingButtons.size()) onTrainingSelected(mTrainingButtons[mControllerFocus]); } else if (arg.button == SDL_CONTROLLER_BUTTON_B) diff --git a/apps/openmw/mwgui/trainingwindow.hpp b/apps/openmw/mwgui/trainingwindow.hpp index 4f866f820e..f44c5524f5 100644 --- a/apps/openmw/mwgui/trainingwindow.hpp +++ b/apps/openmw/mwgui/trainingwindow.hpp @@ -55,7 +55,7 @@ namespace MWGui TimeAdvancer mTimeAdvancer; bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; - int mControllerFocus; + size_t mControllerFocus; }; } diff --git a/apps/openmw/mwgui/travelwindow.cpp b/apps/openmw/mwgui/travelwindow.cpp index 726e623eb3..38eee1b85c 100644 --- a/apps/openmw/mwgui/travelwindow.cpp +++ b/apps/openmw/mwgui/travelwindow.cpp @@ -263,7 +263,7 @@ namespace MWGui { if (arg.button == SDL_CONTROLLER_BUTTON_A) { - if (mControllerFocus >= 0 && mControllerFocus < static_cast(mDestinationButtons.size())) + if (mControllerFocus < mDestinationButtons.size()) { onTravelButtonClick(mDestinationButtons[mControllerFocus]); MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click")); diff --git a/apps/openmw/mwgui/travelwindow.hpp b/apps/openmw/mwgui/travelwindow.hpp index 79f5f9abc8..c0002b805b 100644 --- a/apps/openmw/mwgui/travelwindow.hpp +++ b/apps/openmw/mwgui/travelwindow.hpp @@ -42,7 +42,7 @@ namespace MWGui private: bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override; - int mControllerFocus; + size_t mControllerFocus; }; }