Ticket #18861: 18861.mini.patch
File 18861.mini.patch, 3.6 KB (added by , 4 years ago) |
---|
-
src/org/openstreetmap/josm/data/osm/visitor/paint/relations/Multipolygon.java
598 598 while (joined && left > 0) { 599 599 joined = false; 600 600 for (int i = 0; i < joinArray.length && left != 0; ++i) { 601 if (nodes != null && nodes.get(0) == nodes.get(nodes.size()-1)) { 602 // see 18861: Stop joining when a ring is closed 603 break; 604 } 601 605 if (joinArray[i] != null) { 602 606 Way c = joinArray[i]; 603 607 if (c.getNodesCount() == 0) { … … 613 617 int cl = c.getNodesCount()-1; 614 618 int nl; 615 619 if (nodes == null) { 616 nl = w.getNodesCount()-1; 617 if (w.getNode(nl) == c.getNode(0)) { 618 mode = 21; 619 } else if (w.getNode(nl) == c.getNode(cl)) { 620 mode = 22; 621 } else if (w.getNode(0) == c.getNode(0)) { 622 mode = 11; 623 } else if (w.getNode(0) == c.getNode(cl)) { 624 mode = 12; 625 } 626 } else { 627 nl = nodes.size()-1; 628 if (nodes.get(nl) == c.getNode(0)) { 629 mode = 21; 630 } else if (nodes.get(0) == c.getNode(cl)) { 631 mode = 12; 632 } else if (nodes.get(0) == c.getNode(0)) { 633 mode = 11; 634 } else if (nodes.get(nl) == c.getNode(cl)) { 635 mode = 22; 636 } 620 nodes = new ArrayList<>(w.getNodes()); 621 wayIds.add(w.getUniqueId()); 637 622 } 623 nl = nodes.size()-1; 624 if (nodes.get(nl) == c.getNode(0)) { 625 mode = 21; 626 } else if (nodes.get(0) == c.getNode(cl)) { 627 mode = 12; 628 } else if (nodes.get(0) == c.getNode(0)) { 629 mode = 11; 630 } else if (nodes.get(nl) == c.getNode(cl)) { 631 mode = 22; 632 } 638 633 if (mode != 0) { 639 634 joinArray[i] = null; 640 635 joined = true; … … 642 637 selected = true; 643 638 } 644 639 --left; 645 if (nodes == null) {646 nodes = new ArrayList<>(w.getNodes());647 wayIds.add(w.getUniqueId());648 }649 640 if (mode == 21) { 650 641 nodes.addAll(c.getNodes().subList(1, cl + 1)); 651 642 } else if (mode == 12) {