summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--depot.h2
-rw-r--r--depot_gui.c18
-rw-r--r--vehicle.c2
3 files changed, 22 insertions, 0 deletions
diff --git a/depot.h b/depot.h
index c52c3292a..7cf25a1b1 100644
--- a/depot.h
+++ b/depot.h
@@ -107,4 +107,6 @@ Depot *GetDepotByTile(TileIndex tile);
void InitializeDepots(void);
Depot *AllocateDepot(void);
+void DeleteDepotHighlightOfVehicle(const Vehicle *v);
+
#endif /* DEPOT_H */
diff --git a/depot_gui.c b/depot_gui.c
index da879bb42..c0ee00ddc 100644
--- a/depot_gui.c
+++ b/depot_gui.c
@@ -1033,3 +1033,21 @@ void ShowDepotWindow(TileIndex tile, byte type)
ResizeDepotButtons(w);
}
}
+
+/** Removes the highlight of a vehicle in a depot window
+ * @param *v Vehicle to remove all highlights from
+ */
+void DeleteDepotHighlightOfVehicle(const Vehicle *v)
+{
+ Window* const *wz;
+
+ FOR_ALL_WINDOWS(wz) {
+ const Window *w = *wz;
+ if (w->window_class != WC_VEHICLE_DEPOT) continue;
+ if (w->window_number != v->tile) continue;
+ if (WP(w, depot_d).sel == v->index) {
+ WP(w, depot_d).sel = INVALID_VEHICLE;
+ ResetObjectToPlace();
+ }
+ }
+}
diff --git a/vehicle.c b/vehicle.c
index 9c657483c..0cf909efb 100644
--- a/vehicle.c
+++ b/vehicle.c
@@ -566,6 +566,8 @@ void DestroyVehicle(Vehicle *v)
InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
}
+ DeleteDepotHighlightOfVehicle(v);
+
UpdateVehiclePosHash(v, INVALID_COORD, 0);
v->next_hash = INVALID_VEHICLE;
if (v->orders != NULL) DeleteVehicleOrders(v);