Changeset 8818 in josm for trunk/src/org


Ignore:
Timestamp:
2015-10-04T12:19:24+02:00 (4 years ago)
Author:
simon04
Message:

fix #11925, see #11897 - Re-enable merging of gpx, marker, geoimage layers

Regression of r8728.

Location:
trunk/src/org/openstreetmap/josm/gui
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java

    r8789 r8818  
    864864                    setEnabled(false);
    865865                } else  if (getModel().getSelectedLayers().size() > 1) {
    866                     Layer firstLayer = getModel().getSelectedLayers().get(0);
    867                     for (Layer l: getModel().getSelectedLayers()) {
    868                         if (l != firstLayer && (!l.isMergable(firstLayer) || !firstLayer.isMergable(l))) {
    869                             setEnabled(false);
    870                             return;
    871                         }
    872                     }
    873                     setEnabled(true);
     866                    setEnabled(supportLayers(getModel().getSelectedLayers()));
    874867                } else {
    875868                    Layer selectedLayer = getModel().getSelectedLayers().get(0);
     
    887880        @Override
    888881        public boolean supportLayers(List<Layer> layers) {
    889             for (Layer l : layers) {
    890                 if (!(l instanceof OsmDataLayer)) {
    891                     return false;
    892                 }
    893             }
    894             return true;
     882            if (layers.size() < 1) {
     883                return false;
     884            } else {
     885                final Layer firstLayer = layers.get(0);
     886                final List<Layer> remainingLayers = layers.subList(1, layers.size());
     887                return getModel().getPossibleMergeTargets(firstLayer).containsAll(remainingLayers);
     888            }
    895889        }
    896890
     
    15041498        public List<Layer> getPossibleMergeTargets(Layer source) {
    15051499            List<Layer> targets = new ArrayList<>();
    1506             if (source == null)
     1500            if (source == null || !Main.isDisplayingMapView()) {
    15071501                return targets;
    1508             for (Layer target : getLayers()) {
     1502            }
     1503            for (Layer target : Main.map.mapView.getAllLayersAsList()) {
    15091504                if (source == target) {
    15101505                    continue;
  • trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java

    r8804 r8818  
    185185                LayerListDialog.getInstance().createShowHideLayerAction(),
    186186                LayerListDialog.getInstance().createDeleteLayerAction(),
     187                LayerListDialog.getInstance().createMergeLayerAction(this),
    187188                SeparatorLayerAction.INSTANCE,
    188189                new LayerSaveAction(this),
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java

    r8734 r8818  
    335335        entries.add(LayerListDialog.getInstance().createShowHideLayerAction());
    336336        entries.add(LayerListDialog.getInstance().createDeleteLayerAction());
     337        entries.add(LayerListDialog.getInstance().createMergeLayerAction(this));
    337338        entries.add(new RenameLayerAction(null, this));
    338339        entries.add(SeparatorLayerAction.INSTANCE);
  • trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java

    r8806 r8818  
    253253        components.add(new ShowHideMarkerText(this));
    254254        components.add(LayerListDialog.getInstance().createDeleteLayerAction());
     255        components.add(LayerListDialog.getInstance().createMergeLayerAction(this));
    255256        components.add(SeparatorLayerAction.INSTANCE);
    256257        components.add(new CustomizeColor(this));
Note: See TracChangeset for help on using the changeset viewer.