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);
|
VehicleOrderID to = GB(data, 8, 8);
|
||||||
|
|
||||||
switch (data) {
|
switch (data) {
|
||||||
case 0:
|
case -666:
|
||||||
/* Autoreplace replaced the vehicle */
|
/* Autoreplace replaced the vehicle */
|
||||||
this->vehicle = Vehicle::Get(this->window_number);
|
this->vehicle = Vehicle::Get(this->window_number);
|
||||||
|
/* This case is _not_ called asynchronously. Get out directly, rest can be done later */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case -1:
|
case -1:
|
||||||
|
|
|
@ -246,9 +246,10 @@ struct TimetableWindow : Window {
|
||||||
virtual void OnInvalidateData(int data)
|
virtual void OnInvalidateData(int data)
|
||||||
{
|
{
|
||||||
switch (data) {
|
switch (data) {
|
||||||
case 0:
|
case -666:
|
||||||
/* Autoreplace replaced the vehicle */
|
/* Autoreplace replaced the vehicle */
|
||||||
this->vehicle = Vehicle::Get(this->window_number);
|
this->vehicle = Vehicle::Get(this->window_number);
|
||||||
|
/* This case is _not_ called asynchronously. Get out directly, rest can be done later */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case -1:
|
case -1:
|
||||||
|
|
|
@ -686,6 +686,12 @@ struct RefitWindow : public Window {
|
||||||
virtual void OnInvalidateData(int data)
|
virtual void OnInvalidateData(int data)
|
||||||
{
|
{
|
||||||
switch (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.
|
case 0: { // The consist has changed; rebuild the entire list.
|
||||||
/* Clear the selection. */
|
/* Clear the selection. */
|
||||||
Vehicle *v = Vehicle::Get(this->window_number);
|
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. */
|
/* Notify the window immediately, without scheduling. */
|
||||||
w->InvalidateData();
|
w->InvalidateData(-666);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1780,6 +1786,12 @@ struct VehicleDetailsWindow : Window {
|
||||||
|
|
||||||
virtual void OnInvalidateData(int data)
|
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);
|
const Vehicle *v = Vehicle::Get(this->window_number);
|
||||||
if (v->type == VEH_ROAD) {
|
if (v->type == VEH_ROAD) {
|
||||||
const NWidgetBase *nwid_info = this->GetWidget<NWidgetBase>(VLD_WIDGET_MIDDLE_DETAILS);
|
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
|
virtual bool IsNewGRFInspectable() const
|
||||||
{
|
{
|
||||||
return ::IsNewGRFInspectable(GetGrfSpecFeature(Vehicle::Get(this->window_number)->type), this->window_number);
|
return ::IsNewGRFInspectable(GetGrfSpecFeature(Vehicle::Get(this->window_number)->type), this->window_number);
|
||||||
|
|
Loading…
Reference in New Issue