Index: trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 7941)
+++ trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 7945)
@@ -36,4 +36,5 @@
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Shortcut;
@@ -84,5 +85,5 @@
         private final Relation multipolygonRelation;
 
-        public CreateUpdateMultipolygonTask(Collection<Way> selectedWays, Relation multipolygonRelation) {
+        private CreateUpdateMultipolygonTask(Collection<Way> selectedWays, Relation multipolygonRelation) {
             this.selectedWays = selectedWays;
             this.multipolygonRelation = multipolygonRelation;
@@ -140,5 +141,5 @@
         final Collection<Relation> selectedRelations = Main.main.getCurrentDataSet().getSelectedRelations();
 
-        if (selectedWays.size() < 1) {
+        if (selectedWays.isEmpty()) {
             // Sometimes it make sense creating multipoly of only one way (so it will form outer way)
             // and then splitting the way later (so there are multiple ways forming outer way)
@@ -156,10 +157,10 @@
 
         // download incomplete relation if necessary
-        if (multipolygonRelation != null && (multipolygonRelation.isIncomplete() || multipolygonRelation.hasIncompleteMembers())) {
+        if (multipolygonRelation != null && !multipolygonRelation.isNew()
+                && (multipolygonRelation.isIncomplete() || multipolygonRelation.hasIncompleteMembers())) {
             Main.worker.submit(new DownloadRelationTask(Collections.singleton(multipolygonRelation), Main.main.getEditLayer()));
         }
         // create/update multipolygon relation
         Main.worker.submit(new CreateUpdateMultipolygonTask(selectedWays, multipolygonRelation));
-
     }
 
@@ -172,5 +173,5 @@
             return selectedRelations.iterator().next();
         } else {
-            final HashSet<Relation> relatedRelations = new HashSet<>();
+            final Set<Relation> relatedRelations = new HashSet<>();
             for (final Way w : selectedWays) {
                 relatedRelations.addAll(Utils.filteredCollection(w.getReferrers(), Relation.class));
@@ -268,11 +269,16 @@
 
         MultipolygonBuilder pol = new MultipolygonBuilder();
-        String error = pol.makeFromWays(selectedWays);
+        final String error = pol.makeFromWays(selectedWays);
 
         if (error != null) {
             if (showNotif) {
-                new Notification(error)
+                GuiHelper.runInEDT(new Runnable() {
+                    @Override
+                    public void run() {
+                        new Notification(error)
                         .setIcon(JOptionPane.INFORMATION_MESSAGE)
                         .show();
+                    }
+                });
             }
             return null;
@@ -303,5 +309,5 @@
     private static void addMembers(JoinedPolygon polygon, Relation rel, String role) {
         final int count = rel.getMembersCount();
-        final HashSet<Way> ways = new HashSet<>(polygon.ways);
+        final Set<Way> ways = new HashSet<>(polygon.ways);
         for (int i = 0; i < count; i++) {
             final RelationMember m = rel.getMember(i);
