diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 52b497cda3..f8bdec4556 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -149,7 +149,7 @@ static void PlaceRail_Depot(TileIndex tile) static void PlaceRail_Waypoint(TileIndex tile) { if (_remove_button_clicked) { - DoCommandP(tile, 0, 0, CMD_REMOVE_FROM_RAIL_WAYPOINT | CMD_MSG(STR_CANT_REMOVE_TRAIN_WAYPOINT), CcPlaySound1E); + VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_REMOVE_STATION); } else { DoCommandP(tile, _cur_waypoint_type, 0, CMD_BUILD_RAIL_WAYPOINT | CMD_MSG(STR_CANT_BUILD_TRAIN_WAYPOINT), CcPlaySound1E); } @@ -167,8 +167,7 @@ void CcStation(bool success, TileIndex tile, uint32 p1, uint32 p2) static void PlaceRail_Station(TileIndex tile) { if (_remove_button_clicked) { - VpStartPlaceSizing(tile, VPM_X_AND_Y_LIMITED, DDSP_REMOVE_STATION); - VpSetPlaceSizingLimit(-1); + VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_REMOVE_STATION); } else if (_settings_client.gui.station_dragdrop) { VpStartPlaceSizing(tile, VPM_X_AND_Y_LIMITED, DDSP_BUILD_STATION); VpSetPlaceSizingLimit(_settings_game.station.station_spread); @@ -750,11 +749,19 @@ struct BuildRailToolbarWindow : Window { case DDSP_REMOVE_STATION: case DDSP_BUILD_STATION: - if (_remove_button_clicked) { - DoCommandP(end_tile, start_tile, 0, CMD_REMOVE_FROM_RAIL_STATION | CMD_MSG(STR_CANT_REMOVE_PART_OF_STATION), CcPlaySound1E); - break; + if (this->IsWidgetLowered(RTW_BUILD_STATION)) { + /* Station */ + if (_remove_button_clicked) { + DoCommandP(end_tile, start_tile, 0, CMD_REMOVE_FROM_RAIL_STATION | CMD_MSG(STR_CANT_REMOVE_PART_OF_STATION), CcPlaySound1E); + } else { + HandleStationPlacement(start_tile, end_tile); + } + } else { + /* Waypoint */ + if (_remove_button_clicked) { + DoCommandP(end_tile, start_tile, 0, CMD_REMOVE_FROM_RAIL_WAYPOINT | CMD_MSG(STR_CANT_REMOVE_TRAIN_WAYPOINT), CcPlaySound1E); + } } - HandleStationPlacement(start_tile, end_tile); break; } }