Ticket #15906: 15906-v2.patch

File 15906-v2.patch, 2.1 KB (added by GerdP, 6 years ago)

correct handling of conflict warnings

  • 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        }
     
    104113        if (!allcmds.isEmpty()) {
    105114            Command cmd = allcmds.size() == 1 ? allcmds.get(0) : new SequenceCommand(tr("Revert changesets"), allcmds);
    106115            GuiHelper.runInEDT(() -> {
    107                 UndoRedoHandler.getInstance().add(cmd);
     116                if (allcmds.size() > 1) {
     117                    // combine previously added commands for multiple reverts into a single command
     118                    UndoRedoHandler.getInstance().undo(allcmds.size());
     119                    UndoRedoHandler.getInstance().add(cmd);
     120                }
    108121                if (numberOfConflicts > 0) {
    109122                    MainApplication.getMap().conflictDialog.warnNumNewConflicts(numberOfConflicts);
    110123                }