Ticket #15676: currentselection.diff

File currentselection.diff, 2.1 KB (added by skorbut, 4 years ago)
  • src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java

     
    6060    // Optional argument 'select'
    6161    private final Set<SimplePrimitiveId> toSelect = new HashSet<>();
    6262
     63    private Boolean isKeepingCurrentSelection = false;
     64
    6365    @Override
    6466    public String getPermissionMessage() {
    6567        String msg = tr("Remote Control has been asked to load data from the API.") +
     
    159161        /**
    160162         * deselect objects if parameter addtags given
    161163         */
    162         if (args.containsKey("addtags")) {
     164        if (args.containsKey("addtags") && !isKeepingCurrentSelection) {
    163165            GuiHelper.executeByMainWorkerInEDT(() -> {
    164166                DataSet ds = MainApplication.getLayerManager().getEditDataSet();
    165167                if (ds == null) // e.g. download failed
     
    184186                        forTagAdd.add(p);
    185187                    }
    186188                }
     189                if (isKeepingCurrentSelection) {
     190                    newSel.addAll(ds.getSelected());
     191                    forTagAdd.addAll(ds.getSelected());
     192                }
    187193                toSelect.clear();
     194                isKeepingCurrentSelection = false;
    188195                ds.setSelected(newSel);
    189196                zoom(newSel, bbox);
    190197                MapFrame map = MainApplication.getMap();
     
    286293            toSelect.clear();
    287294            for (String item : args.get("select").split(",")) {
    288295                if (!item.isEmpty()) {
     296                    if (item.toLowerCase().equals("currentselection")) {
     297                        isKeepingCurrentSelection = true;
     298                        continue;
     299                    }
    289300                    try {
    290301                        toSelect.add(SimplePrimitiveId.fromString(item));
    291302                    } catch (IllegalArgumentException ex) {