Index: applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidatorDialog.java
===================================================================
--- applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidatorDialog.java	(revision 2796)
+++ applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidatorDialog.java	(revision 2798)
@@ -97,26 +97,37 @@
 	private void fixErrors(ActionEvent e) 
 	{
-		DefaultMutableTreeNode node = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent();
-    	if( node == null )
-    		return;
-
+        TreePath[] selectionPaths = tree.getSelectionPaths();
+        if( selectionPaths == null )
+            return;
+        
         Bag<String, Command> commands = new Bag<String, Command>();
-
-		Enumeration<DefaultMutableTreeNode> children = node.breadthFirstEnumeration();
-		while( children.hasMoreElements() )
-		{
-    		DefaultMutableTreeNode childNode = children.nextElement();
-    		Object nodeInfo = childNode.getUserObject();
-    		if( nodeInfo instanceof TestError)
+        Set<DefaultMutableTreeNode> processedNodes = new HashSet<DefaultMutableTreeNode>();
+        for( TreePath path : selectionPaths )
+        {
+            DefaultMutableTreeNode node = (DefaultMutableTreeNode)path.getLastPathComponent();
+        	if( node == null )
+        		continue;
+            
+    		Enumeration<DefaultMutableTreeNode> children = node.breadthFirstEnumeration();
+    		while( children.hasMoreElements() )
     		{
-    			TestError error = (TestError)nodeInfo;
-    			Command fixCommand = error.getFix();
-    			if( fixCommand != null )
-    			{
-    				commands.add(error.getMessage(), fixCommand);
-    			}
+        		DefaultMutableTreeNode childNode = children.nextElement();
+                if( processedNodes.contains(childNode) )
+                    continue;
+                
+                processedNodes.add(childNode);
+        		Object nodeInfo = childNode.getUserObject();
+        		if( nodeInfo instanceof TestError)
+        		{
+        			TestError error = (TestError)nodeInfo;
+        			Command fixCommand = error.getFix();
+        			if( fixCommand != null )
+        			{
+        				commands.add(error.getMessage(), fixCommand);
+        			}
+        		}
     		}
-		}
-		
+        }
+    		
 		Command fixCommand = null;
 		if( commands.size() == 0 )
