Index: trunk/src/org/openstreetmap/josm/gui/NotificationManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/NotificationManager.java	(revision 11995)
+++ trunk/src/org/openstreetmap/josm/gui/NotificationManager.java	(revision 11996)
@@ -40,4 +40,5 @@
 import org.openstreetmap.josm.gui.help.HelpBrowser;
 import org.openstreetmap.josm.gui.help.HelpUtil;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.ImageProvider;
 
@@ -103,29 +104,30 @@
         if (currentNotification == null) return;
 
-        currentNotificationPanel = new NotificationPanel(currentNotification, new FreezeMouseListener(), e -> this.stopHideTimer());
-        currentNotificationPanel.validate();
-
-        int margin = 5;
-        JFrame parentWindow = (JFrame) Main.parent;
-        Dimension size = currentNotificationPanel.getPreferredSize();
-        if (parentWindow != null) {
-            int x;
-            int y;
-            if (Main.isDisplayingMapView() && Main.map.mapView.getHeight() > 0) {
-                MapView mv = Main.map.mapView;
-                Point mapViewPos = SwingUtilities.convertPoint(mv.getParent(), mv.getX(), mv.getY(), Main.parent);
-                x = mapViewPos.x + margin;
-                y = mapViewPos.y + mv.getHeight() - Main.map.statusLine.getHeight() - size.height - margin;
-            } else {
-                x = margin;
-                y = parentWindow.getHeight() - Main.toolbar.control.getSize().height - size.height - margin;
-            }
-            parentWindow.getLayeredPane().add(currentNotificationPanel, JLayeredPane.POPUP_LAYER, 0);
-
-            currentNotificationPanel.setLocation(x, y);
-        }
-        currentNotificationPanel.setSize(size);
-
-        currentNotificationPanel.setVisible(true);
+        GuiHelper.runInEDTAndWait(() -> {
+            currentNotificationPanel = new NotificationPanel(currentNotification, new FreezeMouseListener(), e -> this.stopHideTimer());
+            currentNotificationPanel.validate();
+
+            int margin = 5;
+            JFrame parentWindow = (JFrame) Main.parent;
+            Dimension size = currentNotificationPanel.getPreferredSize();
+            if (parentWindow != null) {
+                int x;
+                int y;
+                if (Main.isDisplayingMapView() && Main.map.mapView.getHeight() > 0) {
+                    MapView mv = Main.map.mapView;
+                    Point mapViewPos = SwingUtilities.convertPoint(mv.getParent(), mv.getX(), mv.getY(), Main.parent);
+                    x = mapViewPos.x + margin;
+                    y = mapViewPos.y + mv.getHeight() - Main.map.statusLine.getHeight() - size.height - margin;
+                } else {
+                    x = margin;
+                    y = parentWindow.getHeight() - Main.toolbar.control.getSize().height - size.height - margin;
+                }
+                parentWindow.getLayeredPane().add(currentNotificationPanel, JLayeredPane.POPUP_LAYER, 0);
+
+                currentNotificationPanel.setLocation(x, y);
+            }
+            currentNotificationPanel.setSize(size);
+            currentNotificationPanel.setVisible(true);
+        });
 
         running = true;
