From 2b5154f0a23d59a856a001895f90c621c2152f5a Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 13 Nov 2009 20:23:48 +0000 Subject: (svn r18065) -Codechange/Fix: account for the text in WWT_FRAMEs when determining the minimum width --- src/widget.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/widget.cpp') diff --git a/src/widget.cpp b/src/widget.cpp index c069970fb..21a3fc1f8 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -1722,13 +1722,21 @@ void NWidgetBackground::SetupSmallestSize(Window *w, bool init_array) 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}; -- cgit v1.2.3-54-g00ecf