diff options
Diffstat (limited to 'src/gui/widgets')
-rw-r--r-- | src/gui/widgets/textfield.cpp | 10 | ||||
-rw-r--r-- | src/gui/widgets/textfield.h | 7 |
2 files changed, 14 insertions, 3 deletions
diff --git a/src/gui/widgets/textfield.cpp b/src/gui/widgets/textfield.cpp index aef977d80..1906c5c32 100644 --- a/src/gui/widgets/textfield.cpp +++ b/src/gui/widgets/textfield.cpp @@ -64,7 +64,8 @@ TextField::TextField(const Widget2 *restrict const widget, mLastEventPaste(false), mPadding(1), mNumeric(false), - mLoseFocusOnTab(loseFocusOnTab) + mLoseFocusOnTab(loseFocusOnTab), + mAllowSpecialActions(true) { setFrameSize(2); mForegroundColor = getThemeColor(Theme::TEXTFIELD); @@ -397,8 +398,11 @@ void TextField::handleCtrlKeys(const int action, bool &consumed) } case Input::KEY_GUI_B: { - moveCaretBack(); - consumed = true; + if (mAllowSpecialActions) + { + moveCaretBack(); + consumed = true; + } break; } case Input::KEY_GUI_F: diff --git a/src/gui/widgets/textfield.h b/src/gui/widgets/textfield.h index c459d34f7..4c1b4bffc 100644 --- a/src/gui/widgets/textfield.h +++ b/src/gui/widgets/textfield.h @@ -139,6 +139,12 @@ class TextField : public gcn::TextField, void caretDeleteWord(); + void setAllowSpecialActions(const bool b) + { mAllowSpecialActions = b; } + + std::string getTextBeforeCaret() const + { return mText.substr(0, mCaretPosition); } + protected: void drawCaret(Graphics* graphics, int x) override final; @@ -166,6 +172,7 @@ class TextField : public gcn::TextField, int mPadding; bool mNumeric; bool mLoseFocusOnTab; + bool mAllowSpecialActions; }; #endif // GUI_WIDGETS_TEXTFIELD_H |