Ticket #7523: josm-fix-highlighting.patch

File josm-fix-highlighting.patch, 1.7 KB (added by Daeron, 13 years ago)
  • src/org/openstreetmap/josm/actions/mapmode/DrawAction.java

     
    140140        updateStatusLine();
    141141        // repaint required if the helper line is active.
    142142        boolean needsRepaint = drawHelperLine && !wayIsFinished;
    143         // move newHighlights to oldHighlights; only update changed primitives
    144         for(OsmPrimitive x : newHighlights) {
    145             if(oldHighlights.contains(x)) {
    146                 continue;
     143
     144        if (drawTargetHighlight) {
     145            // move newHighlights to oldHighlights; only update changed primitives
     146            for(OsmPrimitive x : newHighlights) {
     147                if(oldHighlights.contains(x)) {
     148                    continue;
     149                }
     150                needsRepaint = true;
     151                x.setHighlighted(true);
    147152            }
    148             needsRepaint = true;
    149             x.setHighlighted(true);
     153            oldHighlights.removeAll(newHighlights);
     154            for(OsmPrimitive x : oldHighlights) {
     155                x.setHighlighted(false);
     156                needsRepaint = true;
     157            }
     158            oldHighlights = newHighlights;
    150159        }
    151         oldHighlights.removeAll(newHighlights);
    152         for(OsmPrimitive x : oldHighlights) {
    153             x.setHighlighted(false);
    154             needsRepaint = true;
    155         }
    156         oldHighlights = newHighlights;
    157160
    158         if ((!drawHelperLine || wayIsFinished) && !drawTargetHighlight)
     161        if (!needsRepaint && !drawTargetHighlight)
    159162            return;
    160163
    161164        // update selection to reflect which way being modified