changeset 7535:a8b280b611d6 draft

(svn r11055) -Fix [FS#1214]: loading indicators would sometimes glitch due to a bounding box that was too small. Patch by frosch.
author rubidium <rubidium@openttd.org>
date Fri, 07 Sep 2007 21:15:32 +0000
parents cf1947f78acc
children 52edfe2a54b8
files src/texteff.cpp
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/texteff.cpp
+++ b/src/texteff.cpp
@@ -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);
 }