diff --git a/apps/openmw/mwbase/windowmanager.hpp b/apps/openmw/mwbase/windowmanager.hpp index 904e5587b0..f25a90abb5 100644 --- a/apps/openmw/mwbase/windowmanager.hpp +++ b/apps/openmw/mwbase/windowmanager.hpp @@ -289,9 +289,6 @@ namespace MWBase virtual const Translation::Storage& getTranslationDataStorage() const = 0; - /// Warning: do not use MyGUI::InputManager::setKeyFocusWidget directly. Instead use this. - virtual void setKeyFocusWidget (MyGUI::Widget* widget) = 0; - virtual void loadUserFonts() = 0; virtual Loading::Listener* getLoadingScreen() = 0; diff --git a/apps/openmw/mwgui/alchemywindow.cpp b/apps/openmw/mwgui/alchemywindow.cpp index 0ef8bae499..c1bdd023f4 100644 --- a/apps/openmw/mwgui/alchemywindow.cpp +++ b/apps/openmw/mwgui/alchemywindow.cpp @@ -4,6 +4,8 @@ #include #include #include +#include +#include #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" @@ -26,9 +28,6 @@ namespace MWGui { - const float AlchemyWindow::sCountChangeInitialPause = 0.5f; - const float AlchemyWindow::sCountChangeInterval = 0.1f; - AlchemyWindow::AlchemyWindow() : WindowBase("openmw_alchemy_window.layout") , mSortModel(nullptr) @@ -170,7 +169,7 @@ namespace MWGui update(); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mNameEdit); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mNameEdit); } void AlchemyWindow::onIngredientSelected(MyGUI::Widget* _sender) @@ -282,10 +281,9 @@ namespace MWGui void AlchemyWindow::addRepeatController(MyGUI::Widget *widget) { - MyGUI::ControllerItem* item = MyGUI::ControllerManager::getInstance().createItem(Controllers::ControllerRepeatEvent::getClassTypeName()); - Controllers::ControllerRepeatEvent* controller = item->castType(); - controller->eventRepeatClick += MyGUI::newDelegate(this, &AlchemyWindow::onRepeatClick); - controller->setRepeat(sCountChangeInitialPause, sCountChangeInterval); + MyGUI::ControllerItem* item = MyGUI::ControllerManager::getInstance().createItem(MyGUI::ControllerRepeatClick::getClassTypeName()); + MyGUI::ControllerRepeatClick* controller = static_cast(item); + controller->eventRepeatClick += newDelegate(this, &AlchemyWindow::onRepeatClick); MyGUI::ControllerManager::getInstance().addItem(widget, controller); } diff --git a/apps/openmw/mwgui/alchemywindow.hpp b/apps/openmw/mwgui/alchemywindow.hpp index c6eb00792f..a3f1cb52e2 100644 --- a/apps/openmw/mwgui/alchemywindow.hpp +++ b/apps/openmw/mwgui/alchemywindow.hpp @@ -4,9 +4,10 @@ #include #include +#include + #include -#include "controllers.hpp" #include "windowbase.hpp" namespace MWMechanics diff --git a/apps/openmw/mwgui/birth.cpp b/apps/openmw/mwgui/birth.cpp index 6f6a621adf..8955606d29 100644 --- a/apps/openmw/mwgui/birth.cpp +++ b/apps/openmw/mwgui/birth.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" @@ -71,7 +72,7 @@ namespace MWGui WindowModal::onOpen(); updateBirths(); updateSpells(); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mBirthList); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mBirthList); // Show the current birthsign by default const std::string &signId = diff --git a/apps/openmw/mwgui/bookwindow.cpp b/apps/openmw/mwgui/bookwindow.cpp index 86089051d6..e4cf254e22 100644 --- a/apps/openmw/mwgui/bookwindow.cpp +++ b/apps/openmw/mwgui/bookwindow.cpp @@ -101,7 +101,7 @@ namespace MWGui setTakeButtonShow(showTakeButton); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mCloseButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mCloseButton); } void BookWindow::setTakeButtonShow(bool show) @@ -161,9 +161,9 @@ namespace MWGui mPrevPageButton->setVisible(prevPageVisible); if (focus == mNextPageButton && !nextPageVisible && prevPageVisible) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mPrevPageButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mPrevPageButton); else if (focus == mPrevPageButton && !prevPageVisible && nextPageVisible) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mNextPageButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mNextPageButton); if (mPages.empty()) return; diff --git a/apps/openmw/mwgui/class.cpp b/apps/openmw/mwgui/class.cpp index a92ad934cd..94c493be73 100644 --- a/apps/openmw/mwgui/class.cpp +++ b/apps/openmw/mwgui/class.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "../mwbase/environment.hpp" #include "../mwbase/world.hpp" @@ -135,7 +136,7 @@ namespace MWGui WindowModal::onOpen (); updateClasses(); updateStats(); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mClassList); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mClassList); // Show the current class by default MWWorld::Ptr player = MWMechanics::getPlayer(); @@ -436,7 +437,7 @@ namespace MWGui getWidget(mEditName, "EditName"); // Make sure the edit box has focus - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mEditName); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mEditName); MyGUI::Button* descriptionButton; getWidget(descriptionButton, "DescriptionButton"); @@ -902,7 +903,7 @@ namespace MWGui okButton->setCaption(MWBase::Environment::get().getWindowManager()->getGameSettingString("sInputMenu1", "")); // Make sure the edit box has focus - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mTextEdit); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mTextEdit); } DescriptionDialog::~DescriptionDialog() diff --git a/apps/openmw/mwgui/confirmationdialog.cpp b/apps/openmw/mwgui/confirmationdialog.cpp index 65b079d85b..c5a50c2e63 100644 --- a/apps/openmw/mwgui/confirmationdialog.cpp +++ b/apps/openmw/mwgui/confirmationdialog.cpp @@ -2,6 +2,7 @@ #include #include +#include #include "../mwbase/environment.hpp" #include "../mwbase/windowmanager.hpp" @@ -33,7 +34,7 @@ namespace MWGui mMessage->setSize(mMessage->getWidth(), mMessage->getTextSize().height + 24); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mOkButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mOkButton); center(); } diff --git a/apps/openmw/mwgui/console.cpp b/apps/openmw/mwgui/console.cpp index 899bc0d902..3a065d13af 100644 --- a/apps/openmw/mwgui/console.cpp +++ b/apps/openmw/mwgui/console.cpp @@ -1,6 +1,7 @@ #include "console.hpp" #include +#include #include #include @@ -151,7 +152,7 @@ namespace MWGui { // Give keyboard focus to the combo box whenever the console is // turned on - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mCommandLine); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mCommandLine); } void Console::print(const std::string &msg, const std::string& color) @@ -447,7 +448,7 @@ namespace MWGui mPtr = object; } // User clicked on an object. Restore focus to the console command line. - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mCommandLine); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mCommandLine); } else { diff --git a/apps/openmw/mwgui/container.cpp b/apps/openmw/mwgui/container.cpp index bfe93f6ed9..5aa5d01435 100644 --- a/apps/openmw/mwgui/container.cpp +++ b/apps/openmw/mwgui/container.cpp @@ -141,7 +141,7 @@ namespace MWGui mItemView->setModel (mSortModel); mItemView->resetScrollBars(); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mCloseButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mCloseButton); setTitle(container.getClass().getName(container)); } @@ -175,7 +175,7 @@ namespace MWGui if(mDragAndDrop != nullptr && mDragAndDrop->mIsOnDragAndDrop) return; - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mCloseButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mCloseButton); // transfer everything into the player's inventory ItemModel* playerModel = MWBase::Environment::get().getWindowManager()->getInventoryWindow()->getModel(); @@ -222,7 +222,7 @@ namespace MWGui { if(mDragAndDrop == nullptr || !mDragAndDrop->mIsOnDragAndDrop) { - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mCloseButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mCloseButton); onTakeAllButtonClicked(mTakeButton); diff --git a/apps/openmw/mwgui/controllers.cpp b/apps/openmw/mwgui/controllers.cpp index 72f2eb7f3a..f3932d3ce6 100644 --- a/apps/openmw/mwgui/controllers.cpp +++ b/apps/openmw/mwgui/controllers.cpp @@ -7,54 +7,6 @@ namespace MWGui { namespace Controllers { - - ControllerRepeatEvent::ControllerRepeatEvent() : - mInit(0.5f), - mStep(0.1f), - mEnabled(true), - mTimeLeft(0) - { - } - - ControllerRepeatEvent::~ControllerRepeatEvent() - { - } - - bool ControllerRepeatEvent::addTime(MyGUI::Widget* _widget, float _time) - { - if(mTimeLeft == 0) - mTimeLeft = mInit; - - mTimeLeft -= _time; - while (mTimeLeft <= 0) - { - mTimeLeft += mStep; - eventRepeatClick(_widget, this); - } - return true; - } - - void ControllerRepeatEvent::setRepeat(float init, float step) - { - mInit = init; - mStep = step; - } - - void ControllerRepeatEvent::setEnabled(bool enable) - { - mEnabled = enable; - } - - void ControllerRepeatEvent::setProperty(const std::string& _key, const std::string& _value) - { - } - - void ControllerRepeatEvent::prepareItem(MyGUI::Widget* _widget) - { - } - - // ------------------------------------------------------------- - void ControllerFollowMouse::prepareItem(MyGUI::Widget *_widget) { } diff --git a/apps/openmw/mwgui/controllers.hpp b/apps/openmw/mwgui/controllers.hpp index 4208f048c9..b75fe79ab6 100644 --- a/apps/openmw/mwgui/controllers.hpp +++ b/apps/openmw/mwgui/controllers.hpp @@ -13,39 +13,6 @@ namespace MWGui { namespace Controllers { - // Should be removed when upgrading to MyGUI 3.2.2 (current git), it has ControllerRepeatClick - class ControllerRepeatEvent : - public MyGUI::ControllerItem - { - MYGUI_RTTI_DERIVED( ControllerRepeatEvent ) - - public: - ControllerRepeatEvent(); - virtual ~ControllerRepeatEvent(); - - void setRepeat(float init, float step); - void setEnabled(bool enable); - virtual void setProperty(const std::string& _key, const std::string& _value); - - // Events - typedef MyGUI::delegates::CMultiDelegate2 EventHandle_RepeatClickVoid; - - /** Event : Repeat Click.\n - signature : void method(MyGUI::Widget* _sender, MyGUI::ControllerItem *_controller)\n - */ - EventHandle_RepeatClickVoid eventRepeatClick; - - private: - bool addTime(MyGUI::Widget* _widget, float _time); - void prepareItem(MyGUI::Widget* _widget); - - private: - float mInit; - float mStep; - bool mEnabled; - float mTimeLeft; - }; - /// Automatically positions a widget below the mouse cursor. class ControllerFollowMouse : public MyGUI::ControllerItem diff --git a/apps/openmw/mwgui/countdialog.cpp b/apps/openmw/mwgui/countdialog.cpp index baf3a43abd..30ef507590 100644 --- a/apps/openmw/mwgui/countdialog.cpp +++ b/apps/openmw/mwgui/countdialog.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -47,7 +48,7 @@ namespace MWGui mMainWidget->getHeight()); // by default, the text edit field has the focus of the keyboard - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mItemEdit); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mItemEdit); mSlider->setScrollPosition(maxCount-1); diff --git a/apps/openmw/mwgui/dialogue.cpp b/apps/openmw/mwgui/dialogue.cpp index 6b400c1724..4c9e6b230e 100644 --- a/apps/openmw/mwgui/dialogue.cpp +++ b/apps/openmw/mwgui/dialogue.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -380,7 +381,7 @@ namespace MWGui { onTopicActivated(topic); if (mGoodbyeButton->getEnabled()) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mGoodbyeButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mGoodbyeButton); } else if (topic == sPersuasion) mPersuasionDialog.setVisible(true); @@ -443,7 +444,7 @@ namespace MWGui return; } - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mGoodbyeButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mGoodbyeButton); setTitle(mPtr.getClass().getName(mPtr)); @@ -622,7 +623,7 @@ namespace MWGui bool goodbyeWasEnabled = mGoodbyeButton->getEnabled(); mGoodbyeButton->setEnabled(goodbyeEnabled); if (goodbyeEnabled && !goodbyeWasEnabled) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mGoodbyeButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mGoodbyeButton); bool topicsEnabled = !MWBase::Environment::get().getDialogueManager()->isInChoice() && !mGoodbye; mTopicsList->setEnabled(topicsEnabled); diff --git a/apps/openmw/mwgui/enchantingdialog.cpp b/apps/openmw/mwgui/enchantingdialog.cpp index caeb655753..64285b2a8c 100644 --- a/apps/openmw/mwgui/enchantingdialog.cpp +++ b/apps/openmw/mwgui/enchantingdialog.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -67,7 +68,7 @@ namespace MWGui void EnchantingDialog::onOpen() { center(); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mName); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mName); } void EnchantingDialog::setSoulGem(const MWWorld::Ptr &gem) diff --git a/apps/openmw/mwgui/journalwindow.cpp b/apps/openmw/mwgui/journalwindow.cpp index 43e7edf1e4..34c0fa8e15 100644 --- a/apps/openmw/mwgui/journalwindow.cpp +++ b/apps/openmw/mwgui/journalwindow.cpp @@ -254,7 +254,7 @@ namespace } updateShowingPages(); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(getWidget(CloseBTN)); + MyGUI::InputManager::getInstance().setKeyFocusWidget(getWidget(CloseBTN)); } void onClose() @@ -377,9 +377,9 @@ namespace prevPageBtn->setVisible(prevPageVisible); if (focus == nextPageBtn && !nextPageVisible && prevPageVisible) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(prevPageBtn); + MyGUI::InputManager::getInstance().setKeyFocusWidget(prevPageBtn); else if (focus == prevPageBtn && !prevPageVisible && nextPageVisible) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(nextPageBtn); + MyGUI::InputManager::getInstance().setKeyFocusWidget(nextPageBtn); setVisible (PageOneNum, relPages > 0); setVisible (PageTwoNum, relPages > 1); diff --git a/apps/openmw/mwgui/keyboardnavigation.cpp b/apps/openmw/mwgui/keyboardnavigation.cpp index 7355dc1f4c..79b9e8457e 100644 --- a/apps/openmw/mwgui/keyboardnavigation.cpp +++ b/apps/openmw/mwgui/keyboardnavigation.cpp @@ -83,7 +83,7 @@ void KeyboardNavigation::restoreFocus(int mode) { MyGUI::Widget* w = found->second; if (w && w->getVisible() && w->getEnabled()) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(found->second); + MyGUI::InputManager::getInstance().setKeyFocusWidget(found->second); } } @@ -130,7 +130,7 @@ void KeyboardNavigation::onFrame() // workaround incorrect key focus resets (fix in MyGUI TBD) if (!shouldAcceptKeyFocus(focus) && shouldAcceptKeyFocus(mCurrentFocus) && (!mModalWindow || isRootParent(mCurrentFocus, mModalWindow))) { - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mCurrentFocus); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mCurrentFocus); focus = mCurrentFocus; } @@ -154,12 +154,12 @@ void KeyboardNavigation::setDefaultFocus(MyGUI::Widget *window, MyGUI::Widget *d MyGUI::Widget* focus = MyGUI::InputManager::getInstance().getKeyFocusWidget(); if (!focus || !shouldAcceptKeyFocus(focus)) { - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(defaultFocus); + MyGUI::InputManager::getInstance().setKeyFocusWidget(defaultFocus); } else { if (!isRootParent(focus, window)) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(defaultFocus); + MyGUI::InputManager::getInstance().setKeyFocusWidget(defaultFocus); } } @@ -276,7 +276,7 @@ bool KeyboardNavigation::switchFocus(int direction, bool wrap) else if (direction == D_Up && (vertdiff >= 0 || !isVertical)) return false; - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(keyFocusList[index]); + MyGUI::InputManager::getInstance().setKeyFocusWidget(keyFocusList[index]); return true; } @@ -291,7 +291,7 @@ bool KeyboardNavigation::selectFirstWidget() if (!keyFocusList.empty()) { - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(keyFocusList[0]); + MyGUI::InputManager::getInstance().setKeyFocusWidget(keyFocusList[0]); return true; } return false; diff --git a/apps/openmw/mwgui/mainmenu.cpp b/apps/openmw/mwgui/mainmenu.cpp index 4778ee7b09..782162d32f 100644 --- a/apps/openmw/mwgui/mainmenu.cpp +++ b/apps/openmw/mwgui/mainmenu.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -67,12 +68,12 @@ namespace MWGui if (isMainMenu) { if (mButtons["loadgame"]->getVisible()) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mButtons["loadgame"]); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mButtons["loadgame"]); else - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mButtons["newgame"]); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mButtons["newgame"]); } else - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mButtons["return"]); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mButtons["return"]); } Layout::setVisible (visible); diff --git a/apps/openmw/mwgui/mapwindow.cpp b/apps/openmw/mwgui/mapwindow.cpp index 02d2be5770..7d622ab542 100644 --- a/apps/openmw/mwgui/mapwindow.cpp +++ b/apps/openmw/mwgui/mapwindow.cpp @@ -1123,7 +1123,7 @@ namespace MWGui { WindowModal::onOpen(); center(); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mTextEdit); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mTextEdit); } void EditNoteDialog::onCancelButtonClicked(MyGUI::Widget *sender) diff --git a/apps/openmw/mwgui/race.cpp b/apps/openmw/mwgui/race.cpp index cf69ecca38..9d3e1e0a99 100644 --- a/apps/openmw/mwgui/race.cpp +++ b/apps/openmw/mwgui/race.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -165,7 +166,7 @@ namespace MWGui mHeadRotate->setScrollPosition(initialPos); onHeadRotate(mHeadRotate, initialPos); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mRaceList); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mRaceList); } void RaceDialog::setRaceId(const std::string &raceId) diff --git a/apps/openmw/mwgui/savegamedialog.cpp b/apps/openmw/mwgui/savegamedialog.cpp index 2027210d7b..903fdf69dd 100644 --- a/apps/openmw/mwgui/savegamedialog.cpp +++ b/apps/openmw/mwgui/savegamedialog.cpp @@ -94,7 +94,7 @@ namespace MWGui MWBase::Environment::get().getStateManager()->deleteGame (mCurrentCharacter, mCurrentSlot); mSaveList->removeItemAt(mSaveList->getIndexSelected()); onSlotSelected(mSaveList, mSaveList->getIndexSelected()); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mSaveList); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mSaveList); if (mSaveList->getItemCount() == 0) { @@ -114,7 +114,7 @@ namespace MWGui void SaveGameDialog::onDeleteSlotCancel() { - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mSaveList); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mSaveList); } void SaveGameDialog::onSaveNameChanged(MyGUI::EditBox *sender) @@ -138,9 +138,9 @@ namespace MWGui mSaveNameEdit->setCaption (""); if (mSaving) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mSaveNameEdit); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mSaveNameEdit); else - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mSaveList); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mSaveList); center(); @@ -244,14 +244,11 @@ namespace MWGui void SaveGameDialog::onConfirmationCancel() { - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mSaveList); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mSaveList); } void SaveGameDialog::accept(bool reallySure) { - // Remove for MyGUI 3.2.2 - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(nullptr); - if (mSaving) { // If overwriting an existing slot, ask for confirmation first @@ -334,7 +331,7 @@ namespace MWGui void SaveGameDialog::onCharacterAccept(MyGUI::ComboBox* sender, size_t pos) { // Give key focus to save list so we can confirm the selection with Enter - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mSaveList); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mSaveList); } void SaveGameDialog::fillSaveList() diff --git a/apps/openmw/mwgui/scrollwindow.cpp b/apps/openmw/mwgui/scrollwindow.cpp index f2c967da4e..adbbaba15f 100644 --- a/apps/openmw/mwgui/scrollwindow.cpp +++ b/apps/openmw/mwgui/scrollwindow.cpp @@ -1,6 +1,7 @@ #include "scrollwindow.hpp" #include +#include #include #include @@ -66,7 +67,7 @@ namespace MWGui setTakeButtonShow(showTakeButton); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mCloseButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mCloseButton); } void ScrollWindow::onKeyButtonPressed(MyGUI::Widget *sender, MyGUI::KeyCode key, MyGUI::Char character) diff --git a/apps/openmw/mwgui/settingswindow.cpp b/apps/openmw/mwgui/settingswindow.cpp index c1483ff73b..78d3e7d956 100644 --- a/apps/openmw/mwgui/settingswindow.cpp +++ b/apps/openmw/mwgui/settingswindow.cpp @@ -6,6 +6,7 @@ #include #include #include +#include #include @@ -615,7 +616,7 @@ namespace MWGui highlightCurrentResolution(); updateControlsBox(); resetScrollbars(); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mOkButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mOkButton); } void SettingsWindow::onWindowResize(MyGUI::Window *_sender) diff --git a/apps/openmw/mwgui/spellcreationdialog.cpp b/apps/openmw/mwgui/spellcreationdialog.cpp index 23f24e321f..03e6c77f8a 100644 --- a/apps/openmw/mwgui/spellcreationdialog.cpp +++ b/apps/openmw/mwgui/spellcreationdialog.cpp @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -431,7 +432,7 @@ namespace MWGui void SpellCreationDialog::onOpen() { center(); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mNameEdit); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mNameEdit); } void SpellCreationDialog::onReferenceUnavailable () diff --git a/apps/openmw/mwgui/spellwindow.cpp b/apps/openmw/mwgui/spellwindow.cpp index ce0700e505..15cce183a5 100644 --- a/apps/openmw/mwgui/spellwindow.cpp +++ b/apps/openmw/mwgui/spellwindow.cpp @@ -83,7 +83,7 @@ namespace MWGui // Reset the filter focus when opening the window MyGUI::Widget* focus = MyGUI::InputManager::getInstance().getKeyFocusWidget(); if (focus == mFilterEdit) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(nullptr); + MyGUI::InputManager::getInstance().resetKeyFocusWidget(); updateSpells(); } diff --git a/apps/openmw/mwgui/textinput.cpp b/apps/openmw/mwgui/textinput.cpp index 54f2d3be9b..4cc7a576be 100644 --- a/apps/openmw/mwgui/textinput.cpp +++ b/apps/openmw/mwgui/textinput.cpp @@ -5,6 +5,7 @@ #include #include +#include namespace MWGui { @@ -23,7 +24,7 @@ namespace MWGui okButton->eventMouseButtonClick += MyGUI::newDelegate(this, &TextInputDialog::onOkClicked); // Make sure the edit box has focus - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mTextEdit); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mTextEdit); } void TextInputDialog::setNextButtonShow(bool shown) @@ -46,7 +47,7 @@ namespace MWGui { WindowModal::onOpen(); // Make sure the edit box has focus - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mTextEdit); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mTextEdit); } // widget controls @@ -56,7 +57,7 @@ namespace MWGui if (mTextEdit->getCaption() == "") { MWBase::Environment::get().getWindowManager()->messageBox ("#{sNotifyMessage37}"); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget (mTextEdit); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mTextEdit); } else eventDone(this); diff --git a/apps/openmw/mwgui/tradewindow.cpp b/apps/openmw/mwgui/tradewindow.cpp index f2742d17d8..88e5be365d 100644 --- a/apps/openmw/mwgui/tradewindow.cpp +++ b/apps/openmw/mwgui/tradewindow.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include @@ -44,9 +45,6 @@ namespace namespace MWGui { - const float TradeWindow::sBalanceChangeInitialPause = 0.5f; - const float TradeWindow::sBalanceChangeInterval = 0.1f; - TradeWindow::TradeWindow() : WindowBase("openmw_trade_window.layout") , mSortModel(nullptr) @@ -138,7 +136,7 @@ namespace MWGui onFilterChanged(mFilterAll); - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mTotalBalance); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mTotalBalance); } void TradeWindow::onFrame(float dt) @@ -382,10 +380,9 @@ namespace MWGui void TradeWindow::addRepeatController(MyGUI::Widget *widget) { - MyGUI::ControllerItem* item = MyGUI::ControllerManager::getInstance().createItem(Controllers::ControllerRepeatEvent::getClassTypeName()); - Controllers::ControllerRepeatEvent* controller = item->castType(); - controller->eventRepeatClick += MyGUI::newDelegate(this, &TradeWindow::onRepeatClick); - controller->setRepeat(sBalanceChangeInitialPause, sBalanceChangeInterval); + MyGUI::ControllerItem* item = MyGUI::ControllerManager::getInstance().createItem(MyGUI::ControllerRepeatClick::getClassTypeName()); + MyGUI::ControllerRepeatClick* controller = static_cast(item); + controller->eventRepeatClick += newDelegate(this, &TradeWindow::onRepeatClick); MyGUI::ControllerManager::getInstance().addItem(widget, controller); } diff --git a/apps/openmw/mwgui/waitdialog.cpp b/apps/openmw/mwgui/waitdialog.cpp index d18eaebdd0..eb36e3cb24 100644 --- a/apps/openmw/mwgui/waitdialog.cpp +++ b/apps/openmw/mwgui/waitdialog.cpp @@ -93,9 +93,9 @@ namespace MWGui } if (mUntilHealedButton->getVisible()) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mUntilHealedButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mUntilHealedButton); else - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mWaitButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mWaitButton); } bool WaitDialog::exit() @@ -222,7 +222,7 @@ namespace MWGui { mHourText->setCaptionWithReplacing (MyGUI::utility::toString(position+1) + " #{sRestMenu2}"); mManualHours = position+1; - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mWaitButton); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mWaitButton); } void WaitDialog::onKeyButtonPressed(MyGUI::Widget *sender, MyGUI::KeyCode key, MyGUI::Char character) diff --git a/apps/openmw/mwgui/widgets.cpp b/apps/openmw/mwgui/widgets.cpp index b9b6c18e43..6e3e081a91 100644 --- a/apps/openmw/mwgui/widgets.cpp +++ b/apps/openmw/mwgui/widgets.cpp @@ -530,99 +530,5 @@ namespace MWGui assignWidget(mBarWidget, "Bar"); assignWidget(mBarTextWidget, "BarText"); } - - MWScrollBar::MWScrollBar() - : mEnableRepeat(true) - , mRepeatTriggerTime(0.5f) - , mRepeatStepTime(0.1f) - , mIsIncreasing(true) - { - ScrollBar::setRepeatEnabled(false); - } - - MWScrollBar::~MWScrollBar() - { - } - - void MWScrollBar::initialiseOverride() - { - ScrollBar::initialiseOverride(); - - if(mWidgetStart) - { - mWidgetStart->eventMouseButtonPressed += MyGUI::newDelegate(this, &MWScrollBar::onDecreaseButtonPressed); - mWidgetStart->eventMouseButtonReleased += MyGUI::newDelegate(this, &MWScrollBar::onDecreaseButtonReleased); - } - if(mWidgetEnd) - { - mWidgetEnd->eventMouseButtonPressed += MyGUI::newDelegate(this, &MWScrollBar::onIncreaseButtonPressed); - mWidgetEnd->eventMouseButtonReleased += MyGUI::newDelegate(this, &MWScrollBar::onIncreaseButtonReleased); - } - } - - void MWScrollBar::setRepeat(float trigger, float step) - { - mRepeatTriggerTime = trigger; - mRepeatStepTime = step; - } - - void MWScrollBar::repeatClick(MyGUI::Widget* _widget, MyGUI::ControllerItem* _controller) - { - int stepSize = mScrollPage; - - if(mIsIncreasing && mScrollPosition < mScrollRange-1) - { - if(mScrollPosition + stepSize > mScrollRange-1) - mScrollPosition = mScrollRange-1; - else - mScrollPosition += stepSize; - - eventScrollChangePosition(this, mScrollPosition); - updateTrack(); - } - else if(!mIsIncreasing && mScrollPosition > 0) - { - int newPos = mScrollPosition - stepSize; - if(newPos < 0) - mScrollPosition = 0; - else - mScrollPosition -= stepSize; - - eventScrollChangePosition(this, mScrollPosition); - updateTrack(); - } - } - - void MWScrollBar::onDecreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id) - { - mIsIncreasing = false; - MyGUI::ControllerItem* item = MyGUI::ControllerManager::getInstance().createItem(MWGui::Controllers::ControllerRepeatEvent::getClassTypeName()); - MWGui::Controllers::ControllerRepeatEvent* controller = item->castType(); - controller->eventRepeatClick += newDelegate(this, &MWScrollBar::repeatClick); - controller->setEnabled(mEnableRepeat); - controller->setRepeat(mRepeatTriggerTime, mRepeatStepTime); - MyGUI::ControllerManager::getInstance().addItem(this, controller); - } - - void MWScrollBar::onDecreaseButtonReleased(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id) - { - MyGUI::ControllerManager::getInstance().removeItem(this); - } - - void MWScrollBar::onIncreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id) - { - mIsIncreasing = true; - MyGUI::ControllerItem* item = MyGUI::ControllerManager::getInstance().createItem(MWGui::Controllers::ControllerRepeatEvent::getClassTypeName()); - MWGui::Controllers::ControllerRepeatEvent* controller = item->castType(); - controller->eventRepeatClick += newDelegate(this, &MWScrollBar::repeatClick); - controller->setEnabled(mEnableRepeat); - controller->setRepeat(mRepeatTriggerTime, mRepeatStepTime); - MyGUI::ControllerManager::getInstance().addItem(this, controller); - } - - void MWScrollBar::onIncreaseButtonReleased(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id) - { - MyGUI::ControllerManager::getInstance().removeItem(this); - } } } diff --git a/apps/openmw/mwgui/widgets.hpp b/apps/openmw/mwgui/widgets.hpp index a39bfad3f2..6eab431d62 100644 --- a/apps/openmw/mwgui/widgets.hpp +++ b/apps/openmw/mwgui/widgets.hpp @@ -303,33 +303,6 @@ namespace MWGui MyGUI::TextBox* mBarTextWidget; }; typedef MWDynamicStat* MWDynamicStatPtr; - - // Should be removed when upgrading to MyGUI 3.2.2 (current git), it has ScrollBar autorepeat support - class MWScrollBar : public MyGUI::ScrollBar - { - MYGUI_RTTI_DERIVED(MWScrollBar) - - public: - MWScrollBar(); - virtual ~MWScrollBar(); - - void setRepeat(float trigger, float step); - - protected: - virtual void initialiseOverride(); - void repeatClick(MyGUI::Widget* _widget, MyGUI::ControllerItem* _controller); - - bool mEnableRepeat; - float mRepeatTriggerTime; - float mRepeatStepTime; - bool mIsIncreasing; - - private: - void onDecreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id); - void onDecreaseButtonReleased(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id); - void onIncreaseButtonPressed(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id); - void onIncreaseButtonReleased(MyGUI::Widget* _sender, int _left, int _top, MyGUI::MouseButton _id); - }; } } diff --git a/apps/openmw/mwgui/windowbase.cpp b/apps/openmw/mwgui/windowbase.cpp index 0239a4ef84..e7c975aa2f 100644 --- a/apps/openmw/mwgui/windowbase.cpp +++ b/apps/openmw/mwgui/windowbase.cpp @@ -55,18 +55,6 @@ void WindowBase::setVisible(bool visible) onOpen(); else if (wasVisible) onClose(); - - // This is needed as invisible widgets can retain key focus. - // Remove for MyGUI 3.2.2 - if (!visible) - { - MyGUI::Widget* keyFocus = MyGUI::InputManager::getInstance().getKeyFocusWidget(); - while (keyFocus != mMainWidget && keyFocus != nullptr) - keyFocus = keyFocus->getParent(); - - if (keyFocus == mMainWidget) - MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(nullptr); - } } bool WindowBase::isVisible() diff --git a/apps/openmw/mwgui/windowmanagerimp.cpp b/apps/openmw/mwgui/windowmanagerimp.cpp index f8ebc47489..42afc0db8f 100644 --- a/apps/openmw/mwgui/windowmanagerimp.cpp +++ b/apps/openmw/mwgui/windowmanagerimp.cpp @@ -217,7 +217,6 @@ namespace MWGui MyGUI::FactoryManager::getInstance().registerFactory("Widget"); MyGUI::FactoryManager::getInstance().registerFactory("Widget"); MyGUI::FactoryManager::getInstance().registerFactory("Widget"); - MyGUI::FactoryManager::getInstance().registerFactory("Widget"); MyGUI::FactoryManager::getInstance().registerFactory("Widget"); MyGUI::FactoryManager::getInstance().registerFactory("Widget"); MyGUI::FactoryManager::getInstance().registerFactory("Layer"); @@ -236,7 +235,6 @@ namespace MWGui MyGUI::ResourceManager::getInstance().unregisterLoadXmlDelegate("Resource"); MyGUI::ResourceManager::getInstance().registerLoadXmlDelegate("Resource") = newDelegate(this, &WindowManager::loadFontDelegate); - MyGUI::FactoryManager::getInstance().registerFactory("Controller"); MyGUI::FactoryManager::getInstance().registerFactory("Controller"); MyGUI::FactoryManager::getInstance().registerFactory("Resource", "ResourceImageSetPointer"); @@ -700,7 +698,7 @@ namespace MWGui setCursorVisible(!gameMode); if (gameMode) - setKeyFocusWidget (nullptr); + MyGUI::InputManager::getInstance().resetKeyFocusWidget(); // Icons of forced hidden windows are displayed setMinimapVisibility((mAllowed & GW_Map) && (!mMap->pinned() || (mForceHidden & GW_Map))); @@ -1672,16 +1670,6 @@ namespace MWGui } } - // Remove this method for MyGUI 3.2.2 - void WindowManager::setKeyFocusWidget(MyGUI::Widget *widget) - { - if (widget == nullptr) - MyGUI::InputManager::getInstance().resetKeyFocusWidget(); - else - MyGUI::InputManager::getInstance().setKeyFocusWidget(widget); - onKeyFocusChanged(widget); - } - void WindowManager::onKeyFocusChanged(MyGUI::Widget *widget) { if (widget && widget->castType(false)) @@ -1874,7 +1862,7 @@ namespace MWGui sizeVideo(screenSize.width, screenSize.height); MyGUI::Widget* oldKeyFocus = MyGUI::InputManager::getInstance().getKeyFocusWidget(); - setKeyFocusWidget(mVideoWidget); + MyGUI::InputManager::getInstance().setKeyFocusWidget(mVideoWidget); mVideoBackground->setVisible(true); @@ -1912,7 +1900,7 @@ namespace MWGui MWBase::Environment::get().getSoundManager()->resumeSounds(); - setKeyFocusWidget(oldKeyFocus); + MyGUI::InputManager::getInstance().setKeyFocusWidget(oldKeyFocus); setCursorVisible(cursorWasVisible); diff --git a/apps/openmw/mwgui/windowmanagerimp.hpp b/apps/openmw/mwgui/windowmanagerimp.hpp index f460d8bf16..2d16bb6e49 100644 --- a/apps/openmw/mwgui/windowmanagerimp.hpp +++ b/apps/openmw/mwgui/windowmanagerimp.hpp @@ -147,9 +147,6 @@ namespace MWGui /// (and will continually update the window while doing so) virtual void playVideo(const std::string& name, bool allowSkipping); - /// Warning: do not use MyGUI::InputManager::setKeyFocusWidget directly. Instead use this. - virtual void setKeyFocusWidget (MyGUI::Widget* widget); - virtual void setNewGame(bool newgame); virtual void pushGuiMode(GuiMode mode, const MWWorld::Ptr& arg); diff --git a/files/mygui/openmw_chargen_race.layout b/files/mygui/openmw_chargen_race.layout index ea7ec6179f..3b0a0191f4 100644 --- a/files/mygui/openmw_chargen_race.layout +++ b/files/mygui/openmw_chargen_race.layout @@ -14,7 +14,7 @@ - + diff --git a/files/mygui/openmw_count_window.layout b/files/mygui/openmw_count_window.layout index 2e083dceac..d507ad31ad 100644 --- a/files/mygui/openmw_count_window.layout +++ b/files/mygui/openmw_count_window.layout @@ -11,7 +11,7 @@ - + diff --git a/files/mygui/openmw_debug_window.skin.xml b/files/mygui/openmw_debug_window.skin.xml index 587101b7f4..1421b52a1d 100644 --- a/files/mygui/openmw_debug_window.skin.xml +++ b/files/mygui/openmw_debug_window.skin.xml @@ -12,6 +12,6 @@ - + diff --git a/files/mygui/openmw_dialogue_window.layout b/files/mygui/openmw_dialogue_window.layout index 1ed3995728..d1f96121e9 100644 --- a/files/mygui/openmw_dialogue_window.layout +++ b/files/mygui/openmw_dialogue_window.layout @@ -11,7 +11,7 @@ - + diff --git a/files/mygui/openmw_edit.skin.xml b/files/mygui/openmw_edit.skin.xml index a53becdaad..07c3557e07 100644 --- a/files/mygui/openmw_edit.skin.xml +++ b/files/mygui/openmw_edit.skin.xml @@ -37,7 +37,7 @@ - + @@ -54,7 +54,7 @@ - + diff --git a/files/mygui/openmw_edit_effect.layout b/files/mygui/openmw_edit_effect.layout index c2429d24bf..3b26286c4c 100644 --- a/files/mygui/openmw_edit_effect.layout +++ b/files/mygui/openmw_edit_effect.layout @@ -37,7 +37,7 @@ - + @@ -46,7 +46,7 @@ - + @@ -67,7 +67,7 @@ - + @@ -87,7 +87,7 @@ - + diff --git a/files/mygui/openmw_list.skin.xml b/files/mygui/openmw_list.skin.xml index 9af0e79660..8795d9bbdf 100644 --- a/files/mygui/openmw_list.skin.xml +++ b/files/mygui/openmw_list.skin.xml @@ -130,7 +130,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -154,7 +154,7 @@ - + diff --git a/files/mygui/openmw_map_window.skin.xml b/files/mygui/openmw_map_window.skin.xml index f6c0996308..cb964758db 100644 --- a/files/mygui/openmw_map_window.skin.xml +++ b/files/mygui/openmw_map_window.skin.xml @@ -6,7 +6,7 @@ - - + + diff --git a/files/mygui/openmw_scroll.skin.xml b/files/mygui/openmw_scroll.skin.xml index cff0ad7eb3..f946a61ac9 100644 --- a/files/mygui/openmw_scroll.skin.xml +++ b/files/mygui/openmw_scroll.skin.xml @@ -5,13 +5,13 @@ - + - + diff --git a/files/mygui/openmw_settings_window.layout b/files/mygui/openmw_settings_window.layout index 1b9901d8c5..ce1fb15ed5 100644 --- a/files/mygui/openmw_settings_window.layout +++ b/files/mygui/openmw_settings_window.layout @@ -10,7 +10,7 @@ - + @@ -31,7 +31,7 @@ - + @@ -52,7 +52,7 @@ - + @@ -77,7 +77,7 @@ - + @@ -144,7 +144,7 @@ - + @@ -155,7 +155,7 @@ - + @@ -166,7 +166,7 @@ - + @@ -177,7 +177,7 @@ - + @@ -188,7 +188,7 @@ - + @@ -234,7 +234,7 @@ - + @@ -308,7 +308,7 @@ - + @@ -331,7 +331,7 @@ - + @@ -363,7 +363,7 @@ - + @@ -376,7 +376,7 @@ - + @@ -388,7 +388,7 @@ - + diff --git a/files/mygui/openmw_wait_dialog.layout b/files/mygui/openmw_wait_dialog.layout index b02db37640..460002b879 100644 --- a/files/mygui/openmw_wait_dialog.layout +++ b/files/mygui/openmw_wait_dialog.layout @@ -16,7 +16,7 @@ - +