From c4f0a6a1978f4c819209a7ce5f8776050f9975ea Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Tue, 18 Dec 2018 13:32:38 +0800 Subject: [PATCH] Suppress IllegalStateException. Closes #500 --- .../java/org/jackhuang/hmcl/ui/construct/Navigator.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/Navigator.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/Navigator.java index 6df697759..05716c8e2 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/Navigator.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/Navigator.java @@ -32,6 +32,7 @@ import org.jackhuang.hmcl.util.Logging; import java.util.Optional; import java.util.Stack; +import java.util.logging.Level; public class Navigator extends StackPane { private static final String PROPERTY_DIALOG_CLOSE_HANDLER = Navigator.class.getName() + ".closeListener"; @@ -94,10 +95,14 @@ public class Navigator extends StackPane { if (!initialized) throw new IllegalStateException("Navigator must have a root page"); + if (stack.peek() != from) { + // Allow page to be closed multiple times. + Logging.LOG.log(Level.INFO, "Closing already closed page: " + from, new Throwable()); + return; + } + Logging.LOG.info("Closed page " + from); - if (stack.peek() != from) - throw new IllegalStateException(); stack.pop(); Node node = stack.peek();