From 367c710efa0987d95747ca9a3cdc34be4b4880c8 Mon Sep 17 00:00:00 2001 From: hneemann Date: Fri, 2 Jun 2017 10:07:01 +0200 Subject: [PATCH] fixed a bug: undo sets the correct modified state if all modifications are undone since last save. --- src/main/java/de/neemann/digital/gui/Main.java | 2 +- .../gui/components/CircuitComponent.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index 3116ea63a..34c9d9b92 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -1081,7 +1081,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS private void saveFile(File filename, boolean toPrefs) { try { - circuitComponent.getCircuit().save(filename); + circuitComponent.save(filename); ensureModelIsStopped(); setFilename(filename, toPrefs); diff --git a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java index 687a613dc..3b1fe7a7a 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -30,6 +30,8 @@ import java.awt.geom.AffineTransform; import java.awt.geom.NoninvertibleTransformException; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -107,6 +109,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe private ArrayList modifications; private Circuit initialCircuit; private int undoPosition; + private int savedUndoPosition; private Style highLightStyle = Style.HIGHLIGHT; @@ -381,6 +384,10 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe redoAction.setEnabled(true); if (undoPosition == 0) undoAction.setEnabled(false); + + if (undoPosition != savedUndoPosition) + circuit.modified(); + circuit.fireChangedEvent(); repaintNeeded(); } @@ -414,6 +421,17 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe return Lang.get("menu_redo_tt"); } + /** + * save the circuit + * + * @param filename the filename + * @throws IOException IOException + */ + public void save(File filename) throws IOException { + circuit.save(filename); + savedUndoPosition = undoPosition; + } + /** * @return the main frame */