Changeset - r22243:5fab6d132867
[Not reviewed]
master
0 2 0
frosch - 9 years ago 2015-10-30 17:23:16
frosch@openttd.org
(svn r27425) -Fix [FS#5842]: Crash when switching to or taking over companies, when an order window of a vehicle of the new company was opened. Now close those windows.
2 files changed with 7 insertions and 0 deletions:
0 comments (0 inline, 0 general)
src/order_gui.cpp
Show inline comments
 
@@ -1713,6 +1713,12 @@ void ShowOrdersWindow(const Vehicle *v)
 
	DeleteWindowById(WC_VEHICLE_TIMETABLE, v->index, false);
 
	if (BringWindowToFrontById(WC_VEHICLE_ORDERS, v->index) != NULL) return;
 

	
 
	/* Using a different WindowDescs for _local_company causes problems.
 
	 * Due to this we have to close order windows in ChangeWindowOwner/DeleteCompanyWindows,
 
	 * because we cannot change switch the WindowDescs and keeping the old WindowDesc results
 
	 * in crashed due to missing widges.
 
	 * TODO Rewrite the order GUI to not use different WindowDescs.
 
	 */
 
	if (v->owner != _local_company) {
 
		new OrdersWindow(&_other_orders_desc, v);
 
	} else {
src/window.cpp
Show inline comments
 
@@ -1207,6 +1207,7 @@ void ChangeWindowOwner(Owner old_owner, 
 
			case WC_BUY_COMPANY:
 
			case WC_COMPANY:
 
			case WC_COMPANY_INFRASTRUCTURE:
 
			case WC_VEHICLE_ORDERS: // Changing owner would also require changing WindowDesc, which is not possible; however keeping the old one crashes because of missing widgets etc.. See ShowOrdersWindow().
 
				continue;
 

	
 
			default:
0 comments (0 inline, 0 general)