Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 4243)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 4244)
@@ -212,4 +212,5 @@
                 scaler.setLocation(10,30);
 
+                new MapMover(MapView.this, contentPane);
                 OsmDataLayer layer = getEditLayer();
                 if (layer != null) {
@@ -221,6 +222,4 @@
                     AutoScaleAction.autoScale("layer");
                 }
-
-                new MapMover(MapView.this, contentPane);
             }
         });
Index: trunk/src/org/openstreetmap/josm/io/NMEAImporter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/NMEAImporter.java	(revision 4243)
+++ trunk/src/org/openstreetmap/josm/io/NMEAImporter.java	(revision 4244)
@@ -9,4 +9,5 @@
 
 import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
 
 import org.openstreetmap.josm.Main;
@@ -26,15 +27,26 @@
 
     @Override public void importData(File file, ProgressMonitor progressMonitor) throws IOException {
-        String fn = file.getName();
-        NmeaReader r = new NmeaReader(new FileInputStream(file), file.getAbsoluteFile().getParentFile());
+        final String fn = file.getName();
+        final NmeaReader r = new NmeaReader(new FileInputStream(file), file.getAbsoluteFile().getParentFile());
         if (r.getNumberOfCoordinates() > 0) {
             r.data.storageFile = file;
-            GpxLayer gpxLayer = new GpxLayer(r.data, fn, true);
-            Main.main.addLayer(gpxLayer);
-            if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
-                MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), file, gpxLayer);
-                if (ml.data.size() > 0) {
-                    Main.main.addLayer(ml);
+            final GpxLayer gpxLayer = new GpxLayer(r.data, fn, true);
+            final File fileFinal = file;
+
+            Runnable uiStuff = new Runnable() {
+                public void run() {
+                    Main.main.addLayer(gpxLayer);
+                    if (Main.pref.getBoolean("marker.makeautomarkers", true)) {
+                        MarkerLayer ml = new MarkerLayer(r.data, tr("Markers from {0}", fn), fileFinal, gpxLayer);
+                        if (ml.data.size() > 0) {
+                            Main.main.addLayer(ml);
+                        }
+                    }
                 }
+            };
+            if (SwingUtilities.isEventDispatchThread()) {
+                uiStuff.run();
+            } else {
+                SwingUtilities.invokeLater(uiStuff);
             }
         }
