Skip to content

Commit

Permalink
Fix: Use width of tiny arrow string instead of scaled pixels in ship/…
Browse files Browse the repository at this point in the history
…aircraft list. (OpenTTD#9102)
  • Loading branch information
PeterN authored and LordAro committed May 2, 2021
1 parent ef87f70 commit 89db738
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
21 changes: 13 additions & 8 deletions src/vehicle_gui.cpp
Expand Up @@ -240,6 +240,11 @@ Dimension BaseVehicleListWindow::GetActionDropdownSize(bool show_autoreplace, bo
return d;
}

void BaseVehicleListWindow::OnInit()
{
this->order_arrow_width = GetStringBoundingBox(STR_TINY_RIGHT_ARROW).width;
}

/**
* Display the Action dropdown window.
* @param show_autoreplace If true include the autoreplace item.
Expand Down Expand Up @@ -1406,14 +1411,14 @@ static const NWidgetPart _nested_vehicle_list[] = {
EndContainer(),
};

static void DrawSmallOrderList(const Vehicle *v, int left, int right, int y, VehicleOrderID start = 0)
static void DrawSmallOrderList(const Vehicle *v, int left, int right, int y, uint order_arrow_width, VehicleOrderID start)
{
const Order *order = v->GetOrder(start);
if (order == nullptr) return;

bool rtl = _current_text_dir == TD_RTL;
int l_offset = rtl ? 0 : ScaleGUITrad(6);
int r_offset = rtl ? ScaleGUITrad(6) : 0;
int l_offset = rtl ? 0 : order_arrow_width;
int r_offset = rtl ? order_arrow_width : 0;
int i = 0;
VehicleOrderID oid = start;

Expand All @@ -1438,11 +1443,11 @@ static void DrawSmallOrderList(const Vehicle *v, int left, int right, int y, Veh
}

/** Draw small order list in the vehicle GUI, but without the little black arrow. This is used for shared order groups. */
static void DrawSmallOrderList(const Order *order, int left, int right, int y)
static void DrawSmallOrderList(const Order *order, int left, int right, int y, uint order_arrow_width)
{
bool rtl = _current_text_dir == TD_RTL;
int l_offset = rtl ? 0 : ScaleGUITrad(6);
int r_offset = rtl ? ScaleGUITrad(6) : 0;
int l_offset = rtl ? 0 : order_arrow_width;
int r_offset = rtl ? order_arrow_width : 0;
int i = 0;
while (order != nullptr) {
if (order->IsType(OT_GOTO_STATION)) {
Expand Down Expand Up @@ -1550,7 +1555,7 @@ void BaseVehicleListWindow::DrawVehicleListItems(VehicleID selected_vehicle, int
DrawString(text_left, text_right, y, STR_TINY_GROUP, TC_BLACK);
}

if (show_orderlist) DrawSmallOrderList(v, orderlist_left, orderlist_right, y, v->cur_real_order_index);
if (show_orderlist) DrawSmallOrderList(v, orderlist_left, orderlist_right, y, this->order_arrow_width, v->cur_real_order_index);

StringID str;
if (v->IsChainInDepot()) {
Expand All @@ -1572,7 +1577,7 @@ void BaseVehicleListWindow::DrawVehicleListItems(VehicleID selected_vehicle, int
DrawVehicleImage(vehgroup.vehicles_begin[i], image_left + 8 * i, image_right, y + FONT_HEIGHT_SMALL - 1, selected_vehicle, EIT_IN_LIST, 0);
}

if (show_orderlist) DrawSmallOrderList((vehgroup.vehicles_begin[0])->GetFirstOrder(), orderlist_left, orderlist_right, y);
if (show_orderlist) DrawSmallOrderList((vehgroup.vehicles_begin[0])->GetFirstOrder(), orderlist_left, orderlist_right, y, this->order_arrow_width);

SetDParam(0, vehgroup.NumVehicles());
DrawString(left, right, y + 2, STR_BLACK_COMMA);
Expand Down
3 changes: 3 additions & 0 deletions src/vehicle_gui_base.h
Expand Up @@ -83,6 +83,7 @@ struct BaseVehicleListWindow : public Window {
byte unitnumber_digits; ///< The number of digits of the highest unit number.
Scrollbar *vscroll;
VehicleListIdentifier vli; ///< Identifier of the vehicle list we want to currently show.
uint order_arrow_width; ///< Width of the arrow in the small order list.

typedef GUIVehicleGroupList::SortFunction VehicleGroupSortFunction;
typedef GUIVehicleList::SortFunction VehicleIndividualSortFunction;
Expand All @@ -104,6 +105,8 @@ struct BaseVehicleListWindow : public Window {

BaseVehicleListWindow(WindowDesc *desc, WindowNumber wno);

void OnInit() override;

void UpdateSortingFromGrouping();

void DrawVehicleListItems(VehicleID selected_vehicle, int line_height, const Rect &r) const;
Expand Down

0 comments on commit 89db738

Please sign in to comment.