changeset 17014:815e00663bdd draft

(svn r21751) -Fix: Re-initialize the stationpicker data when newgrf classes have disappeared.
author alberth <alberth@openttd.org>
date Sun, 09 Jan 2011 15:21:55 +0000
parents d4956c6fe0b3
children 92961fcfcd27
files src/rail_gui.cpp
diffstat 1 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/rail_gui.cpp
+++ b/src/rail_gui.cpp
@@ -980,17 +980,19 @@
 
 		_railstation.newstations = newstation;
 
+		if (!newstation || _railstation.station_class >= (int)StationClass::GetCount()) {
+			/* New stations are not available or changed, so ensure the default station
+			 * type is 'selected'. */
+			_railstation.station_class = STAT_CLASS_DFLT;
+			_railstation.station_type = 0;
+		}
 		if (newstation) {
 			_railstation.station_count = StationClass::GetCount(_railstation.station_class);
+			_railstation.station_type = min(_railstation.station_type, _railstation.station_count - 1);
 
 			this->vscroll->SetCount(_railstation.station_count);
 			this->vscroll->SetCapacity(GB(this->GetWidget<NWidgetCore>(BRSW_NEWST_LIST)->widget_data, MAT_ROW_START, MAT_ROW_BITS));
 			this->vscroll->SetPosition(Clamp(_railstation.station_type - 2, 0, max(this->vscroll->GetCount() - this->vscroll->GetCapacity(), 0)));
-		} else {
-			/* New stations are not available, so ensure the default station
-			 * type is 'selected'. */
-			_railstation.station_class = STAT_CLASS_DFLT;
-			_railstation.station_type = 0;
 		}
 	}