Index: plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/BuildingSizeDialog.java
===================================================================
--- plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/BuildingSizeDialog.java	(revision 35863)
+++ plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/BuildingSizeDialog.java	(working copy)
@@ -21,6 +21,7 @@
     private final JFormattedTextField tlenstep = new JFormattedTextField(NumberFormat.getInstance());
     private final JCheckBox caddr = new JCheckBox(tr("Use Address dialog"));
     private final JCheckBox cAutoSelect = new JCheckBox(tr("Auto-select building"));
+    private final JCheckBox cAutoSelectReplaceSelection = new JCheckBox(tr("Auto-select replaces existing selection"));
     private final JCheckBox cAddrNode = new JCheckBox(tr("Use address nodes under buildings"));
     private final JRadioButton circleRadio = new JRadioButton(tr("Circle"));
     private final JRadioButton rectangleRadio = new JRadioButton(tr("Rectangle"));
@@ -41,6 +42,7 @@
         addLabelled(tr("Length step:"), tlenstep);
         panel.add(caddr, GBC.eol().fill(GBC.HORIZONTAL));
         panel.add(cAutoSelect, GBC.eol().fill(GBC.HORIZONTAL));
+        panel.add(cAutoSelectReplaceSelection, GBC.eol().fill(GBC.HORIZONTAL));
         panel.add(cAddrNode, GBC.eol().fill(GBC.HORIZONTAL));
 
         twidth.setValue(ToolSettings.getWidth());
@@ -47,6 +49,7 @@
         tlenstep.setValue(ToolSettings.getLenStep());
         caddr.setSelected(ToolSettings.isUsingAddr());
         cAutoSelect.setSelected(ToolSettings.isAutoSelect());
+        cAutoSelectReplaceSelection.setSelected(ToolSettings.isAutoSelectReplaceSelection());
         cAddrNode.setSelected(ToolSettings.PROP_USE_ADDR_NODE.get());
 
         JButton bAdv = new JButton(tr("Advanced..."));
@@ -94,6 +97,7 @@
         ToolSettings.setSizes(width(), lenstep());
         ToolSettings.setAddrDialog(useAddr());
         ToolSettings.setAutoSelect(cAutoSelect.isSelected());
+        ToolSettings.setAutoSelectReplaceSelection(cAutoSelectReplaceSelection.isSelected());
         ToolSettings.PROP_USE_ADDR_NODE.put(cAddrNode.isSelected());
     }
 }
Index: plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java
===================================================================
--- plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java	(revision 35863)
+++ plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/DrawBuildingAction.java	(working copy)
@@ -350,7 +350,8 @@
                 if (ToolSettings.isUsingAddr())
                     showAddrDialog(w);
                 if (ToolSettings.isAutoSelect()
-                        && (getLayerManager().getEditDataSet().getSelected().isEmpty() || shift)) {
+                        && (getLayerManager().getEditDataSet().getSelected().isEmpty() || shift ||
+                            ToolSettings.isAutoSelectReplaceSelection())) {
                     getLayerManager().getEditDataSet().setSelected(w);
                 }
             }
Index: plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/ToolSettings.java
===================================================================
--- plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/ToolSettings.java	(revision 35863)
+++ plugins/buildings_tools/src/org/openstreetmap/josm/plugins/buildings_tools/ToolSettings.java	(working copy)
@@ -30,7 +30,6 @@
     private static double lenstep;
     private static boolean useAddr;
     private static final Map<String, String> TAGS = new HashMap<>();
-    private static boolean autoSelect;
 
     public static Shape getShape() {
         loadShape();
@@ -119,13 +118,21 @@
     }
 
     public static boolean isAutoSelect() {
-        return autoSelect;
+        return Config.getPref().getBoolean("buildings_tools.autoselect", false);
     }
 
     public static void setAutoSelect(boolean autoSelect) {
-        ToolSettings.autoSelect = autoSelect;
+        Config.getPref().putBoolean("buildings_tools.autoselect", autoSelect);
     }
 
+    public static boolean isAutoSelectReplaceSelection() {
+        return Config.getPref().getBoolean("buildings_tools.autoselect_replace_selection", false);
+    }
+
+    public static void setAutoSelectReplaceSelection(boolean autoSelectReplace) {
+        Config.getPref().putBoolean("buildings_tools.autoselect_replace_selection", autoSelectReplace);
+    }
+
     public static boolean isNoClickAndDrag() {
         return Config.getPref().getBoolean("buildings_tools.noclickdrag", false);
     }
