diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-07-17 21:21:20 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-07-17 21:21:20 (GMT) |
| commit | d91d4223b8ada310dd9df5f9950c66f534b2f008 (patch) | |
| tree | 44d9a4d1d724553085535a516231cc6ea9987c02 /src/interface/Textbox.cpp | |
| parent | 2479b8664d5c4cdd47208bdbca970828ba1a2520 (diff) | |
| download | powder-d91d4223b8ada310dd9df5f9950c66f534b2f008.zip powder-d91d4223b8ada310dd9df5f9950c66f534b2f008.tar.gz | |
Improve spacing of multiline labels, multiline cursor for Textbox, autoresizing textbox for PreviewView comments
Diffstat (limited to 'src/interface/Textbox.cpp')
| -rw-r--r-- | src/interface/Textbox.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/interface/Textbox.cpp b/src/interface/Textbox.cpp index 66af516..3180cb7 100644 --- a/src/interface/Textbox.cpp +++ b/src/interface/Textbox.cpp @@ -42,11 +42,11 @@ void Textbox::SetText(std::string newText) if(cursor) { - cursorPosition = Graphics::textnwidth((char *)text.c_str(), cursor); + Graphics::PositionAtCharIndex(multiline?((char*)textLines.c_str()):((char*)text.c_str()), cursor, cursorPositionX, cursorPositionY); } else { - cursorPosition = 0; + cursorPositionY = cursorPositionX = 0; } } @@ -175,25 +175,25 @@ void Textbox::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool if(cursor) { - cursorPosition = Graphics::textnwidth((char *)text.c_str(), cursor); + Graphics::PositionAtCharIndex(multiline?((char*)textLines.c_str()):((char*)text.c_str()), cursor, cursorPositionX, cursorPositionY); } else { - cursorPosition = 0; + cursorPositionY = cursorPositionX = 0; } } void Textbox::OnMouseClick(int x, int y, unsigned button) { mouseDown = true; - cursor = Graphics::CharIndexAtPosition((char*)text.c_str(), x-textPosition.X, y-textPosition.Y); + cursor = Graphics::CharIndexAtPosition(multiline?((char*)textLines.c_str()):((char*)text.c_str()), x-textPosition.X, y-textPosition.Y); if(cursor) { - cursorPosition = Graphics::textnwidth((char *)text.c_str(), cursor); + Graphics::PositionAtCharIndex(multiline?((char*)textLines.c_str()):((char*)text.c_str()), cursor, cursorPositionX, cursorPositionY); } else { - cursorPosition = 0; + cursorPositionY = cursorPositionX = 0; } Label::OnMouseClick(x, y, button); } @@ -208,14 +208,14 @@ void Textbox::OnMouseMoved(int localx, int localy, int dx, int dy) { if(mouseDown) { - cursor = Graphics::CharIndexAtPosition((char*)text.c_str(), localx-textPosition.X, localy-textPosition.Y); + cursor = Graphics::CharIndexAtPosition(multiline?((char*)textLines.c_str()):((char*)text.c_str()), localx-textPosition.X, localy-textPosition.Y); if(cursor) { - cursorPosition = Graphics::textnwidth((char *)text.c_str(), cursor); + Graphics::PositionAtCharIndex(multiline?((char*)textLines.c_str()):((char*)text.c_str()), cursor, cursorPositionX, cursorPositionY); } else { - cursorPosition = 0; + cursorPositionY = cursorPositionX = 0; } } Label::OnMouseMoved(localx, localy, dx, dy); @@ -229,7 +229,7 @@ void Textbox::Draw(const Point& screenPos) if(IsFocused()) { if(border) g->drawrect(screenPos.X, screenPos.Y, Size.X, Size.Y, 255, 255, 255, 255); - g->draw_line(screenPos.X+textPosition.X+cursorPosition, screenPos.Y+3, screenPos.X+textPosition.X+cursorPosition, screenPos.Y+12, 255, 255, 255, XRES+BARSIZE); + g->draw_line(screenPos.X+textPosition.X+cursorPositionX+1, screenPos.Y-2+textPosition.Y+cursorPositionY, screenPos.X+textPosition.X+cursorPositionX+1, screenPos.Y+10+textPosition.Y+cursorPositionY, 255, 255, 255, XRES+BARSIZE); } else { |
