Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 3923)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 3924)
@@ -476,5 +476,5 @@
             if(!fileList.isEmpty())
             {
-                OpenFileAction.openFiles(fileList);
+                OpenFileAction.openFiles(fileList, true);
             }
         }
Index: trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 3923)
+++ trunk/src/org/openstreetmap/josm/actions/OpenFileAction.java	(revision 3924)
@@ -14,4 +14,5 @@
 import java.util.Collection;
 import java.util.Collections;
+import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
@@ -73,5 +74,10 @@
      */
     static public void openFiles(List<File> fileList) {
+        openFiles(fileList, false);
+    }
+
+    static public void openFiles(List<File> fileList, boolean recordHistory) {
         OpenFileTask task = new OpenFileTask(fileList, null);
+        task.setRecordHistory(recordHistory);
         Main.worker.submit(task);
     }
@@ -225,10 +231,10 @@
             } else {
                 // find appropriate importer
-                MultiMap<FileImporter, File> map = new MultiMap<FileImporter, File>();
+                MultiMap<FileImporter, File> importerMap = new MultiMap<FileImporter, File>();
                 List<File> filesWithUnknownImporter = new LinkedList<File>();
                 FILES: for (File f : files) {
                     for (FileImporter importer : ExtensionFileFilter.importers) {
                         if (importer.acceptFile(f)) {
-                            map.put(importer, f);
+                            importerMap.put(importer, f);
                             continue FILES;
                         }
@@ -239,17 +245,25 @@
                     alertFilesWithUnknownImporter(filesWithUnknownImporter);
                 }
-                List<FileImporter> ims = new ArrayList<FileImporter>(map.keySet());
-                Collections.sort(ims);
-                Collections.reverse(ims);
+                List<FileImporter> importers = new ArrayList<FileImporter>(importerMap.keySet());
+                Collections.sort(importers);
+                Collections.reverse(importers);
 
                 Set<String> fileHistory = new LinkedHashSet<String>();
-
-                for (FileImporter importer : ims) {
-                    List<File> files = new ArrayList<File>(map.get(importer));
+                Set<String> failedAll = new HashSet<String>();
+
+                for (FileImporter importer : importers) {
+                    List<File> files = new ArrayList<File>(importerMap.get(importer));
                     importData(importer, files);
+                    // suppose all files will fail to load
+                    List<File> failedFiles = new ArrayList<File>(files);
 
                     if (recordHistory && !importer.isBatchImporter()) {
-                        for (File f : files) {
+                        // remove the files which didn't fail to load from the failed list
+                        failedFiles.removeAll(successfullyOpenedFiles);
+                        for (File f : successfullyOpenedFiles) {
                             fileHistory.add(f.getPath());
+                        }
+                        for (File f : failedFiles) {
+                            failedAll.add(f.getPath());
                         }
                     }
@@ -259,4 +273,6 @@
                     Collection<String> oldFileHistory = Main.pref.getCollection("file-open.history");
                     fileHistory.addAll(oldFileHistory);
+                    // remove the files which failed to load from the list
+                    fileHistory.removeAll(failedAll);
                     int maxsize = Math.max(0, Main.pref.getInteger("file-open.history.max-size", 15));
                     Collection<String> trimmedFileHistory = new ArrayList<String>(Math.min(maxsize, fileHistory.size()));
