Ticket #3781: more-multipolygon-work.patch

File more-multipolygon-work.patch, 4.2 KB (added by hansendc, 16 years ago)

Return the right PolyData, and consult pd.selected in the right spot.

  • (a) core/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java~more-multipolygon-work vs. (b) core-dave/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java

    
    ---
    
     core-dave/src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java |   39 ++++------
     1 file changed, 17 insertions(+), 22 deletions(-)
    
    diff -puN src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java~more-multipolygon-work src/org/openstreetmap/josm/data/osm/visitor/MapPaintVisitor.java
    a b public class MapPaintVisitor extends Sim  
    491491            }
    492492            PolyData pd = new PolyData(w);
    493493            pd.selected = selected;
    494             res.add(new PolyData(w));
     494            res.add(pd);
    495495        } /* while(left != 0) */
    496496
    497497        return res;
    public class MapPaintVisitor extends Sim  
    952952                        m.getMember().getDisplayName(DefaultNameFormatter.getInstance())), true);
    953953            } else if(m.getMember().incomplete) {
    954954                incomplete = true;
    955             } else
    956             {
    957                 if(m.isWay())
    958                 {
     955            } else {
     956                if(m.isWay()) {
    959957                    Way w = m.getWay();
    960                     if(w.getNodesCount() < 2)
    961                     {
     958                    if(w.getNodesCount() < 2) {
    962959                        r.putError(tr("Way ''{0}'' with less than two points.",
    963960                                w.getDisplayName(DefaultNameFormatter.getInstance())), true);
    964961                    }
    public class MapPaintVisitor extends Sim  
    966963                        inner.add(w);
    967964                    } else if("outer".equals(m.getRole())) {
    968965                        outer.add(w);
    969                     } else
    970                     {
     966                    } else {
    971967                        r.putError(tr("No useful role ''{0}'' for Way ''{1}''.",
    972968                                m.getRole(), w.getDisplayName(DefaultNameFormatter.getInstance())), true);
    973969                        if(!m.hasRole()) {
    public class MapPaintVisitor extends Sim  
    10301026            }
    10311027            else if(zoomok)
    10321028            {
    1033                 LinkedList<PolyData> poly = new LinkedList<PolyData>();
     1029                LinkedList<PolyData> outerPoly = new LinkedList<PolyData>();
    10341030                for (Way w : outerclosed) {
    1035                     poly.add(new PolyData(w));
     1031                    outerPoly.add(new PolyData(w));
    10361032                }
    1037                 poly.addAll(joinWays(outerjoin, incomplete ? null : r));
     1033                outerPoly.addAll(joinWays(outerjoin, incomplete ? null : r));
    10381034                for (Way wInner : innerclosed)
    10391035                {
    10401036                    PolyData pdInner = new PolyData(wInner);
    10411037                    // incomplete is probably redundant
    1042                     addInnerToOuters(r, incomplete, pdInner, poly);
     1038                    addInnerToOuters(r, incomplete, pdInner, outerPoly);
    10431039                }
    10441040                for (PolyData pdInner : joinWays(innerjoin, incomplete ? null : r)) {
    1045                     addInnerToOuters(r, incomplete, pdInner, poly);
     1041                    addInnerToOuters(r, incomplete, pdInner, outerPoly);
    10461042                }
    10471043                AreaElemStyle areaStyle = (AreaElemStyle)wayStyle;
    1048                 for (PolyData pd : poly)
    1049                 {
     1044                for (PolyData pd : outerPoly) {
    10501045                    Polygon p = pd.get();
    1051                     if(isPolygonVisible(p))
    1052                     {
    1053                         boolean selected = (data.isSelected(pd.way) || data.isSelected(r));
    1054                         drawAreaPolygon(p, selected ? selectedColor : areaStyle.color);
    1055                         visible = true;
    1056                     }
     1046                    if(!isPolygonVisible(p))
     1047                        continue;
     1048
     1049                    boolean selected = pd.selected || data.isSelected(pd.way) || data.isSelected(r);
     1050                    drawAreaPolygon(p, selected ? selectedColor : areaStyle.color);
     1051                    visible = true;
    10571052                }
    10581053            }
    10591054            if(!visible) /* nothing visible, so disable relation and all its ways */