Fix: DepotWindow::GetVehicleFromDepotWndPt not refreshing vehicle list

pull/730/head
Jonathan G Rennison 1 month ago
parent 4fb677bdfe
commit e060e9b83d

@ -260,6 +260,7 @@ struct DepotWindow : Window {
VehicleID vehicle_over; ///< Rail vehicle over which another one is dragged, \c INVALID_VEHICLE if none. VehicleID vehicle_over; ///< Rail vehicle over which another one is dragged, \c INVALID_VEHICLE if none.
VehicleType type; VehicleType type;
bool generate_list; bool generate_list;
bool check_unitnumber_digits;
WidgetID hovered_widget; ///< Index of the widget being hovered during drag/drop. -1 if no drag is in progress. WidgetID hovered_widget; ///< Index of the widget being hovered during drag/drop. -1 if no drag is in progress.
VehicleList vehicle_list; VehicleList vehicle_list;
VehicleList wagon_list; VehicleList wagon_list;
@ -275,6 +276,7 @@ struct DepotWindow : Window {
this->sel = INVALID_VEHICLE; this->sel = INVALID_VEHICLE;
this->vehicle_over = INVALID_VEHICLE; this->vehicle_over = INVALID_VEHICLE;
this->generate_list = true; this->generate_list = true;
this->check_unitnumber_digits = true;
this->hovered_widget = -1; this->hovered_widget = -1;
this->type = type; this->type = type;
this->num_columns = 1; // for non-trains this gets set in FinishInitNested() this->num_columns = 1; // for non-trains this gets set in FinishInitNested()
@ -443,8 +445,10 @@ struct DepotWindow : Window {
MODE_START_STOP, MODE_START_STOP,
}; };
DepotGUIAction GetVehicleFromDepotWndPt(int x, int y, const Vehicle **veh, GetDepotVehiclePtData *d) const DepotGUIAction GetVehicleFromDepotWndPt(int x, int y, const Vehicle **veh, GetDepotVehiclePtData *d)
{ {
this->RefreshVehicleList();
const NWidgetCore *matrix_widget = this->GetWidget<NWidgetCore>(WID_D_MATRIX); const NWidgetCore *matrix_widget = this->GetWidget<NWidgetCore>(WID_D_MATRIX);
/* Make X relative to widget. Y is left alone for GetScrolledRowFromWidget(). */ /* Make X relative to widget. Y is left alone for GetScrolledRowFromWidget(). */
x -= matrix_widget->pos_x; x -= matrix_widget->pos_x;
@ -708,7 +712,7 @@ struct DepotWindow : Window {
this->generate_list = true; this->generate_list = true;
} }
void OnPaint() override void RefreshVehicleList()
{ {
if (this->generate_list) { if (this->generate_list) {
/* Generate the vehicle list /* Generate the vehicle list
@ -717,6 +721,16 @@ struct DepotWindow : Window {
this->generate_list = false; this->generate_list = false;
DepotSortList(&this->vehicle_list); DepotSortList(&this->vehicle_list);
this->check_unitnumber_digits = true;
}
}
void OnPaint() override
{
this->RefreshVehicleList();
if (this->check_unitnumber_digits) {
this->check_unitnumber_digits = false;
uint new_unitnumber_digits = GetUnitNumberDigits(this->vehicle_list); uint new_unitnumber_digits = GetUnitNumberDigits(this->vehicle_list);
/* Only increase the size; do not decrease to prevent constant changes */ /* Only increase the size; do not decrease to prevent constant changes */
if (this->unitnumber_digits < new_unitnumber_digits) { if (this->unitnumber_digits < new_unitnumber_digits) {

Loading…
Cancel
Save