changeset 15314:0c24345003cc draft

(svn r19955) -Fix: close list of vehicles with given buoy/oil rig in orders when switching company
author smatz <smatz@openttd.org>
date Thu, 10 Jun 2010 23:27:37 +0000
parents f843c786e506
children ae1f7a2f6ce3
files src/station_gui.cpp src/vehicle_gui.cpp src/waypoint_gui.cpp
diffstat 3 files changed, 12 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/src/station_gui.cpp
+++ b/src/station_gui.cpp
@@ -1183,33 +1183,12 @@
 						this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT);
 				break;
 
-			case SVW_TRAINS: { // Show a list of scheduled trains to this station
-				const Station *st = Station::Get(this->window_number);
-				ShowVehicleListWindow(st->owner, VEH_TRAIN, (StationID)this->window_number);
-				break;
-			}
-
-			case SVW_ROADVEHS: { // Show a list of scheduled road-vehicles to this station
-				const Station *st = Station::Get(this->window_number);
-				ShowVehicleListWindow(st->owner, VEH_ROAD, (StationID)this->window_number);
+			case SVW_TRAINS:   // Show list of scheduled trains to this station
+			case SVW_ROADVEHS: // Show list of scheduled road-vehicles to this station
+			case SVW_PLANES:   // Show list of scheduled aircraft to this station
+			case SVW_SHIPS:    // Show list of scheduled ships to this station
+				ShowVehicleListWindow(this->owner, (VehicleType)(widget - SVW_TRAINS), (StationID)this->window_number);
 				break;
-			}
-
-			case SVW_PLANES: { // Show a list of scheduled aircraft to this station
-				const Station *st = Station::Get(this->window_number);
-				/* Since oilrigs have no owners, show the scheduled aircraft of local company */
-				Owner owner = (st->owner == OWNER_NONE) ? _local_company : st->owner;
-				ShowVehicleListWindow(owner, VEH_AIRCRAFT, (StationID)this->window_number);
-				break;
-			}
-
-			case SVW_SHIPS: { // Show a list of scheduled ships to this station
-				const Station *st = Station::Get(this->window_number);
-				/* Since oilrigs/bouys have no owners, show the scheduled ships of local company */
-				Owner owner = (st->owner == OWNER_NONE) ? _local_company : st->owner;
-				ShowVehicleListWindow(owner, VEH_SHIP, (StationID)this->window_number);
-				break;
-			}
 		}
 	}
 
--- a/src/vehicle_gui.cpp
+++ b/src/vehicle_gui.cpp
@@ -1277,7 +1277,12 @@
 
 static void ShowVehicleListWindowLocal(CompanyID company, uint16 VLW_flag, VehicleType vehicle_type, uint16 unique_number)
 {
-	if (!Company::IsValidID(company)) return;
+	if (!Company::IsValidID(company)) {
+		_vehicle_list_desc.flags |= WDF_CONSTRUCTION;
+		company = _local_company;
+	} else {
+		_vehicle_list_desc.flags &= ~WDF_CONSTRUCTION;
+	}
 
 	_vehicle_list_desc.cls = GetWindowClassForVehicleType(vehicle_type);
 	WindowNumber num = (unique_number << 16) | (vehicle_type << 11) | VLW_flag | company;
--- a/src/waypoint_gui.cpp
+++ b/src/waypoint_gui.cpp
@@ -87,7 +87,7 @@
 				break;
 
 			case WAYPVW_SHOW_VEHICLES: // show list of vehicles having this waypoint in their orders
-				ShowVehicleListWindow((this->wp->owner == OWNER_NONE) ? _local_company : this->wp->owner, this->vt, this->wp);
+				ShowVehicleListWindow(this->owner, this->vt, this->wp);
 				break;
 		}
 	}