Index: /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 1473)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java	(revision 1474)
@@ -190,4 +190,5 @@
         private QuadStateCheckBox check;
         private QuadStateCheckBox.State initialState;
+        private boolean def;
 
         @Override public void addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
@@ -195,4 +196,5 @@
             // find out if our key is already used in the selection.
             Usage usage = determineBooleanUsage(sel, key);
+            def = default_;
 
             if(locale_text == null)
@@ -202,8 +204,8 @@
             for (String s : usage.values) oneValue = s;
             if (usage.values.size() < 2 && (oneValue == null || OsmUtils.trueval.equals(oneValue) || OsmUtils.falseval.equals(oneValue))) {
-                if(default_)
+                if(def)
                 {
                     for (OsmPrimitive s : sel)
-                        if(s.keys != null && s.keys.size() > 0) default_ = false;
+                        if(s.keys != null && s.keys.size() > 0) def = false;
                 }
 
@@ -214,5 +216,5 @@
                             OsmUtils.falseval.equals(oneValue) ?
                             QuadStateCheckBox.State.NOT_SELECTED :
-                            default_ ? QuadStateCheckBox.State.SELECTED
+                            def ? QuadStateCheckBox.State.SELECTED
                             : QuadStateCheckBox.State.UNSET;
                 check = new QuadStateCheckBox(locale_text, initialState,
@@ -222,4 +224,5 @@
                         QuadStateCheckBox.State.UNSET });
             } else {
+                def = false;
                 // the objects have different values, or one or more objects have something
                 // else than true/false. we display a quad-state check box
@@ -238,5 +241,5 @@
         @Override public void addCommands(Collection<OsmPrimitive> sel, List<Command> cmds) {
             // if the user hasn't changed anything, don't create a command.
-            if (check.getState() == initialState) return;
+            if (check.getState() == initialState && !def) return;
 
             // otherwise change things according to the selected value.
@@ -590,5 +593,5 @@
         if (p == null)
             return;
-              
+
         int answer = 1;
         if (p.getComponentCount() != 0) {
@@ -600,5 +603,5 @@
                     title = tr("Selection unsuitable!");
             }
-            
+
             class PresetDialog extends ExtendedDialog {
                 public PresetDialog(Component content, String title, boolean disableApply) {
@@ -614,5 +617,5 @@
                 }
             }
-            
+
             answer = new PresetDialog(p, title, (sel.size() == 0)).getValue();
         }
@@ -624,10 +627,10 @@
         Main.ds.setSelected(Main.ds.getSelected()); // force update
     }
-    
+
     /**
      * True whenever the original selection given into createSelection was empty
      */
     private boolean originalSelectionEmpty = false;
-    
+
     /**
      * Removes all unsuitable OsmPrimitives from the given list
