Fix #12433: Width of unit number display was too narrow. (#12534)

Digit width was counted, but ignored the thousands separator.
This commit is contained in:
Peter Nelson 2024-04-19 08:19:31 +01:00 committed by GitHub
parent 7848e80f71
commit 3b80a8255f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 12 additions and 1 deletions

View File

@ -1691,6 +1691,17 @@ uint GetVehicleListHeight(VehicleType type, uint divisor)
return base + (rem == 0 ? 0 : divisor - rem);
}
/**
* Get width required for the formatted unit number display.
* @param digits Number of digits required for unit number.
* @return Required width in pixels.
*/
static int GetUnitNumberWidth(int digits)
{
SetDParamMaxDigits(0, digits);
return GetStringBoundingBox(STR_JUST_COMMA).width;
}
/**
* Draw all the vehicle list items.
* @param selected_vehicle The vehicle that is to be highlighted.
@ -1703,7 +1714,7 @@ void BaseVehicleListWindow::DrawVehicleListItems(VehicleID selected_vehicle, int
bool rtl = _current_text_dir == TD_RTL;
Dimension profit = GetSpriteSize(SPR_PROFIT_LOT);
int text_offset = std::max<int>(profit.width, GetDigitWidth() * this->unitnumber_digits) + WidgetDimensions::scaled.hsep_normal;
int text_offset = std::max<int>(profit.width, GetUnitNumberWidth(this->unitnumber_digits)) + WidgetDimensions::scaled.hsep_normal;
Rect tr = ir.Indent(text_offset, rtl);
bool show_orderlist = this->vli.vtype >= VEH_SHIP;