Ticket #17442: 17422.patch

File 17422.patch, 1.6 KB (added by GerdP, 5 years ago)

Possible solution?

  • src/org/openstreetmap/josm/gui/conflict/tags/RelationMemberConflictResolverModel.java

     
    2424import org.openstreetmap.josm.data.osm.Relation;
    2525import org.openstreetmap.josm.data.osm.RelationMember;
    2626import org.openstreetmap.josm.data.osm.RelationToChildReference;
     27import org.openstreetmap.josm.data.osm.Way;
    2728import org.openstreetmap.josm.gui.util.GuiHelper;
    2829
    2930/**
     
    181182        }
    182183        this.relations = relations;
    183184        this.primitives = memberPrimitives;
     185        // #17422 : avoid to show the conflict dialog when a new way is a simple replacement for an existing one
     186        if (memberPrimitives.size() == 2 && memberPrimitives.stream().allMatch(Way.class::isInstance)) {
     187            Iterator<? extends OsmPrimitive> iter = memberPrimitives.iterator();
     188            Way w1 = (Way) iter.next();
     189            Way w2 = (Way) iter.next();
     190            if ((w1.isNew() || w2.isNew()) && w1.getNodesCount() > 1 && w2.getNodesCount() > 1
     191                    && w1.firstNode() == w2.firstNode() && w1.lastNode() == w2.lastNode()) {
     192                // new way is simple replacement for old way
     193                for (RelationMemberConflictDecision decision : decisions) {
     194                    decision.decide(RelationMemberConflictDecisionType.KEEP);
     195                }
     196            }
     197        }
    184198        refresh(fireEvent);
    185199    }
    186200