From 50ef3dcd0f486600b27f8e84d7e7473d3161ec21 Mon Sep 17 00:00:00 2001 From: hneemann Date: Mon, 20 Jul 2020 16:00:06 +0200 Subject: [PATCH] fixed an window reopening bug after closing the main window while simulation is running. --- src/main/java/de/neemann/digital/gui/Main.java | 2 +- .../digital/gui/components/WindowPosManager.java | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/neemann/digital/gui/Main.java b/src/main/java/de/neemann/digital/gui/Main.java index f6c1354ff..a6d229ddf 100644 --- a/src/main/java/de/neemann/digital/gui/Main.java +++ b/src/main/java/de/neemann/digital/gui/Main.java @@ -273,7 +273,7 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS library.removeListener(circuitComponent); if (treeModel != null) library.removeListener(treeModel); - windowPosManager.closeAll(); + windowPosManager.shutdown(); } }); diff --git a/src/main/java/de/neemann/digital/gui/components/WindowPosManager.java b/src/main/java/de/neemann/digital/gui/components/WindowPosManager.java index 95202f7ba..6ce48e6be 100644 --- a/src/main/java/de/neemann/digital/gui/components/WindowPosManager.java +++ b/src/main/java/de/neemann/digital/gui/components/WindowPosManager.java @@ -17,6 +17,7 @@ import java.util.Map; public class WindowPosManager { private final Map windows; private final JFrame main; + private boolean shutdown; /** * Creates a new instance @@ -52,10 +53,21 @@ public class WindowPosManager { window.setSize(oldWindow.getSize()); oldWindow.dispose(); } - windows.put(id, window); + if (shutdown) + window.dispose(); + else + windows.put(id, window); return window; } + /** + * Closes all registered windows and avoids a reopening them. + */ + public void shutdown() { + shutdown = true; + closeAll(); + } + /** * Closes all registered windows */