mirror of https://github.com/OpenTTD/OpenTTD
(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 problemsrelease/0.5
parent
ff6f83b56c
commit
55c7840710
16
order_cmd.c
16
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;
|
||||
|
|
|
@ -1553,10 +1553,9 @@ static void DrawVehicleListWindow(Window *w)
|
|||
switch (window_type) {
|
||||
case VLW_SHARED_ORDERS: /* Shared Orders */
|
||||
if (vl->l.list_length == 0) {
|
||||
/* The list is empty, so the last vehicle is sold or crashed */
|
||||
/* Delete the window because the order is now not in use anymore */
|
||||
DeleteWindow(w);
|
||||
return;
|
||||
/* We can't open this window without vehicles using this order
|
||||
* and we should close the window when deleting the order */
|
||||
NOT_REACHED();
|
||||
}
|
||||
SetDParam(0, w->vscroll.count);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue