Fix #3694: 显示对话框时隐藏焦点 (#3717)

This commit is contained in:
Glavo
2025-03-08 08:47:19 +08:00
committed by GitHub
parent ec5236368a
commit 696b9bd7ef

View File

@@ -397,23 +397,24 @@ public class DecoratorController {
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 (node instanceof DialogAware) {
DialogAware dialogAware = (DialogAware) node;
if (dialog.isVisible()) { if (dialog.isVisible()) {
dialogAware.onDialogShown(); dialog.requestFocus();
if (node instanceof DialogAware)
((DialogAware) node).onDialogShown();
} else { } else {
dialog.visibleProperty().addListener(new ChangeListener<Boolean>() { dialog.visibleProperty().addListener(new ChangeListener<Boolean>() {
@Override @Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
if (newValue) { if (newValue) {
dialogAware.onDialogShown(); dialog.requestFocus();
if (node instanceof DialogAware)
((DialogAware) node).onDialogShown();
observable.removeListener(this); observable.removeListener(this);
} }
} }
}); });
} }
} }
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void closeDialog(Node node) { private void closeDialog(Node node) {