diff --git a/src/interface/Textbox.cpp b/src/interface/Textbox.cpp index bdad12760..7b79974a6 100644 --- a/src/interface/Textbox.cpp +++ b/src/interface/Textbox.cpp @@ -215,10 +215,12 @@ void Textbox::pasteIntoSelection() if(limit!=std::string::npos) { - if(limit-backingText.length() > 0) - newText.substr(0, limit-backingText.length()); + if(limit-backingText.length() >= 0) + newText = newText.substr(0, limit-backingText.length()); + else + newText = ""; } - else if(Graphics::textwidth((char*)std::string(backingText+newText).c_str()) > regionWidth) + else if(!multiline && Graphics::textwidth((char*)std::string(backingText+newText).c_str()) > regionWidth) { int pLimit = regionWidth - Graphics::textwidth((char*)backingText.c_str()); int cIndex = Graphics::CharIndexAtPosition((char *)newText.c_str(), pLimit, 0); @@ -249,7 +251,10 @@ void Textbox::pasteIntoSelection() if(multiline) updateMultiline(); updateSelection(); - TextPosition(text); + if(multiline) + TextPosition(textLines); + else + TextPosition(text); if(cursor) { @@ -457,7 +462,10 @@ void Textbox::OnVKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool if(multiline) updateMultiline(); updateSelection(); - TextPosition(text); + if(multiline) + TextPosition(textLines); + else + TextPosition(text); if(cursor) { diff --git a/src/save/ServerSaveActivity.cpp b/src/save/ServerSaveActivity.cpp index 3bf59df76..ef674e237 100644 --- a/src/save/ServerSaveActivity.cpp +++ b/src/save/ServerSaveActivity.cpp @@ -93,6 +93,7 @@ ServerSaveActivity::ServerSaveActivity(SaveInfo save, ServerSaveActivity::SaveUp descriptionField = new ui::Textbox(ui::Point(8, 65), ui::Point((Size.X/2)-16, Size.Y-(65+16+4)), save.GetDescription(), "[save description]"); descriptionField->SetMultiline(true); + descriptionField->SetLimit(254); descriptionField->Appearance.VerticalAlign = ui::Appearance::AlignTop; descriptionField->Appearance.HorizontalAlign = ui::Appearance::AlignLeft; AddComponent(descriptionField);