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,21 +397,22 @@ 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) { if (dialog.isVisible()) {
DialogAware dialogAware = (DialogAware) node; dialog.requestFocus();
if (dialog.isVisible()) { if (node instanceof DialogAware)
dialogAware.onDialogShown(); ((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();
observable.removeListener(this); if (node instanceof DialogAware)
} ((DialogAware) node).onDialogShown();
observable.removeListener(this);
} }
}); }
} });
} }
} }