Changeset 5989 in josm


Ignore:
Timestamp:
2013-06-05T00:26:22+02:00 (12 years ago)
Author:
Don-vip
Message:

fix #8760 - When merging nodes, keep the oldest used one, not just only the oldest one.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/MergeNodesAction.java

    r5818 r5989  
    153153     */
    154154    public static Node selectTargetNode(Collection<Node> candidates) {
     155        Node oldestNode = null;
    155156        Node targetNode = null;
    156157        Node lastNode = null;
    157158        for (Node n : candidates) {
    158159            if (!n.isNew()) {
    159                 if (targetNode == null) {
    160                     targetNode = n;
    161                 } else if (n.getId() < targetNode.getId()) {
    162                     targetNode = n;
     160                // Among existing nodes, try to keep the oldest used one
     161                if (!n.getReferrers().isEmpty()) {
     162                    if (targetNode == null) {
     163                        targetNode = n;
     164                    } else if (n.getId() < targetNode.getId()) {
     165                        targetNode = n;
     166                    }
     167                } else if (oldestNode == null) {
     168                    oldestNode = n;
     169                } else if (n.getId() < oldestNode.getId()) {
     170                    oldestNode = n;
    163171                }
    164172            }
     
    166174        }
    167175        if (targetNode == null) {
    168             targetNode = lastNode;
     176            targetNode = (oldestNode != null ? oldestNode : lastNode);
    169177        }
    170178        return targetNode;
Note: See TracChangeset for help on using the changeset viewer.