train_gui.c
changeset 4767 df84b7f59e5b
parent 4766 aa276d0ec2eb
child 4769 172e18f63248
--- 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: