mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-23 11:14:44 -04:00
Do not reuse dialog
This commit is contained in:
parent
b7a5a60091
commit
9bffc68c70
@ -96,13 +96,14 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza
|
|||||||
private final boolean max, min;
|
private final boolean max, min;
|
||||||
private final WizardController wizardController = new WizardController(this);
|
private final WizardController wizardController = new WizardController(this);
|
||||||
private final Queue<Object> cancelQueue = new ConcurrentLinkedQueue<>();
|
private final Queue<Object> cancelQueue = new ConcurrentLinkedQueue<>();
|
||||||
private final JFXDialog dialog;
|
|
||||||
|
|
||||||
private double xOffset, yOffset, newX, newY, initX, initY;
|
private double xOffset, yOffset, newX, newY, initX, initY;
|
||||||
private boolean allowMove, isDragging, maximized;
|
private boolean allowMove, isDragging, maximized;
|
||||||
private BoundingBox originalBox, maximizedBox;
|
private BoundingBox originalBox, maximizedBox;
|
||||||
private final TransitionHandler animationHandler;
|
private final TransitionHandler animationHandler;
|
||||||
private final StackContainerPane dialogPane = new StackContainerPane();
|
|
||||||
|
private JFXDialog dialog;
|
||||||
|
private StackContainerPane dialogPane;
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private StackPane contentPlaceHolder;
|
private StackPane contentPlaceHolder;
|
||||||
@ -181,12 +182,6 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza
|
|||||||
btnMax.fire();
|
btnMax.fire();
|
||||||
});
|
});
|
||||||
|
|
||||||
dialog = new JFXDialog();
|
|
||||||
dialog.setOverlayClose(false);
|
|
||||||
drawerWrapper.getChildren().add(0, dialog);
|
|
||||||
dialog.setDialogContainer(drawerWrapper);
|
|
||||||
dialog.setContent(dialogPane);
|
|
||||||
|
|
||||||
welcomeView.setCursor(Cursor.HAND);
|
welcomeView.setCursor(Cursor.HAND);
|
||||||
welcomeView.setOnMouseClicked(e -> {
|
welcomeView.setOnMouseClicked(e -> {
|
||||||
Timeline nowAnimation = new Timeline();
|
Timeline nowAnimation = new Timeline();
|
||||||
@ -572,13 +567,21 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza
|
|||||||
public void showDialog(Node node) {
|
public void showDialog(Node node) {
|
||||||
FXUtils.checkFxUserThread();
|
FXUtils.checkFxUserThread();
|
||||||
|
|
||||||
|
if (dialog == null) {
|
||||||
|
dialog = new JFXDialog();
|
||||||
|
dialogPane = new StackContainerPane();
|
||||||
|
|
||||||
|
dialog.setContent(dialogPane);
|
||||||
|
dialog.setDialogContainer(drawerWrapper);
|
||||||
|
dialog.setOverlayClose(false);
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
dialogPane.push(node);
|
||||||
|
|
||||||
EventHandler<DialogCloseEvent> handler = event -> closeDialog(node);
|
EventHandler<DialogCloseEvent> handler = event -> closeDialog(node);
|
||||||
node.getProperties().put(PROPERTY_DIALOG_CLOSE_HANDLER, handler);
|
node.getProperties().put(PROPERTY_DIALOG_CLOSE_HANDLER, handler);
|
||||||
node.addEventHandler(DialogCloseEvent.CLOSE, handler);
|
node.addEventHandler(DialogCloseEvent.CLOSE, handler);
|
||||||
|
|
||||||
if (dialogPane.isEmpty())
|
|
||||||
dialog.show();
|
|
||||||
dialogPane.push(node);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@ -589,8 +592,11 @@ public final class Decorator extends StackPane implements TaskExecutorDialogWiza
|
|||||||
.ifPresent(handler -> node.removeEventHandler(DialogCloseEvent.CLOSE, (EventHandler<DialogCloseEvent>) handler));
|
.ifPresent(handler -> node.removeEventHandler(DialogCloseEvent.CLOSE, (EventHandler<DialogCloseEvent>) handler));
|
||||||
|
|
||||||
dialogPane.pop(node);
|
dialogPane.pop(node);
|
||||||
|
|
||||||
if (dialogPane.getChildren().isEmpty()) {
|
if (dialogPane.getChildren().isEmpty()) {
|
||||||
dialog.close();
|
dialog.close();
|
||||||
|
dialog = null;
|
||||||
|
dialogPane = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user