diff options
Diffstat (limited to 'src/gui/widgets/textbox.cpp')
-rw-r--r-- | src/gui/widgets/textbox.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/gui/widgets/textbox.cpp b/src/gui/widgets/textbox.cpp index 51933708b..976d7f772 100644 --- a/src/gui/widgets/textbox.cpp +++ b/src/gui/widgets/textbox.cpp @@ -338,3 +338,32 @@ void TextBox::keyPressed(gcn::KeyEvent& keyEvent) keyEvent.consume(); } + +void TextBox::draw(gcn::Graphics* graphics) +{ + BLOCK_START("TextBox::draw") + if (mOpaque) + { + graphics->setColor(mBackgroundColor); + graphics->fillRectangle(gcn::Rectangle(0, 0, getWidth(), getHeight())); + } + + if (isFocused() && isEditable()) + { + drawCaret(graphics, getFont()->getWidth( + mTextRows[mCaretRow].substr(0, mCaretColumn)), + mCaretRow * getFont()->getHeight()); + } + + graphics->setColor(mForegroundColor); + gcn::Font *const font = getFont(); + graphics->setFont(font); + const int fontHeight = font->getHeight(); + + for (size_t i = 0, sz = mTextRows.size(); i < sz; i++) + { + // Move the text one pixel so we can have a caret before a letter. + font->drawString(graphics, mTextRows[i], 1, i * fontHeight); + } + BLOCK_END("TextBox::draw") +} |