(svn r11304) -Feature: Control-Clicking the Center Main View button on the vehicle window allows the main viewport to follow the chosen vehicle.(stevenh)
authorbelugas
Sat, 20 Oct 2007 00:09:39 +0000
changeset 7759 eb8f1b5b2883
parent 7758 17ad53748c7b
child 7760 d10e2e25cd5f
(svn r11304) -Feature: Control-Clicking the Center Main View button on the vehicle window allows the main viewport to follow the chosen vehicle.(stevenh)
src/vehicle_gui.cpp
src/window.cpp
--- a/src/vehicle_gui.cpp	Fri Oct 19 22:46:55 2007 +0000
+++ b/src/vehicle_gui.cpp	Sat Oct 20 00:09:39 2007 +0000
@@ -2086,9 +2086,16 @@
 					DoCommandP(v->tile, v->index, 0, NULL,
 										 _vehicle_command_translation_table[VCT_CMD_START_STOP][v->type]);
 					break;
-				case VVW_WIDGET_CENTER_MAIN_VIEH: /* center main view */
-					ScrollMainWindowTo(v->x_pos, v->y_pos);
-					break;
+				case VVW_WIDGET_CENTER_MAIN_VIEH: {/* center main view */
+					const Window *mainwindow = FindWindowById(WC_MAIN_WINDOW, 0);
+					/* code to allow the main window to 'follow' the vehicle if the ctrl key is pressed */
+					if (_ctrl_pressed && mainwindow->viewport->zoom == ZOOM_LVL_NORMAL) {
+						WP(mainwindow, vp_d).follow_vehicle = v->index;
+					} else {
+						ScrollMainWindowTo(v->x_pos, v->y_pos);
+					}
+				} break;
+
 				case VVW_WIDGET_GOTO_DEPOT: /* goto hangar */
 					DoCommandP(v->tile, v->index, _ctrl_pressed ? DEPOT_SERVICE : 0, NULL,
 						_vehicle_command_translation_table[VCT_CMD_GOTO_DEPOT][v->type]);
--- a/src/window.cpp	Fri Oct 19 22:46:55 2007 +0000
+++ b/src/window.cpp	Sat Oct 20 00:09:39 2007 +0000
@@ -1466,6 +1466,13 @@
 
 	w = FindWindowFromPt(_cursor.pos.x, _cursor.pos.y);
 
+	if (WP(w, vp_d).follow_vehicle != INVALID_VEHICLE && w == FindWindowById(WC_MAIN_WINDOW, 0)) {
+		/* If the main window is following a vehicle, then first let go of it! */
+		const Vehicle *veh = GetVehicle(WP(w, vp_d).follow_vehicle);
+		ScrollMainWindowTo(veh->x_pos, veh->y_pos, true); /* This also resets follow_vehicle */
+		return true;
+	}
+
 	if (!(_right_button_down || scrollwheel_scrolling) || w == NULL) {
 		_cursor.fix_at = false;
 		_scrolling_viewport = false;