From 0c7a1466e8c2c2dd6e15779368c87b62b2da601f Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 4 Oct 2012 13:24:01 +0300 Subject: Add text fileds cursor (caret) color. New theme colors: CARET --- data/graphics/gui/colors.xml | 1 + data/themes/blacknblack/colors.xml | 1 + data/themes/blackwood/colors.xml | 1 + data/themes/enchilado/colors.xml | 1 + data/themes/mana/colors.xml | 1 + data/themes/pink/colors.xml | 1 + data/themes/unity/colors.xml | 1 + data/themes/wood/colors.xml | 1 + src/gui/theme.cpp | 1 + src/gui/theme.h | 1 + src/gui/widgets/textfield.cpp | 12 ++++++++++-- src/gui/widgets/textfield.h | 3 +++ src/guichan/widgets/textfield.cpp | 8 -------- 13 files changed, 23 insertions(+), 10 deletions(-) diff --git a/data/graphics/gui/colors.xml b/data/graphics/gui/colors.xml index ca3d61926..71b09b172 100644 --- a/data/graphics/gui/colors.xml +++ b/data/graphics/gui/colors.xml @@ -1,6 +1,7 @@ + diff --git a/data/themes/blacknblack/colors.xml b/data/themes/blacknblack/colors.xml index e802e470f..aaf09d892 100644 --- a/data/themes/blacknblack/colors.xml +++ b/data/themes/blacknblack/colors.xml @@ -1,6 +1,7 @@ + diff --git a/data/themes/blackwood/colors.xml b/data/themes/blackwood/colors.xml index cbc7d1d69..3a21c5ef7 100644 --- a/data/themes/blackwood/colors.xml +++ b/data/themes/blackwood/colors.xml @@ -1,6 +1,7 @@ + diff --git a/data/themes/enchilado/colors.xml b/data/themes/enchilado/colors.xml index cb64bfc95..47f49d240 100644 --- a/data/themes/enchilado/colors.xml +++ b/data/themes/enchilado/colors.xml @@ -1,6 +1,7 @@ + diff --git a/data/themes/mana/colors.xml b/data/themes/mana/colors.xml index 59e87a047..bd001e28d 100644 --- a/data/themes/mana/colors.xml +++ b/data/themes/mana/colors.xml @@ -1,6 +1,7 @@ + diff --git a/data/themes/pink/colors.xml b/data/themes/pink/colors.xml index b8a0139f9..52ea46d6f 100644 --- a/data/themes/pink/colors.xml +++ b/data/themes/pink/colors.xml @@ -1,6 +1,7 @@ + diff --git a/data/themes/unity/colors.xml b/data/themes/unity/colors.xml index eaddc0147..098451a5b 100644 --- a/data/themes/unity/colors.xml +++ b/data/themes/unity/colors.xml @@ -1,6 +1,7 @@ + diff --git a/data/themes/wood/colors.xml b/data/themes/wood/colors.xml index b73b65e9c..2b07e8005 100644 --- a/data/themes/wood/colors.xml +++ b/data/themes/wood/colors.xml @@ -1,6 +1,7 @@ + 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) -- cgit v1.2.3-60-g2f50