summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gui/theme.cpp1
-rw-r--r--src/gui/theme.h1
-rw-r--r--src/gui/widgets/textfield.cpp12
-rw-r--r--src/gui/widgets/textfield.h3
-rw-r--r--src/guichan/widgets/textfield.cpp8
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)