summaryrefslogtreecommitdiff
path: root/src/gui/textbox.cpp
diff options
context:
space:
mode:
authorIra Rice <irarice@gmail.com>2008-10-12 06:39:34 +0000
committerIra Rice <irarice@gmail.com>2008-10-12 06:39:34 +0000
commit9f5f8e5c6579f3ecc7a6c245e063d5f2d96c62ff (patch)
tree5d6ff477702930af474e2e49f860b47c7f8505fb /src/gui/textbox.cpp
parentd5736cdc5700994520a53fdd560fd7ea946f6e63 (diff)
downloadmana-9f5f8e5c6579f3ecc7a6c245e063d5f2d96c62ff.tar.gz
mana-9f5f8e5c6579f3ecc7a6c245e063d5f2d96c62ff.tar.bz2
mana-9f5f8e5c6579f3ecc7a6c245e063d5f2d96c62ff.tar.xz
mana-9f5f8e5c6579f3ecc7a6c245e063d5f2d96c62ff.zip
This commit contains three things: one, after looking over how TMW was
handling the effects through the level up system, I determined that it wasn't bad, so I pulled it from TMW's SVN. Two, I edited the web page css so that it better matches the forum. And three, I patched text wrapping so that it'll fix up its display size based on all previous lines, except for the last line. That fix will come later, but for now, it'll be seen as a special case. While you'd like to think that just resending the string and starting the function over again would fix it, you'd be wrong. So it won't be patched until I think of a better way to handle that case.
Diffstat (limited to 'src/gui/textbox.cpp')
-rw-r--r--src/gui/textbox.cpp31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/gui/textbox.cpp b/src/gui/textbox.cpp
index 1a689ad5..f2d9b6ee 100644
--- a/src/gui/textbox.cpp
+++ b/src/gui/textbox.cpp
@@ -92,13 +92,31 @@ void TextBox::setTextWrapped(const std::string &text)
if (xpos > minWidth)
{
minWidth = xpos;
- if (minWidth > mMinWidth)
- {
- mMinWidth = minWidth;
- }
+ }
+ // The window wasn't big enough. Resize it and try again.
+ if (minWidth > mMinWidth)
+ {
+ mMinWidth = minWidth;
+ // This is a reaaaly ugly hack for getting the string stream
+ // to clear itself. Don't mess with the spacer in the stream
+ // reset, as well as removing the break. These are all there
+ // because there are several compilers that I have tried
+ // that do not properly reset the string stream.
+ // You have been warned!
+ wrappedStream.str(" ");
+ spacePos = 0;
+ lastNewlinePos = 0;
+ newlinePos = text.find("\n", lastNewlinePos);
+ line = text.substr(lastNewlinePos, newlinePos -
+ lastNewlinePos);
+ width = 0;
+ break;
+ }
+ else
+ {
+ wrappedStream << "\n" << word;
}
xpos = width;
- wrappedStream << "\n" << word;
}
lastSpacePos = spacePos + 1;
}
@@ -116,9 +134,10 @@ void TextBox::setTextWrapped(const std::string &text)
{
minWidth = xpos;
}
+ mMinWidth = minWidth;
if (minWidth > mMinWidth)
{
- mMinWidth = minWidth;
+ setTextWrapped(text);
}
gcn::TextBox::setText(wrappedStream.str());