Ticket #17740: 17740_v2.patch

File 17740_v2.patch, 1.8 KB (added by taylor.smock, 6 years ago)

Lock the dataset before we get the selection to avoid disappearing primitives (apparently, finally always executes, so that is the only endUpdate() needed)

  • src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java

     
    6767import org.openstreetmap.josm.command.Command;
    6868import org.openstreetmap.josm.command.SequenceCommand;
    6969import org.openstreetmap.josm.data.UndoRedoHandler;
     70import org.openstreetmap.josm.data.osm.DataSet;
    7071import org.openstreetmap.josm.data.osm.OsmDataManager;
    7172import org.openstreetmap.josm.data.osm.OsmPrimitive;
    7273import org.openstreetmap.josm.data.osm.Tag;
     
    233234     */
    234235    public void addTag() {
    235236        changedKey = null;
    236         sel = OsmDataManager.getInstance().getInProgressSelection();
    237         if (sel == null || sel.isEmpty())
    238             return;
     237        DataSet activeDataSet = OsmDataManager.getInstance().getActiveDataSet();
     238        try {
     239            activeDataSet.beginUpdate();
     240            sel = OsmDataManager.getInstance().getInProgressSelection();
     241            if (sel == null || sel.isEmpty()) {
     242                return;
     243            }
     244            final AddTagsDialog addDialog = getAddTagsDialog();
    239245
    240         final AddTagsDialog addDialog = getAddTagsDialog();
     246            addDialog.showDialog();
    241247
    242         addDialog.showDialog();
    243 
    244         addDialog.destroyActions();
    245         if (addDialog.getValue() == 1)
    246             addDialog.performTagAdding();
    247         else
    248             addDialog.undoAllTagsAdding();
     248            addDialog.destroyActions();
     249            if (addDialog.getValue() == 1)
     250                addDialog.performTagAdding();
     251            else
     252                addDialog.undoAllTagsAdding();
     253        } finally {
     254            activeDataSet.endUpdate();
     255        }
    249256    }
    250257
    251258    /**