MCPcopy Create free account
hub / github.com/OpenTTD/OpenTTD / UpdateWidgetSize

Method UpdateWidgetSize

src/group_gui.cpp:456–524  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

454 }
455
456 void UpdateWidgetSize(WidgetID widget, Dimension &size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension &fill, [[maybe_unused]] Dimension &resize) override
457 {
458 switch (widget) {
459 case WID_GL_LIST_GROUP:
460 size.width = this->ComputeGroupInfoSize();
461 fill.height = resize.height = this->tiny_step_height;
462 break;
463
464 case WID_GL_ALL_VEHICLES:
465 case WID_GL_DEFAULT_VEHICLES:
466 size.width = this->ComputeGroupInfoSize();
467 size.height = this->tiny_step_height;
468 break;
469
470 case WID_GL_INFO: {
471 uint left_side = 0;
472 for (const StringID &label : {STR_GROUP_PROFIT_THIS_PERIOD, STR_GROUP_PROFIT_THIS_YEAR, STR_GROUP_PROFIT_LAST_PERIOD, STR_GROUP_PROFIT_LAST_YEAR, STR_GROUP_OCCUPANCY}) {
473 left_side = std::max(left_side, GetStringBoundingBox(label).width);
474 }
475
476 /* Guestimate that 12 digits is reasonable*/
477 uint right_side = std::max(
478 GetStringBoundingBox(GetString(STR_GROUP_OCCUPANCY_VALUE, GetParamMaxDigits(3))).width,
479 GetStringBoundingBox(GetString(STR_JUST_CURRENCY_LONG, GetParamMaxDigits(12))).width
480 );
481
482 size.width = left_side + WidgetDimensions::scaled.hsep_wide + right_side + padding.width;
483 break;
484 }
485
486 case WID_GL_SORT_BY_ORDER: {
487 Dimension d = GetStringBoundingBox(this->GetWidget<NWidgetCore>(widget)->GetString());
488 d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better.
489 d.height += padding.height;
490 size = maxdim(size, d);
491 break;
492 }
493
494 case WID_GL_LIST_VEHICLE:
495 this->ComputeGroupInfoSize();
496 fill.height = resize.height = GetVehicleListHeight(this->vli.vtype, this->tiny_step_height);
497 size.height = 4 * resize.height;
498 break;
499
500 case WID_GL_GROUP_BY_DROPDOWN:
501 size.width = GetStringListWidth(this->vehicle_group_by_names) + padding.width;
502 break;
503
504 case WID_GL_SORT_BY_DROPDOWN:
505 size.width = GetStringListWidth(this->vehicle_group_none_sorter_names_calendar);
506 size.width = std::max(size.width, GetStringListWidth(this->vehicle_group_none_sorter_names_wallclock));
507 size.width = std::max(size.width, GetStringListWidth(this->vehicle_group_shared_orders_sorter_names_calendar));
508 size.width = std::max(size.width, GetStringListWidth(this->vehicle_group_shared_orders_sorter_names_wallclock));
509 size.width += padding.width;
510 break;
511
512 case WID_GL_FILTER_BY_CARGO:
513 size.width = std::max(size.width, GetDropDownListDimension(this->BuildCargoDropDownList(true)).width + padding.width);

Callers

nothing calls this directly

Calls 11

ComputeGroupInfoSizeMethod · 0.95
GetStringBoundingBoxFunction · 0.85
GetParamMaxDigitsFunction · 0.85
maxdimFunction · 0.85
GetVehicleListHeightFunction · 0.85
GetStringListWidthFunction · 0.85
GetDropDownListDimensionFunction · 0.85
GetActionDropdownSizeMethod · 0.80
GetStringFunction · 0.70
GetStringMethod · 0.45

Tested by

no test coverage detected