From df6f35bc8ebae9e01b6035cf56c00eb998d47598 Mon Sep 17 00:00:00 2001 From: Glavo Date: Wed, 15 Oct 2025 15:05:21 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20#4670:=20=E4=BF=AE=E5=A4=8D=E4=B8=8D?= =?UTF-8?q?=E5=9C=A8=E5=9C=BA=E6=99=AF=E4=B8=AD=E7=9A=84=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E5=B0=9D=E8=AF=95=E5=8F=96=E6=B6=88=E8=87=AA=E8=BA=AB=E7=84=A6?= =?UTF-8?q?=E7=82=B9=E6=97=B6=E8=A7=A6=E5=8F=91=20NPE=20=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20(#4674)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java | 11 +++++++++++ .../org/jackhuang/hmcl/ui/ToolbarListPageSkin.java | 2 +- .../org/jackhuang/hmcl/ui/download/VersionsPage.java | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) 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);