diff options
author | rubidium <rubidium@openttd.org> | 2008-08-17 21:07:09 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-08-17 21:07:09 +0000 |
commit | 141001d031455b954dc98647e9b9ea6581dae764 (patch) | |
tree | 0187f4162e6e574d8191d24993c7ca782e70d6f5 /src/vehicle.cpp | |
parent | 66b9ea9a5afeafac9fbc49e993bba4c9056f83b2 (diff) | |
download | openttd-141001d031455b954dc98647e9b9ea6581dae764.tar.xz |
(svn r14097) -Fix [FS#2085]: one couldn't get a list of vehicles sharing an order when the number of orders was 0; you could see that the vehicles had a shared order though.
Diffstat (limited to 'src/vehicle.cpp')
-rw-r--r-- | src/vehicle.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/vehicle.cpp b/src/vehicle.cpp index ae77872a9..80ddeb032 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -2614,11 +2614,15 @@ void Vehicle::RemoveFromShared() if (this->next_shared != NULL) this->next_shared->previous_shared = this->previous_shared; + uint32 old_window_number = (this->FirstShared()->index << 16) | (this->type << 11) | VLW_SHARED_ORDERS | this->owner; + if (new_first->NextShared() == NULL) { /* When there is only one vehicle, remove the shared order list window. */ - extern void RemoveSharedOrderVehicleList(Vehicle *v); - if (new_first->orders != NULL) RemoveSharedOrderVehicleList(new_first); + DeleteWindowById(GetWindowClassForVehicleType(this->type), old_window_number); InvalidateVehicleOrder(new_first); + } else if (this->FirstShared() == this) { + /* If we were the first one, update to the new first one. */ + InvalidateWindowData(GetWindowClassForVehicleType(this->type), old_window_number, (new_first->index << 16) | (1 << 15)); } this->first_shared = this; |