diff src/station_gui.cpp @ 10732:cb1b114429c8 draft

(svn r15065) -Change (r14919): Allow to select a new station location by ctrl-clicking while distant-join window is open. (PhilSophus)
author frosch <frosch@openttd.org>
date Tue, 13 Jan 2009 17:28:11 +0000
parents 167ce46d42c1
children 6f72f80df252
line wrap: on
line diff
--- a/src/station_gui.cpp
+++ b/src/station_gui.cpp
@@ -1206,17 +1206,26 @@
  */
 static bool StationJoinerNeeded(CommandContainer cmd, int w, int h)
 {
-	if (CmdFailed(DoCommand(&cmd, CommandFlagsToDCFlags(GetCommandFlags(cmd.cmd))))) return false;
-
 	/* Only show selection if distant join is enabled in the settings */
 	if (!_settings_game.station.distant_join_stations) return false;
 
-	/* If a window is already opened, we always return true */
-	if (FindWindowById(WC_SELECT_STATION, 0) != NULL) return true;
+	/* If a window is already opened and we didn't ctrl-click,
+	 * return true (i.e. just flash the old window) */
+	Window *selection_window = FindWindowById(WC_SELECT_STATION, 0);
+	if (selection_window != NULL) {
+		if (!_ctrl_pressed) return true;
+
+		/* Abort current distant-join and start new one */
+		delete selection_window;
+		UpdateTileSelection();
+	}
 
 	/* only show the popup, if we press ctrl */
 	if (!_ctrl_pressed) return false;
 
+	/* Now check if we could build there */
+	if (CmdFailed(DoCommand(&cmd, CommandFlagsToDCFlags(GetCommandFlags(cmd.cmd))))) return false;
+
 	/* First test for adjacent station */
 	FindStationsNearby(cmd.tile, w, h, false);
 	int neighbour_station_count = _stations_nearby_list.Length();