Ticket #15906: 15906.patch

File 15906.patch, 2.0 KB (added by GerdP, 6 years ago)
  • src/reverter/RevertChangesetTask.java

     
    8888                Logging.info("Reverting changeset {0}", Long.toString(changesetId));
    8989                RevertChangesetCommand cmd = revertChangeset(changesetId);
    9090                if (cmd != null) {
     91                    GuiHelper.runInEDT(() -> {
     92                        UndoRedoHandler.getInstance().add(cmd);
     93                    });
    9194                    allcmds.add(cmd);
    9295                }
    9396                Logging.info("Reverted changeset {0}", Long.toString(changesetId));
    9497                newLayer = false; // reuse layer for subsequent reverts
    9598            } catch (OsmTransferException e) {
     99                if (!allcmds.isEmpty()) {
     100                    GuiHelper.runInEDT(() -> UndoRedoHandler.getInstance().undo(allcmds.size()));
     101                }
    96102                Logging.error(e);
    97103                throw e;
    98104            } catch (UserCancelException e) {
    99105                Logging.warn("Revert canceled");
    100106                Logging.trace(e);
     107                if (!allcmds.isEmpty()) {
     108                    GuiHelper.runInEDT(() -> UndoRedoHandler.getInstance().undo(allcmds.size()));
     109                }
    101110                return;
    102111            }
    103112        }
    104         if (!allcmds.isEmpty()) {
     113        if (allcmds.size() > 1) {
     114            // combine previously added commands for multiple reverts into a single command
    105115            Command cmd = allcmds.size() == 1 ? allcmds.get(0) : new SequenceCommand(tr("Revert changesets"), allcmds);
    106116            GuiHelper.runInEDT(() -> {
     117                UndoRedoHandler.getInstance().undo(allcmds.size());
    107118                UndoRedoHandler.getInstance().add(cmd);
    108119                if (numberOfConflicts > 0) {
    109120                    MainApplication.getMap().conflictDialog.warnNumNewConflicts(numberOfConflicts);