diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java index 84cfaf1b7..6c7e58bfd 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java @@ -36,6 +36,7 @@ import javafx.geometry.Pos; import javafx.geometry.Rectangle2D; import javafx.scene.Cursor; import javafx.scene.Node; +import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.control.ScrollPane; @@ -1387,6 +1388,16 @@ public final class FXUtils { }); } + public static void clearFocus(Node node) { + Scene scene = node.getScene(); + if (scene != null) { + Parent root = scene.getRoot(); + if (root != null) { + root.requestFocus(); + } + } + } + public static void copyOnDoubleClick(Labeled label) { label.addEventHandler(MouseEvent.MOUSE_CLICKED, e -> { if (e.getButton() == MouseButton.PRIMARY && e.getClickCount() == 2) { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/ToolbarListPageSkin.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/ToolbarListPageSkin.java index d7aeb10e9..d2a36b737 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/ToolbarListPageSkin.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/ToolbarListPageSkin.java @@ -102,7 +102,7 @@ public abstract class ToolbarListPageSkin ret.setText(text); ret.setOnAction(e -> { onClick.run(); - ret.getScene().getRoot().requestFocus(); + FXUtils.clearFocus(ret); }); return ret; } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java index 0b3be3146..b10b4d251 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/VersionsPage.java @@ -181,7 +181,7 @@ public final class VersionsPage extends Control implements WizardPage, Refreshab JFXButton wikiButton = newToggleButton4(SVG.GLOBE_BOOK); wikiButton.setOnAction(event -> { onOpenWiki(); - wikiButton.getScene().getRoot().requestFocus(); + FXUtils.clearFocus(wikiButton); }); FXUtils.installFastTooltip(wikiButton, i18n("wiki.tooltip")); actions.getChildren().add(wikiButton);