From 55c7840710742ee3caebded16fadc3700ad65e0c Mon Sep 17 00:00:00 2001 From: bjarni Date: Thu, 5 Oct 2006 08:27:40 +0000 Subject: (svn r6647) -Fix: [vehicle list windows] Lists of shared orders are now no longer closed by a window event if the list is empty The window is now closed when the order is deleted. This is because removing windows from a window event is asking for problems --- order_cmd.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'order_cmd.c') diff --git a/order_cmd.c b/order_cmd.c index b87fb6879..c0bcc343b 100644 --- a/order_cmd.c +++ b/order_cmd.c @@ -1124,7 +1124,21 @@ void DeleteVehicleOrders(Vehicle *v) v->orders = NULL; v->num_orders = 0; - while (cur != NULL) { + if (cur != NULL) { + /* Delete the vehicle list of shared orders, if any */ + int window_type = 0; + + switch (v->type) { + case VEH_Train: window_type = WC_TRAINS_LIST; break; + case VEH_Road: window_type = WC_ROADVEH_LIST; break; + case VEH_Ship: window_type = WC_SHIPS_LIST; break; + case VEH_Aircraft: window_type = WC_AIRCRAFT_LIST; break; + default: NOT_REACHED(); + } + DeleteWindowById(window_type, (cur->index << 16) | (v->type << 11) | VLW_SHARED_ORDERS | v->owner); + } + + while (cur != NULL) { next = cur->next; DeleteOrder(cur); cur = next; -- cgit v1.2.3-70-g09d2