Ignore:
Timestamp:
2010-08-15T17:31:20+02:00 (14 years ago)
Author:
jttt
Message:

Fix #5333 "Merge selection" tool is broken

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/visitor/MergeSourceBuildingVisitor.java

    r3265 r3440  
    163163        // Create all primitives first
    164164        for (PrimitiveData primitive: mappedPrimitives.values()) {
    165             hull.getPrimitiveById(primitive, true);
    166         }
    167         // Then fill nodes with data
    168         for (PrimitiveData primitive : mappedPrimitives.values()) {
    169             if (primitive instanceof NodeData) {
    170                 if (!primitive.isIncomplete()) {
    171                     hull.getPrimitiveById(primitive).load(primitive);
    172                 }
     165            OsmPrimitive newPrimitive = hull.getPrimitiveById(primitive);
     166            boolean created = newPrimitive == null;
     167            if (created) {
     168                newPrimitive = primitive.getType().newInstance(primitive.getUniqueId(), true);
     169            }
     170            if (newPrimitive instanceof Node && !primitive.isIncomplete()) {
     171                newPrimitive.load(primitive);
     172            }
     173            if (created) {
     174                hull.addPrimitive(newPrimitive);
    173175            }
    174176        }
    175177        // Then ways and relations
    176178        for (PrimitiveData primitive : mappedPrimitives.values()) {
    177             if (!(primitive instanceof NodeData)) {
    178                 if (!primitive.isIncomplete()) {
    179                     hull.getPrimitiveById(primitive).load(primitive);
    180                 }
     179            if (!(primitive instanceof NodeData) && !primitive.isIncomplete()) {
     180                hull.getPrimitiveById(primitive).load(primitive);
    181181            }
    182182        }
Note: See TracChangeset for help on using the changeset viewer.