diff --git a/JHotDraw/src/CH/ifa/draw/standard/DeleteCommand.java b/JHotDraw/src/CH/ifa/draw/standard/DeleteCommand.java
index 9e987ca609fdf86e74f7eb3c63448e9e35b4b3b1..9e2030ba73b79e7452c880341c653ac21d229d4a 100644
--- a/JHotDraw/src/CH/ifa/draw/standard/DeleteCommand.java
+++ b/JHotDraw/src/CH/ifa/draw/standard/DeleteCommand.java
@@ -11,7 +11,12 @@
package CH.ifa.draw.standard;
-import CH.ifa.draw.framework.*;
+import java.util.List;
+
+import CH.ifa.draw.framework.DrawingEditor;
+import CH.ifa.draw.framework.Figure;
+import CH.ifa.draw.framework.FigureEnumeration;
+import CH.ifa.draw.util.CollectionsFactory;
import CH.ifa.draw.util.Undoable;
import CH.ifa.draw.util.UndoableAdapter;
@@ -34,7 +39,27 @@ public class DeleteCommand extends FigureTransferCommand {
public void execute() {
super.execute();
setUndoActivity(createUndoActivity());
- getUndoActivity().setAffectedFigures(view().selection());
+ /* ricardo_padilha: bugfix for correct delete/undelete behavior
+ * When enumerating the affected figures we must not forget the dependent
+ * figures, since they are deleted as well!
+ */
+ FigureEnumeration fe = view().selection();
+ List affected = CollectionsFactory.current().createList();
+ Figure f;
+ FigureEnumeration dfe;
+ while (fe.hasNextFigure()) {
+ f = fe.nextFigure();
+ affected.add(f);
+ dfe = f.getDependendFigures();
+ if (dfe != null) {
+ while (dfe.hasNextFigure()) {
+ affected.add(dfe.nextFigure());
+ }
+ }
+ }
+ fe = new FigureEnumerator(affected);
+ getUndoActivity().setAffectedFigures(fe);
+ /* ricardo_padilha: end of bugfix */
deleteFigures(getUndoActivity().getAffectedFigures());
view().checkDamage();
}
diff --git a/jhotdraw6/src/org/jhotdraw/standard/DeleteCommand.java b/jhotdraw6/src/org/jhotdraw/standard/DeleteCommand.java
index 9e987ca609fdf86e74f7eb3c63448e9e35b4b3b1..9e2030ba73b79e7452c880341c653ac21d229d4a 100644
--- a/jhotdraw6/src/org/jhotdraw/standard/DeleteCommand.java
+++ b/jhotdraw6/src/org/jhotdraw/standard/DeleteCommand.java
@@ -11,7 +11,12 @@
package CH.ifa.draw.standard;
-import CH.ifa.draw.framework.*;
+import java.util.List;
+
+import CH.ifa.draw.framework.DrawingEditor;
+import CH.ifa.draw.framework.Figure;
+import CH.ifa.draw.framework.FigureEnumeration;
+import CH.ifa.draw.util.CollectionsFactory;
import CH.ifa.draw.util.Undoable;
import CH.ifa.draw.util.UndoableAdapter;
@@ -34,7 +39,27 @@ public class DeleteCommand extends FigureTransferCommand {
public void execute() {
super.execute();
setUndoActivity(createUndoActivity());
- getUndoActivity().setAffectedFigures(view().selection());
+ /* ricardo_padilha: bugfix for correct delete/undelete behavior
+ * When enumerating the affected figures we must not forget the dependent
+ * figures, since they are deleted as well!
+ */
+ FigureEnumeration fe = view().selection();
+ List affected = CollectionsFactory.current().createList();
+ Figure f;
+ FigureEnumeration dfe;
+ while (fe.hasNextFigure()) {
+ f = fe.nextFigure();
+ affected.add(f);
+ dfe = f.getDependendFigures();
+ if (dfe != null) {
+ while (dfe.hasNextFigure()) {
+ affected.add(dfe.nextFigure());
+ }
+ }
+ }
+ fe = new FigureEnumerator(affected);
+ getUndoActivity().setAffectedFigures(fe);
+ /* ricardo_padilha: end of bugfix */
deleteFigures(getUndoActivity().getAffectedFigures());
view().checkDamage();
}