changeset 5071:de738162cd68 draft

(svn r7129) -Codechange: Get rid of a global variable that only sets a window's number.
author Darkvater <Darkvater@openttd.org>
date Sat, 11 Nov 2006 09:47:44 +0000
parents 846a659147de
children 8f45a0d1985b
files aircraft_gui.c depot_gui.c order_gui.c roadveh_gui.c ship_gui.c train_gui.c vehicle_gui.c window.c window.h
diffstat 9 files changed, 19 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/aircraft_gui.c
+++ b/aircraft_gui.c
@@ -183,9 +183,7 @@
 	DeleteWindowById(WC_VEHICLE_ORDERS, veh);
 	DeleteWindowById(WC_VEHICLE_DETAILS, veh);
 
-	_alloc_wnd_parent_num = veh;
-	w = AllocateWindowDesc(&_aircraft_details_desc);
-	w->window_number = veh;
+	w = AllocateWindowDescFront(&_aircraft_details_desc, veh);
 	w->caption_color = v->owner;
 //	w->vscroll.cap = 6;
 //	w->traindetails_d.tab = 0;
--- a/depot_gui.c
+++ b/depot_gui.c
@@ -221,10 +221,7 @@
 
 static void ShowDepotSellAllWindow(TileIndex tile, byte type)
 {
-	Window *w;
-
-	_alloc_wnd_parent_num = tile;
-	w = AllocateWindowDescFront(&_depot_sell_all_desc, tile);
+	Window *w = AllocateWindowDescFront(&_depot_sell_all_desc, tile);
 
 	if (w != NULL) {
 		w->caption_color = GetTileOwner(tile);
--- a/order_gui.c
+++ b/order_gui.c
@@ -649,16 +649,13 @@
 	DeleteWindowById(WC_VEHICLE_ORDERS, veh);
 	DeleteWindowById(WC_VEHICLE_DETAILS, veh);
 
-	_alloc_wnd_parent_num = veh;
-
 	if (v->owner != _local_player) {
-		w = AllocateWindowDesc(&_other_orders_desc);
+		w = AllocateWindowDescFront(&_other_orders_desc, veh);
 	} else {
-		w = AllocateWindowDesc((v->type == VEH_Train) ? &_orders_train_desc : &_orders_desc);
+		w = AllocateWindowDescFront((v->type == VEH_Train) ? &_orders_train_desc : &_orders_desc, veh);
 	}
 
 	if (w != NULL) {
-		w->window_number = veh;
 		w->caption_color = v->owner;
 		w->vscroll.cap = 6;
 		w->resize.step_height = 10;
--- a/roadveh_gui.c
+++ b/roadveh_gui.c
@@ -219,9 +219,8 @@
 
 	DeleteWindowById(WC_VEHICLE_ORDERS, veh);
 	DeleteWindowById(WC_VEHICLE_DETAILS, veh);
-	_alloc_wnd_parent_num = veh;
-	w = AllocateWindowDesc(&_roadveh_details_desc);
-	w->window_number = veh;
+
+	w = AllocateWindowDescFront(&_roadveh_details_desc, veh);
 	w->caption_color = v->owner;
 }
 
--- a/ship_gui.c
+++ b/ship_gui.c
@@ -217,9 +217,7 @@
 
 	DeleteWindowById(WC_VEHICLE_ORDERS, veh);
 	DeleteWindowById(WC_VEHICLE_DETAILS, veh);
-	_alloc_wnd_parent_num = veh;
-	w = AllocateWindowDesc(&_ship_details_desc);
-	w->window_number = veh;
+	w = AllocateWindowDescFront(&_ship_details_desc, veh);
 	w->caption_color = v->owner;
 }
 
--- a/train_gui.c
+++ b/train_gui.c
@@ -1216,10 +1216,8 @@
 	DeleteWindowById(WC_VEHICLE_ORDERS, veh);
 	DeleteWindowById(WC_VEHICLE_DETAILS, veh);
 
-	_alloc_wnd_parent_num = veh;
-	w = AllocateWindowDesc(&_train_details_desc);
+	w = AllocateWindowDescFront(&_train_details_desc, veh);
 
-	w->window_number = veh;
 	w->caption_color = v->owner;
 	w->vscroll.cap = 6;
 	w->widget[4].data = (w->vscroll.cap << 8) + 1;
--- a/vehicle_gui.c
+++ b/vehicle_gui.c
@@ -442,9 +442,7 @@
 
 	DeleteWindowById(WC_VEHICLE_REFIT, v->index);
 
-	_alloc_wnd_parent_num = v->index;
-
-	w = AllocateWindowDesc(&_vehicle_refit_desc);
+	w = AllocateWindowDescFront(&_vehicle_refit_desc, v->index);
 	WP(w, refit_d).order = order;
 
 	if (w != NULL) {
--- a/window.c
+++ b/window.c
@@ -682,12 +682,17 @@
 	Point pt;
 	Window *w;
 
-	if (desc->parent_cls != WC_MAIN_WINDOW &&
-			(w = FindWindowById(desc->parent_cls, _alloc_wnd_parent_num), _alloc_wnd_parent_num=0, w) != NULL &&
-			w->left < _screen.width-20 && w->left > -60 && w->top < _screen.height-20) {
+	/* By default position a child window at an offset of 10/10 of its parent.
+	 * However if it falls too extremely outside window positions, reposition
+	 * it to an automatic place */
+	if (desc->parent_cls != 0 /* WC_MAIN_WINDOW */ &&
+			(w = FindWindowById(desc->parent_cls, window_number)) != NULL &&
+			w->left < _screen.width - 20 && w->left > -60 && w->top < _screen.height - 20) {
+
 		pt.x = w->left + 10;
-		if (pt.x > _screen.width + 10 - desc->width)
+		if (pt.x > _screen.width + 10 - desc->width) {
 			pt.x = (_screen.width + 10 - desc->width) - 20;
+		}
 		pt.y = w->top + 10;
 	} else if (desc->cls == WC_BUILD_TOOLBAR) { // open Build Toolbars aligned
 		/* Override the position if a toolbar is opened according to the place of the maintoolbar
@@ -1715,7 +1720,7 @@
 	}
 
 	switch (_patches.toolbar_pos) {
-		case 1:  w->left = (_screen.width - w->width) >> 1; break;
+		case 1:  w->left = (_screen.width - w->width) / 2; break;
 		case 2:  w->left = _screen.width - w->width; break;
 		default: w->left = 0;
 	}
--- a/window.h
+++ b/window.h
@@ -840,8 +840,6 @@
 VARDEF bool _right_button_down;
 VARDEF bool _right_button_clicked;
 
-VARDEF int _alloc_wnd_parent_num;
-
 VARDEF int _scrollbar_start_pos;
 VARDEF int _scrollbar_size;
 VARDEF byte _scroller_click_timeout;