Prevent the multiline update for labels from going out of bounds

This commit is contained in:
Simon Robertshaw 2012-07-20 17:43:38 +01:00
parent 332fbfe590
commit 22990b680c

View File

@ -47,12 +47,14 @@ void Label::SetText(std::string text)
} }
void Label::updateMultiline() void Label::updateMultiline()
{
int lines = 1;
if(text.length()>0)
{ {
char * rawText = new char[text.length()+1]; char * rawText = new char[text.length()+1];
std::copy(text.begin(), text.end(), rawText); std::copy(text.begin(), text.end(), rawText);
rawText[text.length()] = 0; rawText[text.length()] = 0;
int lines = 1;
int currentWidth = 0; int currentWidth = 0;
char * lastSpace = NULL; char * lastSpace = NULL;
char * currentWord = rawText; char * currentWord = rawText;
@ -73,7 +75,7 @@ void Label::updateMultiline()
currentWidth += width; currentWidth += width;
if(nextSpace) if(nextSpace)
nextSpace[0] = ' '; nextSpace[0] = ' ';
if(!(currentWord = strchr(currentWord+1, ' '))) if(!currentWord[0] || !currentWord[1] || !(currentWord = strchr(currentWord+1, ' ')))
break; break;
} }
if(autoHeight) if(autoHeight)
@ -83,6 +85,15 @@ void Label::updateMultiline()
textLines = std::string(rawText); textLines = std::string(rawText);
delete[] rawText; delete[] rawText;
} }
else
{
if(autoHeight)
{
Size.Y = 12;
}
textLines = std::string("");
}
}
std::string Label::GetText() std::string Label::GetText()
{ {