diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/widget.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
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}; |