Ticket #13024: patch-fix-13024.patch

File patch-fix-13024.patch, 1.7 KB (added by michael2402, 10 years ago)
  • src/org/openstreetmap/josm/gui/MapView.java

    diff --git a/src/org/openstreetmap/josm/gui/MapView.java b/src/org/openstreetmap/josm/gui/MapView.java
    index 10ddcf1..46648fe 100644
    a b LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {  
    318318    }
    319319
    320320    /**
     321     * A layer painter that issues a warning when being called.
     322     * @author Michael Zangl
     323     * @since xxx
     324     */
     325    private static class WarningLayerPainter implements LayerPainter {
     326        boolean warningPrinted = false;
     327        private Layer layer;
     328
     329        public WarningLayerPainter(Layer layer) {
     330            this.layer = layer;
     331        }
     332
     333        @Override
     334        public void paint(MapViewGraphics graphics) {
     335            if (!warningPrinted) {
     336                Main.warn("A layer triggered a repaint while being added: " + layer);
     337                warningPrinted = true;
     338            }
     339        }
     340
     341        @Override
     342        public void detachFromMapView(MapViewEvent event) {
     343            // ignored
     344        }
     345    }
     346
     347    /**
    321348     * Removes a layer change listener
    322349     * <p>
    323350     * To be removed: end of 2016.
    LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {  
    602629    public void layerAdded(LayerAddEvent e) {
    603630        try {
    604631            Layer layer = e.getAddedLayer();
     632            registeredLayers.put(layer, new WarningLayerPainter(layer));
     633            // Layers may trigger a redraw during this call if they open dialogs.
    605634            registeredLayers.put(layer, layer.attachToMapView(new MapViewEvent(this, false)));
    606635
    607636            ProjectionBounds viewProjectionBounds = layer.getViewProjectionBounds();