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

@ -48,11 +48,13 @@ 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)
@ -82,6 +84,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()