From cf93a019ae02d92661b7a4aabc8469d4f725f169 Mon Sep 17 00:00:00 2001 From: hneemann Date: Fri, 2 Jun 2017 08:36:49 +0200 Subject: [PATCH] fixed a bug: undo sets the correct modified state if all modifications are undone. --- src/main/java/de/neemann/digital/draw/elements/Circuit.java | 5 ++++- src/main/java/de/neemann/digital/gui/Main.java | 2 +- .../de/neemann/digital/gui/components/CircuitComponent.java | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/neemann/digital/draw/elements/Circuit.java b/src/main/java/de/neemann/digital/draw/elements/Circuit.java index ae8993bfe..36f6e062f 100644 --- a/src/main/java/de/neemann/digital/draw/elements/Circuit.java +++ b/src/main/java/de/neemann/digital/draw/elements/Circuit.java @@ -661,7 +661,10 @@ public class Circuit { listeners.remove(listener); } - private void fireChangedEvent() { + /** + * notifies listeners about circuit changes + */ + public void fireChangedEvent() { if (listeners != null) for (ChangedListener l : listeners) l.circuitHasChanged(); diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index 4c398e778..3116ea63a 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -1114,7 +1114,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS @Override public void circuitHasChanged() { ensureModelIsStopped(); - if (!modifiedPrefixVisible) + if (modifiedPrefixVisible != circuitComponent.getCircuit().isModified()) setFilename(filename, false); } 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 158cec2e2..687a613dc 100644 --- a/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java +++ b/src/main/java/de/neemann/digital/gui/components/CircuitComponent.java @@ -381,7 +381,7 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe redoAction.setEnabled(true); if (undoPosition == 0) undoAction.setEnabled(false); - circuit.modified(); + circuit.fireChangedEvent(); repaintNeeded(); } }