summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsmatz <smatz@openttd.org>2010-06-10 23:52:09 +0000
committersmatz <smatz@openttd.org>2010-06-10 23:52:09 +0000
commit8bf4a7d1ae5643b20d842f7fe9637e453614b8aa (patch)
tree0e7db9b09c9e6d7497552dc55410d6f6f117a7dd
parent830e40af1999186630b5a85e7c3017617fc44576 (diff)
downloadopenttd-8bf4a7d1ae5643b20d842f7fe9637e453614b8aa.tar.xz
(svn r19956) -Fix: close list of vehicles with given oil rig in orders when the oil rig is deleted
-Fix (r19952): close the list when it is not sticky
-rw-r--r--src/station.cpp6
-rw-r--r--src/waypoint.cpp5
-rw-r--r--src/waypoint_gui.cpp8
3 files changed, 17 insertions, 2 deletions
diff --git a/src/station.cpp b/src/station.cpp
index 0dcc6daa0..b25f48a3f 100644
--- a/src/station.cpp
+++ b/src/station.cpp
@@ -11,6 +11,7 @@
#include "stdafx.h"
#include "company_func.h"
+#include "company_base.h"
#include "roadveh.h"
#include "functions.h"
#include "window_func.h"
@@ -81,7 +82,10 @@ Station::~Station()
InvalidateWindowData(WC_STATION_LIST, this->owner, 0);
DeleteWindowById(WC_STATION_VIEW, index);
- WindowNumber wno = (this->index << 16) | VLW_STATION_LIST | this->owner;
+
+ Owner owner = this->owner;
+ if (!Company::IsValidID(owner)) owner = _local_company;
+ WindowNumber wno = (this->index << 16) | VLW_STATION_LIST | owner;
DeleteWindowById(WC_TRAINS_LIST, wno | (VEH_TRAIN << 11));
DeleteWindowById(WC_ROADVEH_LIST, wno | (VEH_ROAD << 11));
DeleteWindowById(WC_SHIPS_LIST, wno | (VEH_SHIP << 11));
diff --git a/src/waypoint.cpp b/src/waypoint.cpp
index a22edcb48..6ed11799b 100644
--- a/src/waypoint.cpp
+++ b/src/waypoint.cpp
@@ -17,6 +17,7 @@
#include "waypoint_base.h"
#include "vehicle_gui.h"
#include "company_func.h"
+#include "company_base.h"
/**
* Draw a waypoint
@@ -55,7 +56,9 @@ Waypoint::~Waypoint()
DeleteWindowById(WC_WAYPOINT_VIEW, this->index);
RemoveOrderFromAllVehicles(OT_GOTO_WAYPOINT, this->index);
- WindowNumber wno = (this->index << 16) | VLW_WAYPOINT_LIST | (this->owner == OWNER_NONE ? _local_company : this->owner);
+ Owner owner = this->owner;
+ if (!Company::IsValidID(owner)) owner = _local_company;
+ WindowNumber wno = (this->index << 16) | VLW_WAYPOINT_LIST | owner;
DeleteWindowById(WC_TRAINS_LIST, wno | (VEH_TRAIN << 11));
DeleteWindowById(WC_SHIPS_LIST, wno | (VEH_SHIP << 11));
diff --git a/src/waypoint_gui.cpp b/src/waypoint_gui.cpp
index 72a629eab..630f4222a 100644
--- a/src/waypoint_gui.cpp
+++ b/src/waypoint_gui.cpp
@@ -18,6 +18,7 @@
#include "strings_func.h"
#include "command_func.h"
#include "company_func.h"
+#include "company_base.h"
#include "window_func.h"
#include "waypoint_base.h"
@@ -60,6 +61,13 @@ public:
this->OnInvalidateData(0);
}
+ ~WaypointWindow()
+ {
+ Owner owner = this->owner;
+ if (!Company::IsValidID(owner)) owner = _local_company;
+ DeleteWindowById(GetWindowClassForVehicleType(this->vt), (this->window_number << 16) | (this->vt << 11) | VLW_WAYPOINT_LIST | owner, false);
+ }
+
virtual void SetStringParameters(int widget) const
{
if (widget == WAYPVW_CAPTION) SetDParam(0, this->wp->index);