diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-10-23 12:46:55 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-10-23 12:46:55 +0300 |
commit | 0dca3216743cd5deaffad45ca50fccd7280eb6bd (patch) | |
tree | bdb79a4ada8c4d80005f6d16138d39b9dacb95fc /src/gui/widgets/inttextfield.cpp | |
parent | c733ecf657fbe656b89a41d91fe0e0634312bf96 (diff) | |
download | manaplus-0dca3216743cd5deaffad45ca50fccd7280eb6bd.tar.gz manaplus-0dca3216743cd5deaffad45ca50fccd7280eb6bd.tar.bz2 manaplus-0dca3216743cd5deaffad45ca50fccd7280eb6bd.tar.xz manaplus-0dca3216743cd5deaffad45ca50fccd7280eb6bd.zip |
Fix inttextfield on SDL2.
This allow enter numbers for example in drop or split dialogs.
Diffstat (limited to 'src/gui/widgets/inttextfield.cpp')
-rw-r--r-- | src/gui/widgets/inttextfield.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/gui/widgets/inttextfield.cpp b/src/gui/widgets/inttextfield.cpp index a56023dc5..521d26d59 100644 --- a/src/gui/widgets/inttextfield.cpp +++ b/src/gui/widgets/inttextfield.cpp @@ -22,6 +22,10 @@ #include "gui/widgets/inttextfield.h" +#ifdef USE_SDL2 +#include "gui/sdlinput.h" +#endif + #include "input/keydata.h" #include "input/keyevent.h" @@ -58,8 +62,25 @@ void IntTextField::keyPressed(gcn::KeyEvent &event) event.consume(); } +#ifdef USE_SDL2 + const int val = event.getKey().getValue(); + if (val != Key::TEXTINPUT) + return; + + const std::string str = static_cast<KeyEvent*>(&event)->getText(); + if (str.empty()) + return; + const size_t sz = str.size(); + for (size_t f = 0; f < sz; f ++) + { + const char chr = str[f]; + if (chr < '0' || chr > '9') + return; + } +#else if (!event.getKey().isNumber()) return; +#endif TextField::keyPressed(event); |