mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r22226) -Codechange: When autoreplace invalidates vehicle windows because the Vehicle index changed, use a better eye-catcher-'data' than 0 to identify them.
This commit is contained in:
parent
31f46c0786
commit
9cf92e2bd2
|
@ -811,9 +811,10 @@ public:
|
|||
VehicleOrderID to = GB(data, 8, 8);
|
||||
|
||||
switch (data) {
|
||||
case 0:
|
||||
case -666:
|
||||
/* Autoreplace replaced the vehicle */
|
||||
this->vehicle = Vehicle::Get(this->window_number);
|
||||
/* This case is _not_ called asynchronously. Get out directly, rest can be done later */
|
||||
break;
|
||||
|
||||
case -1:
|
||||
|
|
|
@ -246,9 +246,10 @@ struct TimetableWindow : Window {
|
|||
virtual void OnInvalidateData(int data)
|
||||
{
|
||||
switch (data) {
|
||||
case 0:
|
||||
case -666:
|
||||
/* Autoreplace replaced the vehicle */
|
||||
this->vehicle = Vehicle::Get(this->window_number);
|
||||
/* This case is _not_ called asynchronously. Get out directly, rest can be done later */
|
||||
break;
|
||||
|
||||
case -1:
|
||||
|
|
|
@ -686,6 +686,12 @@ struct RefitWindow : public Window {
|
|||
virtual void OnInvalidateData(int data)
|
||||
{
|
||||
switch (data) {
|
||||
case -666:
|
||||
/* Autoreplace replaced the vehicle.
|
||||
* Nothing to do though for this window.
|
||||
* This case is _not_ called asynchronously. Get out directly, rest can be done later */
|
||||
break;
|
||||
|
||||
case 0: { // The consist has changed; rebuild the entire list.
|
||||
/* Clear the selection. */
|
||||
Vehicle *v = Vehicle::Get(this->window_number);
|
||||
|
@ -1121,7 +1127,7 @@ static inline void ChangeVehicleWindow(WindowClass window_class, VehicleID from_
|
|||
}
|
||||
|
||||
/* Notify the window immediately, without scheduling. */
|
||||
w->InvalidateData();
|
||||
w->InvalidateData(-666);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1780,6 +1786,12 @@ struct VehicleDetailsWindow : Window {
|
|||
|
||||
virtual void OnInvalidateData(int data)
|
||||
{
|
||||
if (data == -666) {
|
||||
/* Autoreplace replaced the vehicle.
|
||||
* Nothing to do for this window though.
|
||||
* This case is _not_ called asynchronously. Get out directly, rest can be done later */
|
||||
return;
|
||||
}
|
||||
const Vehicle *v = Vehicle::Get(this->window_number);
|
||||
if (v->type == VEH_ROAD) {
|
||||
const NWidgetBase *nwid_info = this->GetWidget<NWidgetBase>(VLD_WIDGET_MIDDLE_DETAILS);
|
||||
|
@ -2581,6 +2593,16 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
virtual void OnInvalidateData(int data)
|
||||
{
|
||||
if (data == -666) {
|
||||
/* Autoreplace replaced the vehicle.
|
||||
* Nothing to do for this window though.
|
||||
* This case is _not_ called asynchronously. Get out directly, rest can be done later */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
virtual bool IsNewGRFInspectable() const
|
||||
{
|
||||
return ::IsNewGRFInspectable(GetGrfSpecFeature(Vehicle::Get(this->window_number)->type), this->window_number);
|
||||
|
|
Loading…
Reference in New Issue