diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/theme.cpp | 1 | ||||
-rw-r--r-- | src/gui/theme.h | 1 | ||||
-rw-r--r-- | src/gui/widgets/textfield.cpp | 12 | ||||
-rw-r--r-- | src/gui/widgets/textfield.h | 3 | ||||
-rw-r--r-- | src/guichan/widgets/textfield.cpp | 8 |
5 files changed, 15 insertions, 10 deletions
diff --git a/src/gui/theme.cpp b/src/gui/theme.cpp index 7b85c8764..730471ceb 100644 --- a/src/gui/theme.cpp +++ b/src/gui/theme.cpp @@ -696,6 +696,7 @@ static int readColorType(const std::string &type) { "BROWSERBOX", "TEXT", + "CARET", "SHADOW", "OUTLINE", "BORDER", diff --git a/src/gui/theme.h b/src/gui/theme.h index a32237be1..ee9352794 100644 --- a/src/gui/theme.h +++ b/src/gui/theme.h @@ -166,6 +166,7 @@ class Theme final : public Palette, public ConfigListener { BROWSERBOX = 0, TEXT, + CARET, SHADOW, OUTLINE, BORDER, diff --git a/src/gui/widgets/textfield.cpp b/src/gui/widgets/textfield.cpp index eb4e2f7cb..ac29eac25 100644 --- a/src/gui/widgets/textfield.cpp +++ b/src/gui/widgets/textfield.cpp @@ -56,10 +56,10 @@ TextField::TextField(const std::string &text, const bool loseFocusOnTab, mMinimum(0), mMaximum(0), mLoseFocusOnTab(loseFocusOnTab), - mLastEventPaste(false) + mLastEventPaste(false), + mCaretColor(&Theme::getThemeColor(Theme::CARET)) { setFrameSize(2); - mForegroundColor = Theme::getThemeColor(Theme::TEXTFIELD); if (instances == 0) @@ -440,3 +440,11 @@ void TextField::handleCopy() const std::string text = getText(); sendBuffer(text); } + +void TextField::drawCaret(gcn::Graphics* graphics, int x) +{ + const gcn::Rectangle clipArea = graphics->getCurrentClipArea(); + + graphics->setColor(*mCaretColor); + graphics->drawLine(x, clipArea.height - 2, x, 1); +} diff --git a/src/gui/widgets/textfield.h b/src/gui/widgets/textfield.h index 72d679052..97048ccba 100644 --- a/src/gui/widgets/textfield.h +++ b/src/gui/widgets/textfield.h @@ -104,6 +104,8 @@ class TextField : public gcn::TextField { mSendAlwaysEvents = b; } protected: + void drawCaret(gcn::Graphics* graphics, int x) override; + bool mSendAlwaysEvents; private: @@ -119,6 +121,7 @@ class TextField : public gcn::TextField unsigned mMaximum; bool mLoseFocusOnTab; int mLastEventPaste; + const gcn::Color *mCaretColor; }; #endif diff --git a/src/guichan/widgets/textfield.cpp b/src/guichan/widgets/textfield.cpp index 7a2bde46e..52aefee54 100644 --- a/src/guichan/widgets/textfield.cpp +++ b/src/guichan/widgets/textfield.cpp @@ -96,14 +96,6 @@ namespace gcn void TextField::drawCaret(Graphics* graphics, int x) { - // Check the current clip area as a clip area with a different - // size than the widget might have been pushed (which is the - // case in the draw method when we push a clip area after we have - // drawn a border). - const Rectangle clipArea = graphics->getCurrentClipArea(); - - graphics->setColor(mForegroundColor); - graphics->drawLine(x, clipArea.height - 2, x, 1); } void TextField::mousePressed(MouseEvent& mouseEvent) |