diff -r aa276d0ec2eb -r df84b7f59e5b train_gui.c --- 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: