Mercurial > hg > openttd
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};