From 923924638eec79f977ec9d8973afd768c806bf8b Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Thu, 20 Sep 2018 22:54:41 +0800 Subject: [PATCH] Add a close button to close all pages --- .../org/jackhuang/hmcl/ui/construct/Navigator.java | 5 +++++ .../hmcl/ui/decorator/DecoratorController.java | 11 ++++++----- 2 files changed, 11 insertions(+), 5 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 dab15abe4..f499bb191 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 @@ -66,6 +66,11 @@ public class Navigator extends StackPane { close(stack.peek()); } + public void clear() { + while (stack.size() > 1) + close(stack.peek()); + } + @SuppressWarnings("unchecked") public void close(Node from) { FXUtils.checkFxUserThread(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java index 2431781a6..3e6040972 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorController.java @@ -204,10 +204,12 @@ public class DecoratorController { if (navigator.getCurrentPage() instanceof DecoratorPage) { DecoratorPage page = (DecoratorPage) navigator.getCurrentPage(); - page.onForceToClose(); - } else { - navigator.close(); + if (page.canForceToClose()) { + page.onForceToClose(); + return; + } } + navigator.clear(); } private void back() { @@ -249,14 +251,13 @@ public class DecoratorController { if (to instanceof DecoratorPage) { decorator.drawerTitleProperty().bind(((DecoratorPage) to).titleProperty()); - decorator.canCloseProperty().set(((DecoratorPage) to).canForceToClose()); } else { decorator.drawerTitleProperty().unbind(); decorator.drawerTitleProperty().set(""); - decorator.canCloseProperty().set(false); } decorator.canBackProperty().set(navigator.canGoBack()); + decorator.canCloseProperty().set(navigator.canGoBack()); if (navigator.canGoBack()) { decorator.setContentBackground(new Background(new BackgroundFill(Color.rgb(244, 244, 244, 0.5), CornerRadii.EMPTY, Insets.EMPTY)));