Index: src/rail_gui.cpp =================================================================== --- src/rail_gui.cpp (revision 13003) +++ src/rail_gui.cpp (working copy) @@ -239,7 +239,10 @@ { if (success) { SndPlayTileFx(SND_20_SPLAT_2, tile); - ResetObjectToPlace(); + /* Do not unselect the tunnel tool if ctrl is pressed */ + if (!_ctrl_pressed) { + ResetObjectToPlace(); + } } else { SetRedErrorSquare(_build_tunnel_endtile); } @@ -616,7 +619,10 @@ switch (e->we.place.select_proc) { case DDSP_BUILD_BRIDGE: - ResetObjectToPlace(); + /* Do not unselect the bridge tool if ctrl is pressed */ + if (!_ctrl_pressed) { + ResetObjectToPlace(); + } ShowBuildBridgeWindow(start_tile, end_tile, TRANSPORT_RAIL, _cur_railtype); break; Index: src/road_gui.cpp =================================================================== --- src/road_gui.cpp (revision 13003) +++ src/road_gui.cpp (working copy) @@ -117,7 +117,10 @@ { if (success) { SndPlayTileFx(SND_20_SPLAT_2, tile); - ResetObjectToPlace(); + /* Do not unselect the tunnel tool if ctrl is pressed */ + if (!_ctrl_pressed) { + ResetObjectToPlace(); + } } else { SetRedErrorSquare(_build_tunnel_endtile); } @@ -569,7 +572,10 @@ switch (e->we.place.select_proc) { default: NOT_REACHED(); case DDSP_BUILD_BRIDGE: - ResetObjectToPlace(); + /* Do not unselect the bridge tool if ctrl is pressed */ + if (!_ctrl_pressed) { + ResetObjectToPlace(); + } ShowBuildBridgeWindow(start_tile, end_tile, TRANSPORT_ROAD, RoadTypeToRoadTypes(_cur_roadtype)); break;