From 36576371c05edf9a3498196d7ebdb8824a6910d1 Mon Sep 17 00:00:00 2001 From: alberth Date: Sat, 18 Jul 2009 10:46:55 +0000 Subject: (svn r16871) -Codechange: Generalize GetWidgetContentSize to UpdateWidgetSize for better control over widget size and resize steps. --- src/town_gui.cpp | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'src/town_gui.cpp') diff --git a/src/town_gui.cpp b/src/town_gui.cpp index b8dfe4fcf..d017c04a7 100644 --- a/src/town_gui.cpp +++ b/src/town_gui.cpp @@ -643,18 +643,19 @@ public: } } - virtual Dimension GetWidgetContentSize(int widget) + virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize) { - Dimension d = {0, 0}; switch (widget) { case TDW_SORTNAME: case TDW_SORTPOPULATION: { - d = GetStringBoundingBox(this->nested_array[widget]->widget_data); - d.width += WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the word is centered, also looks nice. + Dimension d = GetStringBoundingBox(this->nested_array[widget]->widget_data); + d.width += padding.width + WD_SORTBUTTON_ARROW_WIDTH * 2; // Doubled since the word is centered, also looks nice. + d.height += padding.height; + *size = maxdim(*size, d); break; } - - case TDW_CENTERTOWN: + case TDW_CENTERTOWN: { + Dimension d = {0, 0}; for (uint i = 0; i < this->towns.Length(); i++) { const Town *t = this->towns[i]; @@ -664,15 +665,21 @@ public: SetDParam(1, 10000000); // 10^7 d = maxdim(d, GetStringBoundingBox(STR_TOWN_DIRECTORY_TOWN)); } - d.width += 2 + 2; // Text is rendered with 2 pixel offset at both sides. + d.width += padding.width + 2 + 2; // Text is rendered with 2 pixel offset at both sides. + d.height += padding.height; + *size = maxdim(*size, d); + resize->height = d.height; break; - - case TDW_EMPTYBOTTOM: + } + case TDW_EMPTYBOTTOM: { SetDParam(0, 1000000000); // 10^9 - d = GetStringBoundingBox(STR_TOWN_POPULATION); + Dimension d = GetStringBoundingBox(STR_TOWN_POPULATION); + d.width += padding.width; + d.height += padding.height; + *size = maxdim(*size, d); break; + } } - return d; } virtual void OnClick(Point pt, int widget) -- cgit v1.2.3-54-g00ecf