1
0
Fork 0

Fix: Don't double-pad existing size when adding widget padding.

UpdateWidgetSize's size parameter already includes padding.
pull/10643/head
Peter Nelson 2023-04-11 18:45:42 +01:00 committed by PeterN
parent d93f96a442
commit 06b78a7299
3 changed files with 27 additions and 23 deletions

View File

@ -591,62 +591,63 @@ struct GenerateLandscapeWindow : public Window {
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
{ {
Dimension d{0, (uint)FONT_HEIGHT_NORMAL};
const StringID *strs = nullptr; const StringID *strs = nullptr;
switch (widget) { switch (widget) {
case WID_GL_HEIGHTMAP_HEIGHT_TEXT: case WID_GL_HEIGHTMAP_HEIGHT_TEXT:
SetDParam(0, MAX_TILE_HEIGHT); SetDParam(0, MAX_TILE_HEIGHT);
*size = GetStringBoundingBox(STR_JUST_INT); d = GetStringBoundingBox(STR_JUST_INT);
break; break;
case WID_GL_START_DATE_TEXT: case WID_GL_START_DATE_TEXT:
SetDParam(0, ConvertYMDToDate(MAX_YEAR, 0, 1)); SetDParam(0, ConvertYMDToDate(MAX_YEAR, 0, 1));
*size = maxdim(*size, GetStringBoundingBox(STR_BLACK_DATE_LONG)); d = GetStringBoundingBox(STR_BLACK_DATE_LONG);
break; break;
case WID_GL_MAPSIZE_X_PULLDOWN: case WID_GL_MAPSIZE_X_PULLDOWN:
case WID_GL_MAPSIZE_Y_PULLDOWN: case WID_GL_MAPSIZE_Y_PULLDOWN:
SetDParamMaxValue(0, MAX_MAP_SIZE); SetDParamMaxValue(0, MAX_MAP_SIZE);
*size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT)); d = GetStringBoundingBox(STR_JUST_INT);
break; break;
case WID_GL_SNOW_COVERAGE_TEXT: case WID_GL_SNOW_COVERAGE_TEXT:
SetDParamMaxValue(0, MAX_TILE_HEIGHT); SetDParamMaxValue(0, MAX_TILE_HEIGHT);
*size = maxdim(*size, GetStringBoundingBox(STR_MAPGEN_SNOW_COVERAGE_TEXT)); d = GetStringBoundingBox(STR_MAPGEN_SNOW_COVERAGE_TEXT);
break; break;
case WID_GL_DESERT_COVERAGE_TEXT: case WID_GL_DESERT_COVERAGE_TEXT:
SetDParamMaxValue(0, MAX_TILE_HEIGHT); SetDParamMaxValue(0, MAX_TILE_HEIGHT);
*size = maxdim(*size, GetStringBoundingBox(STR_MAPGEN_DESERT_COVERAGE_TEXT)); d = GetStringBoundingBox(STR_MAPGEN_DESERT_COVERAGE_TEXT);
break; break;
case WID_GL_HEIGHTMAP_SIZE_TEXT: case WID_GL_HEIGHTMAP_SIZE_TEXT:
SetDParam(0, this->x); SetDParam(0, this->x);
SetDParam(1, this->y); SetDParam(1, this->y);
*size = maxdim(*size, GetStringBoundingBox(STR_MAPGEN_HEIGHTMAP_SIZE)); d = GetStringBoundingBox(STR_MAPGEN_HEIGHTMAP_SIZE);
break; break;
case WID_GL_TOWN_PULLDOWN: case WID_GL_TOWN_PULLDOWN:
strs = _num_towns; strs = _num_towns;
SetDParamMaxValue(0, CUSTOM_TOWN_MAX_NUMBER); SetDParamMaxValue(0, CUSTOM_TOWN_MAX_NUMBER);
*size = maxdim(*size, GetStringBoundingBox(STR_NUM_CUSTOM_NUMBER)); d = GetStringBoundingBox(STR_NUM_CUSTOM_NUMBER);
break; break;
case WID_GL_INDUSTRY_PULLDOWN: case WID_GL_INDUSTRY_PULLDOWN:
strs = _num_inds; strs = _num_inds;
SetDParamMaxValue(0, IndustryPool::MAX_SIZE); SetDParamMaxValue(0, IndustryPool::MAX_SIZE);
*size = maxdim(*size, GetStringBoundingBox(STR_NUM_CUSTOM_NUMBER)); d = GetStringBoundingBox(STR_NUM_CUSTOM_NUMBER);
break; break;
case WID_GL_TERRAIN_PULLDOWN: case WID_GL_TERRAIN_PULLDOWN:
strs = _elevations; strs = _elevations;
SetDParamMaxValue(0, MAX_MAP_HEIGHT_LIMIT); SetDParamMaxValue(0, MAX_MAP_HEIGHT_LIMIT);
*size = maxdim(*size, GetStringBoundingBox(STR_TERRAIN_TYPE_CUSTOM_VALUE)); d = GetStringBoundingBox(STR_TERRAIN_TYPE_CUSTOM_VALUE);
break; break;
case WID_GL_WATER_PULLDOWN: case WID_GL_WATER_PULLDOWN:
strs = _sea_lakes; strs = _sea_lakes;
SetDParamMaxValue(0, CUSTOM_SEA_LEVEL_MAX_PERCENTAGE); SetDParamMaxValue(0, CUSTOM_SEA_LEVEL_MAX_PERCENTAGE);
*size = maxdim(*size, GetStringBoundingBox(STR_SEA_LEVEL_CUSTOM_PERCENTAGE)); d = GetStringBoundingBox(STR_SEA_LEVEL_CUSTOM_PERCENTAGE);
break; break;
case WID_GL_RIVER_PULLDOWN: strs = _rivers; break; case WID_GL_RIVER_PULLDOWN: strs = _rivers; break;
@ -654,14 +655,14 @@ struct GenerateLandscapeWindow : public Window {
case WID_GL_VARIETY_PULLDOWN: strs = _variety; break; case WID_GL_VARIETY_PULLDOWN: strs = _variety; break;
case WID_GL_HEIGHTMAP_ROTATION_PULLDOWN: strs = _rotation; break; case WID_GL_HEIGHTMAP_ROTATION_PULLDOWN: strs = _rotation; break;
case WID_GL_BORDERS_RANDOM: case WID_GL_BORDERS_RANDOM:
*size = maxdim(GetStringBoundingBox(STR_MAPGEN_BORDER_RANDOMIZE), GetStringBoundingBox(STR_MAPGEN_BORDER_MANUAL)); d = maxdim(GetStringBoundingBox(STR_MAPGEN_BORDER_RANDOMIZE), GetStringBoundingBox(STR_MAPGEN_BORDER_MANUAL));
break; break;
case WID_GL_WATER_NE: case WID_GL_WATER_NE:
case WID_GL_WATER_NW: case WID_GL_WATER_NW:
case WID_GL_WATER_SE: case WID_GL_WATER_SE:
case WID_GL_WATER_SW: case WID_GL_WATER_SW:
*size = maxdim(GetStringBoundingBox(STR_MAPGEN_BORDER_RANDOM), maxdim(GetStringBoundingBox(STR_MAPGEN_BORDER_WATER), GetStringBoundingBox(STR_MAPGEN_BORDER_FREEFORM))); d = maxdim(GetStringBoundingBox(STR_MAPGEN_BORDER_RANDOM), maxdim(GetStringBoundingBox(STR_MAPGEN_BORDER_WATER), GetStringBoundingBox(STR_MAPGEN_BORDER_FREEFORM)));
break; break;
case WID_GL_HEIGHTMAP_NAME_TEXT: case WID_GL_HEIGHTMAP_NAME_TEXT:
@ -673,11 +674,12 @@ struct GenerateLandscapeWindow : public Window {
} }
if (strs != nullptr) { if (strs != nullptr) {
while (*strs != INVALID_STRING_ID) { while (*strs != INVALID_STRING_ID) {
*size = maxdim(*size, GetStringBoundingBox(*strs++)); d = maxdim(d, GetStringBoundingBox(*strs++));
} }
} }
size->width += padding.width; d.width += padding.width;
size->height = std::max(size->height, (uint)(FONT_HEIGHT_NORMAL + padding.height)); d.height += padding.height;
*size = maxdim(*size, d);
} }
void OnClick(Point pt, int widget, int click_count) override void OnClick(Point pt, int widget, int click_count) override
@ -1158,9 +1160,10 @@ struct CreateScenarioWindow : public Window
default: default:
return; return;
} }
*size = maxdim(*size, GetStringBoundingBox(str)); Dimension d = GetStringBoundingBox(str);
size->width += padding.width; d.width += padding.width;
size->height += padding.height; d.height += padding.height;
*size = maxdim(*size, d);
} }
void OnClick(Point pt, int widget, int click_count) override void OnClick(Point pt, int widget, int click_count) override

View File

@ -242,9 +242,8 @@ public:
for (auto object_class_id : this->object_classes) { for (auto object_class_id : this->object_classes) {
ObjectClass *objclass = ObjectClass::Get(object_class_id); ObjectClass *objclass = ObjectClass::Get(object_class_id);
if (objclass->GetUISpecCount() == 0) continue; if (objclass->GetUISpecCount() == 0) continue;
size->width = std::max(size->width, GetStringBoundingBox(objclass->name).width); size->width = std::max(size->width, GetStringBoundingBox(objclass->name).width + padding.width);
} }
size->width += padding.width;
this->line_height = FONT_HEIGHT_NORMAL + padding.height; this->line_height = FONT_HEIGHT_NORMAL + padding.height;
resize->height = this->line_height; resize->height = this->line_height;
size->height = 5 * this->line_height; size->height = 5 * this->line_height;

View File

@ -2413,12 +2413,14 @@ struct VehicleDetailsWindow : Window {
break; break;
case WID_VD_SERVICE_INTERVAL_DROPDOWN: { case WID_VD_SERVICE_INTERVAL_DROPDOWN: {
Dimension d{0, 0};
StringID *strs = _service_interval_dropdown; StringID *strs = _service_interval_dropdown;
while (*strs != INVALID_STRING_ID) { while (*strs != INVALID_STRING_ID) {
*size = maxdim(*size, GetStringBoundingBox(*strs++)); d = maxdim(d, GetStringBoundingBox(*strs++));
} }
size->width += padding.width; d.width += padding.width;
size->height = FONT_HEIGHT_NORMAL + padding.height; d.height += padding.height;
*size = maxdim(*size, d);
break; break;
} }