--- a/train_gui.c Sat Oct 07 14:30:13 2006 +0000
+++ b/train_gui.c Sat Oct 07 15:04:22 2006 +0000
@@ -276,6 +276,27 @@
if (WP(w,buildtrain_d).data_invalidated) {
GenerateBuildList(&WP(w,buildtrain_d).engines, &WP(w,buildtrain_d).num_engines, &WP(w,buildtrain_d).wagons, &WP(w,buildtrain_d).num_wagons, WP(w,buildtrain_d).railtype);
WP(w,buildtrain_d).data_invalidated = false;
+
+ /* Make sure that the selected engine is still in the list*/
+ if (WP(w,buildtrain_d).sel_engine != INVALID_ENGINE) {
+ int i;
+ bool found = false;
+ if (HASBIT(WP(w,buildtrain_d).show_engine_wagon, 0)) {
+ for (i = 0; i < WP(w,buildtrain_d).num_engines; i++) {
+ if (WP(w,buildtrain_d).sel_engine != WP(w,buildtrain_d).engines[i]) continue;
+ found = true;
+ break;
+ }
+ }
+ if (!found && HASBIT(WP(w,buildtrain_d).show_engine_wagon, 1)) {
+ for (i = 0; i < WP(w,buildtrain_d).num_wagons; i++) {
+ if (WP(w,buildtrain_d).sel_engine != WP(w,buildtrain_d).wagons[i]) continue;
+ found = true;
+ break;
+ }
+ }
+ if (!found) WP(w,buildtrain_d).sel_engine = INVALID_ENGINE;
+ }
}
if (HASBIT(WP(w,buildtrain_d).show_engine_wagon, 0)) scrollcount += WP(w,buildtrain_d).num_engines;
@@ -330,6 +351,7 @@
WP(w,buildtrain_d).wagons = NULL;
WP(w,buildtrain_d).show_engine_wagon = 3;
WP(w,buildtrain_d).data_invalidated = true;
+ WP(w,buildtrain_d).sel_engine = INVALID_ENGINE;
break;
case WE_INVALIDATE_DATA: