(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
authorrubidium
Fri, 07 Sep 2007 21:15:32 +0000
changeset 7535 417613ef92fa
parent 7534 2e4dcc2c3bc9
child 7536 e9509b41fb11
(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
src/texteff.cpp
--- a/src/texteff.cpp	Fri Sep 07 21:11:12 2007 +0000
+++ b/src/texteff.cpp	Fri Sep 07 21:15:32 2007 +0000
@@ -259,6 +259,7 @@
 /** Text Effects */
 static void MarkTextEffectAreaDirty(TextEffect *te)
 {
+	/* Width and height of the text effect are doubled, so they are correct in both zoom out levels 1x and 2x. */
 	MarkAllViewportsDirty(
 		te->x,
 		te->y - 1,
@@ -321,6 +322,15 @@
 	te->params_1 = GetDParam(0);
 	te->params_2 = GetDParam(4);
 
+	/* Update width of text effect */
+	char buffer[100];
+	GetString(buffer, msg, lastof(buffer));
+	int w = GetStringBoundingBox(buffer).width;
+
+	/* Only allow to make it broader, so it completely covers the old text. That avoids remnants of the old text. */
+	int right_new = te->x + w;
+	if (te->right < right_new) te->right = right_new;
+
 	MarkTextEffectAreaDirty(te);
 }