1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-02-07 06:45:32 +00:00

Disable repeating for ENTER key in GUI

This commit is contained in:
Andrei Kortunov 2018-09-10 12:55:00 +04:00
parent 33a66b778f
commit 269ef7a559
11 changed files with 31 additions and 2 deletions

View file

@ -351,6 +351,7 @@ namespace MWBase
virtual const MWGui::TextColours& getTextColours() = 0; virtual const MWGui::TextColours& getTextColours() = 0;
virtual bool injectKeyPress(MyGUI::KeyCode key, unsigned int text, bool repeat) = 0; virtual bool injectKeyPress(MyGUI::KeyCode key, unsigned int text, bool repeat) = 0;
virtual bool injectKeyRelease(MyGUI::KeyCode key) = 0;
}; };
} }

View file

@ -65,6 +65,9 @@ namespace MWGui
void AlchemyWindow::onAccept(MyGUI::EditBox* sender) void AlchemyWindow::onAccept(MyGUI::EditBox* sender)
{ {
onCreateButtonClicked(sender); onCreateButtonClicked(sender);
// To do not spam onAccept() again and again
MWBase::Environment::get().getWindowManager()->injectKeyRelease(MyGUI::KeyCode::None);
} }
void AlchemyWindow::onCancelButtonClicked(MyGUI::Widget* _sender) void AlchemyWindow::onCancelButtonClicked(MyGUI::Widget* _sender)

View file

@ -73,8 +73,10 @@ namespace MWGui
void CountDialog::onEnterKeyPressed(MyGUI::EditBox* _sender) void CountDialog::onEnterKeyPressed(MyGUI::EditBox* _sender)
{ {
eventOkClicked(NULL, mSlider->getScrollPosition()+1); eventOkClicked(NULL, mSlider->getScrollPosition()+1);
setVisible(false); setVisible(false);
// To do not spam onEnterKeyPressed() again and again
MWBase::Environment::get().getWindowManager()->injectKeyRelease(MyGUI::KeyCode::None);
} }
void CountDialog::onEditValueChanged(int value) void CountDialog::onEditValueChanged(int value)

View file

@ -288,6 +288,9 @@ namespace MWGui
void EnchantingDialog::onAccept(MyGUI::EditBox *sender) void EnchantingDialog::onAccept(MyGUI::EditBox *sender)
{ {
onBuyButtonClicked(sender); onBuyButtonClicked(sender);
// To do not spam onAccept() again and again
MWBase::Environment::get().getWindowManager()->injectKeyRelease(MyGUI::KeyCode::None);
} }
void EnchantingDialog::onBuyButtonClicked(MyGUI::Widget* sender) void EnchantingDialog::onBuyButtonClicked(MyGUI::Widget* sender)

View file

@ -193,8 +193,10 @@ bool KeyboardNavigation::injectKeyPress(MyGUI::KeyCode key, unsigned int text, b
case MyGUI::KeyCode::NumpadEnter: case MyGUI::KeyCode::NumpadEnter:
case MyGUI::KeyCode::Space: case MyGUI::KeyCode::Space:
{ {
// We should disable repeating for activation keys
MyGUI::InputManager::getInstance().injectKeyRelease(MyGUI::KeyCode::None);
if (repeat) if (repeat)
return false; return true;
return accept(); return accept();
} }

View file

@ -127,6 +127,9 @@ namespace MWGui
void SaveGameDialog::onEditSelectAccept(MyGUI::EditBox *sender) void SaveGameDialog::onEditSelectAccept(MyGUI::EditBox *sender)
{ {
accept(); accept();
// To do not spam onEditSelectAccept() again and again
MWBase::Environment::get().getWindowManager()->injectKeyRelease(MyGUI::KeyCode::None);
} }
void SaveGameDialog::onOpen() void SaveGameDialog::onOpen()

View file

@ -420,6 +420,9 @@ namespace MWGui
void SpellCreationDialog::onAccept(MyGUI::EditBox *sender) void SpellCreationDialog::onAccept(MyGUI::EditBox *sender)
{ {
onBuyButtonClicked(sender); onBuyButtonClicked(sender);
// To do not spam onAccept() again and again
MWBase::Environment::get().getWindowManager()->injectKeyRelease(MyGUI::KeyCode::None);
} }
void SpellCreationDialog::onOpen() void SpellCreationDialog::onOpen()

View file

@ -65,6 +65,9 @@ namespace MWGui
void TextInputDialog::onTextAccepted(MyGUI::Edit* _sender) void TextInputDialog::onTextAccepted(MyGUI::Edit* _sender)
{ {
onOkClicked(_sender); onOkClicked(_sender);
// To do not spam onTextAccepted() again and again
MWBase::Environment::get().getWindowManager()->injectKeyRelease(MyGUI::KeyCode::None);
} }
std::string TextInputDialog::getTextInput() const std::string TextInputDialog::getTextInput() const

View file

@ -367,6 +367,9 @@ namespace MWGui
void TradeWindow::onAccept(MyGUI::EditBox *sender) void TradeWindow::onAccept(MyGUI::EditBox *sender)
{ {
onOfferButtonClicked(sender); onOfferButtonClicked(sender);
// To do not spam onAccept() again and again
MWBase::Environment::get().getWindowManager()->injectKeyRelease(MyGUI::KeyCode::None);
} }
void TradeWindow::onCancelButtonClicked(MyGUI::Widget* _sender) void TradeWindow::onCancelButtonClicked(MyGUI::Widget* _sender)

View file

@ -2091,6 +2091,11 @@ namespace MWGui
return true; return true;
} }
bool WindowManager::injectKeyRelease(MyGUI::KeyCode key)
{
return MyGUI::InputManager::getInstance().injectKeyRelease(key);
}
void WindowManager::GuiModeState::update(bool visible) void WindowManager::GuiModeState::update(bool visible)
{ {
for (unsigned int i=0; i<mWindows.size(); ++i) for (unsigned int i=0; i<mWindows.size(); ++i)

View file

@ -380,6 +380,7 @@ namespace MWGui
virtual const MWGui::TextColours& getTextColours(); virtual const MWGui::TextColours& getTextColours();
virtual bool injectKeyPress(MyGUI::KeyCode key, unsigned int text, bool repeat=false); virtual bool injectKeyPress(MyGUI::KeyCode key, unsigned int text, bool repeat=false);
virtual bool injectKeyRelease(MyGUI::KeyCode key);
private: private:
const MWWorld::ESMStore* mStore; const MWWorld::ESMStore* mStore;