Ticket #6875: patch2.diff

File patch2.diff, 3.0 KB (added by Larry0ua, 11 years ago)

josm\core\src\org\openstreetmap\josm patch

  • gui/MapFrame.java

     
    285285        }
    286286        return button;
    287287    }
    288    
     288
    289289    public void validateToolBarToggle() {
    290290        toolBarToggle.removeAll();
    291291        for (ToggleDialog dlg : allDialogs) {
     
    317317
    318318    /**
    319319     * Change the operating map mode for the view. Will call unregister on the
    320      * old MapMode and register on the new one.
     320     * old MapMode and register on the new one. Now this function also verifies
     321     * if new map mode is correct mode for current layer and does not change mode
     322     * in such cases.
    321323     * @param mapMode   The new mode to set.
    322324     */
    323325    public void selectMapMode(MapMode newMapMode) {
     326        selectMapMode(newMapMode, mapView.getActiveLayer());
     327    }
     328
     329    /**
     330     * Another version of the selectMapMode for changing layer action.
     331     * Pass newly selected layer to this method.
     332     * @param newMapMode
     333     * @param newLayer
     334     */
     335    public void selectMapMode(MapMode newMapMode, Layer newLayer) {
     336        if (newMapMode == null || !newMapMode.layerIsSupported(newLayer))
     337            return;
     338
    324339        MapMode oldMapMode = this.mapMode;
    325340        if (newMapMode == oldMapMode)
    326341            return;
     
    329344        }
    330345        this.mapMode = newMapMode;
    331346        newMapMode.enterMode();
    332         lastMapMode.put(mapView.getActiveLayer(), newMapMode);
     347        lastMapMode.put(newLayer, newMapMode);
    333348        fireMapModeChanged(oldMapMode, newMapMode);
    334349    }
    335350
     
    471486            MapMode newMapMode = lastMapMode.get(newLayer);
    472487            modeChanged = newMapMode != mapMode;
    473488            if (newMapMode != null) {
    474                 selectMapMode(newMapMode);
    475             } // 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
     489                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
     490            } else {
     491                mapMode.exitMode(); // if new mode is null - simply exit from previous mode
     492            }
    476493        }
    477494        if (!modeChanged && mapMode != null) {
    478495            // Let mapmodes know about new active layer
  • Main.java

     
    266266        if (map == null) {
    267267            final MapFrame mapFrame = new MapFrame(contentPanePrivate);
    268268            setMapFrame(mapFrame);
    269             mapFrame.selectMapMode((MapMode)mapFrame.getDefaultButtonAction());
     269            mapFrame.selectMapMode((MapMode)mapFrame.getDefaultButtonAction(), layer);
    270270            mapFrame.setVisible(true);
    271271            mapFrame.initializeDialogsPane();
    272272            // bootstrapping problem: make sure the layer list dialog is going to