Fix closeDialog() throws NPE

This commit is contained in:
yushijinhun
2018-08-13 22:18:18 +08:00
parent b079940cd9
commit 7e820ba2a5
2 changed files with 8 additions and 16 deletions

View File

@@ -27,7 +27,6 @@ import org.jackhuang.hmcl.Metadata;
import org.jackhuang.hmcl.setting.Settings;
import org.jackhuang.hmcl.task.Task;
import org.jackhuang.hmcl.task.TaskExecutor;
import org.jackhuang.hmcl.ui.construct.DialogCloseEvent;
import org.jackhuang.hmcl.ui.construct.InputDialogPane;
import org.jackhuang.hmcl.ui.construct.MessageBox;
import org.jackhuang.hmcl.ui.construct.MessageDialogPane;
@@ -163,15 +162,6 @@ public final class Controllers {
return pane;
}
/**
* Use {@link DialogCloseEvent}
*/
public static void closeDialog(Region content) {
if (stage == null) // shut down
return;
decorator.closeDialog(content);
}
public static void navigate(Node node) {
if (decorator.getNowPage() == node)
decorator.showPage(null);

View File

@@ -615,12 +615,13 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza
}
@SuppressWarnings("unchecked")
public void closeDialog(Node node) {
private void closeDialog(Node node) {
FXUtils.checkFxUserThread();
Optional.ofNullable(node.getProperties().get(PROPERTY_DIALOG_CLOSE_HANDLER))
.ifPresent(handler -> node.removeEventHandler(DialogCloseEvent.CLOSE, (EventHandler<DialogCloseEvent>) handler));
if (dialog != null) {
dialogPane.pop(node);
if (dialogPane.getChildren().isEmpty()) {
@@ -629,6 +630,7 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza
dialogPane = null;
}
}
}
public void startWizard(WizardProvider wizardProvider) {
startWizard(wizardProvider, null);