Ticket #23423: 23423-2.patch

File 23423-2.patch, 1.5 KB (added by GerdP, 2 years ago)

store reference to MapView in MarkerLayer and log warning whenattachToMapView() is called more than once

  • src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java

     
    100100    final BasicStroke markerStroke = new StrokeProperty("draw.rawgps.markers.stroke", "1").get();
    101101
    102102    private final ListenerList<IGeoImageLayer.ImageChangeListener> imageChangeListenerListenerList = ListenerList.create();
     103    private MarkerMouseAdapter mouseAdapter;
     104    private MapView mapView;
    103105
    104106    /**
    105107     * The default color that is used for drawing markers.
     
    192194        fromLayer = null;
    193195        data.forEach(Marker::destroy);
    194196        data.clear();
     197        if (mouseAdapter != null && mapView != null)
     198            mapView.removeMouseListener(mouseAdapter);
    195199        super.destroy();
    196200    }
    197201
    198202    @Override
    199203    public LayerPainter attachToMapView(MapViewEvent event) {
    200         event.getMapView().addMouseListener(new MarkerMouseAdapter());
     204        if (mapView != null) {
     205            Logging.warn("MarkerLayer was already attached to a MapView");
     206        }
     207        mapView = event.getMapView();
     208        mouseAdapter = new MarkerMouseAdapter();
     209        mapView.addMouseListener(mouseAdapter);
    201210
    202211        if (event.getMapView().playHeadMarker == null) {
    203212            event.getMapView().playHeadMarker = PlayHeadMarker.create();