changeset 15315:ae1f7a2f6ce3 draft

(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
author smatz <smatz@openttd.org>
date Thu, 10 Jun 2010 23:52:09 +0000
parents 0c24345003cc
children 2a60c2c9506b
files src/station.cpp src/waypoint.cpp src/waypoint_gui.cpp
diffstat 3 files changed, 17 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- 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 @@
 	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));
--- 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 @@
 	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));
 
--- 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 @@
 		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);