--- refactoring.api/src/org/netbeans/modules/refactoring/spi/impl/UndoableWrapper.java +++ refactoring.api/src/org/netbeans/modules/refactoring/spi/impl/UndoableWrapper.java @@ -42,6 +42,7 @@ package org.netbeans.modules.refactoring.spi.impl; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import javax.swing.text.Document; @@ -161,12 +162,19 @@ @Override public boolean addEdit(UndoableEdit ue) { - if (ue instanceof UndoableEditDelegate) { - return inner.addEdit(((UndoableEditDelegate) ue).unwrap()); + if (ue instanceof List) { + List listEdit = (List) ue; + UndoableEdit topEdit = listEdit.get(listEdit.size() - 1); + // Check that there's only original document's edit and the wrapping refactoring edit + boolean refatoringEditOnly = listEdit.size() == 2; + if (refatoringEditOnly && topEdit instanceof UndoableEditDelegate) { + inner.addEdit(listEdit.get(0)); + return true; } return false; - //return delegate.addEdit(ue); } + return false; + } public UndoableEdit unwrap() { return delegate;