Index: trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 7945)
+++ trunk/src/org/openstreetmap/josm/actions/CreateMultipolygonAction.java	(revision 7946)
@@ -22,4 +22,5 @@
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.relation.DownloadSelectedIncompleteMembersAction;
 import org.openstreetmap.josm.command.AddCommand;
 import org.openstreetmap.josm.command.ChangeCommand;
@@ -34,4 +35,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.gui.Notification;
+import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationMemberTask;
 import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
@@ -156,8 +158,13 @@
                 : null;
 
-        // download incomplete relation if necessary
-        if (multipolygonRelation != null && !multipolygonRelation.isNew()
-                && (multipolygonRelation.isIncomplete() || multipolygonRelation.hasIncompleteMembers())) {
-            Main.worker.submit(new DownloadRelationTask(Collections.singleton(multipolygonRelation), Main.main.getEditLayer()));
+        // download incomplete relation or incomplete members if necessary
+        if (multipolygonRelation != null) {
+            if (!multipolygonRelation.isNew() && multipolygonRelation.isIncomplete()) {
+                Main.worker.submit(new DownloadRelationTask(Collections.singleton(multipolygonRelation), Main.main.getEditLayer()));
+            } else if (multipolygonRelation.hasIncompleteMembers()) {
+                Main.worker.submit(new DownloadRelationMemberTask(multipolygonRelation,
+                        DownloadSelectedIncompleteMembersAction.buildSetOfIncompleteMembers(Collections.singleton(multipolygonRelation)),
+                        Main.main.getEditLayer()));
+            }
         }
         // create/update multipolygon relation
Index: trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 7945)
+++ trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 7946)
@@ -24,4 +24,6 @@
 public class DownloadSelectedIncompleteMembersAction extends AbstractRelationAction {
 
+    private Collection<OsmPrimitive> incompleteMembers;
+
     /**
      * Constructs a new <code>DownloadSelectedIncompleteMembersAction</code>.
@@ -38,8 +40,13 @@
      * @return The set of incomplete members of the given relations.
      */
-    public Set<OsmPrimitive> buildSetOfIncompleteMembers(Collection<Relation> rels) {
+    public static Set<OsmPrimitive> buildSetOfIncompleteMembers(Collection<Relation> rels) {
         Set<OsmPrimitive> ret = new HashSet<>();
         for (Relation r : rels) {
-            ret.addAll(r.getIncompleteMembers());
+            ret.addAll(Utils.filter(r.getIncompleteMembers(), new Predicate<OsmPrimitive>() {
+                @Override
+                public boolean evaluate(OsmPrimitive osm) {
+                    return !osm.isNew();
+                }
+            }));
         }
         return ret;
@@ -51,5 +58,5 @@
         Main.worker.submit(new DownloadRelationMemberTask(
                 relations,
-                buildSetOfIncompleteMembers(relations),
+                incompleteMembers,
                 Main.main.getEditLayer()));
     }
@@ -59,7 +66,9 @@
         // selected relations with incomplete members
         this.relations = Utils.filter(getRelations(primitives), new Predicate<Relation>(){
-            @Override public boolean evaluate(Relation r) {
-                return !r.isNew() && r.hasIncompleteMembers();
+            @Override
+            public boolean evaluate(Relation r) {
+                return r.hasIncompleteMembers();
             }});
+        this.incompleteMembers = buildSetOfIncompleteMembers(relations);
         updateEnabledState();
     }
@@ -67,5 +76,5 @@
     @Override
     protected void updateEnabledState() {
-        setEnabled(!relations.isEmpty() && !Main.isOffline(OnlineResource.OSM_API));
+        setEnabled(!relations.isEmpty() &&!incompleteMembers.isEmpty() && !Main.isOffline(OnlineResource.OSM_API));
     }
 }
