changeset 13543:2896c84f76d7 draft

(svn r18065) -Codechange/Fix: account for the text in WWT_FRAMEs when determining the minimum width
author rubidium <rubidium@openttd.org>
date Fri, 13 Nov 2009 20:23:48 +0000
parents 026112e09c7e
children 83319d22ffa9
files src/widget.cpp
diffstat 1 files changed, 9 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/widget.cpp
+++ b/src/widget.cpp
@@ -1722,13 +1722,21 @@
 		this->fill_y = this->child->fill_y;
 		this->resize_x = this->child->resize_x;
 		this->resize_y = this->child->resize_y;
+
+		/* Account for the size of the frame's text if that exists */
+		if (w != NULL && this->type == WWT_FRAME) {
+			if (this->index >= 0) w->SetStringParameters(this->index);
+			this->smallest_x = max(this->smallest_x, GetStringBoundingBox(this->widget_data).width + WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT);
+		}
 	} else {
 		Dimension d = {this->min_x, this->min_y};
 		Dimension resize  = {this->resize_x, this->resize_y};
 		if (w != NULL) { // A non-NULL window pointer acts as switch to turn dynamic widget size on.
 			if (this->type == WWT_FRAME || this->type == WWT_INSET) {
 				if (this->index >= 0) w->SetStringParameters(this->index);
-				d = maxdim(d, GetStringBoundingBox(this->widget_data));
+				Dimension background = GetStringBoundingBox(this->widget_data);
+				background.width += (this->type == WWT_FRAME) ? (WD_FRAMETEXT_LEFT + WD_FRAMERECT_RIGHT) : (WD_INSET_LEFT + WD_INSET_RIGHT);
+				d = maxdim(d, background);
 			}
 			if (this->index >= 0) {
 				static const Dimension padding = {0, 0};