Ticket #7045: x7045.diff

File x7045.diff, 1.3 KB (added by Larry0ua, 14 years ago)

patch to fix the bug

  • MapFrame.java

     
    485485    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
    486486        boolean modeChanged = false;
    487487        if (mapMode == null || !mapMode.layerIsSupported(newLayer)) {
    488             MapMode newMapMode = lastMapMode.get(newLayer);
     488            MapMode newMapMode = getLastMapMode(newLayer);
    489489            modeChanged = newMapMode != mapMode;
    490490            if (newMapMode != null) {
    491491                selectMapMode(newMapMode, newLayer); // it would be nice to select first supported mode when layer is first selected, but it don't work well with for example editgpx layer
     
    502502        Main.map.mapView.preferenceChanged(null);
    503503    }
    504504
     505    private MapMode getLastMapMode(Layer newLayer) {
     506        MapMode mode = lastMapMode.get(newLayer);
     507        if (mode == null) {
     508            // if no action is selected - try to select default action
     509            Action defaultMode = getDefaultButtonAction();
     510            if (defaultMode instanceof MapMode & ((MapMode)defaultMode).layerIsSupported(newLayer)) {
     511                mode = (MapMode) defaultMode;
     512            }
     513        }
     514        return mode;
     515    }
     516
    505517    @Override
    506518    public void layerAdded(Layer newLayer) { }
    507519