From 6374ec0de7e8bf94a1eb4e3b2bdf39728fc4d34e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BA=90=E5=BA=90=E7=BB=AB?= Date: Sun, 5 Jul 2026 20:06:23 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=81=94=E6=9C=BA?= =?UTF-8?q?=E6=A0=B8=E5=BF=83=E7=AC=AC=E4=B8=89=E6=96=B9=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E6=B8=A0=E9=81=93=E6=8C=89=E9=92=AE=E9=AB=98=E5=BA=A6=E4=B8=8D?= =?UTF-8?q?=E4=B8=80=E8=87=B4=20(#6247)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close #6245 --- .../hmcl/ui/construct/ComponentSublist.java | 27 +++++++++++++++++++ .../ui/construct/ComponentSublistWrapper.java | 5 +--- .../terracotta/TerracottaControllerPage.java | 18 ++++--------- 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentSublist.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentSublist.java index 28664e0b33..ba02054f23 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentSublist.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentSublist.java @@ -19,6 +19,7 @@ package org.jackhuang.hmcl.ui.construct; import javafx.beans.property.*; import javafx.collections.ObservableList; +import javafx.css.PseudoClass; import javafx.geometry.Orientation; import javafx.scene.Node; import javafx.scene.control.Control; @@ -228,4 +229,30 @@ public class ComponentSublist extends Control implements NoPaddingComponent { public void setTip(String tip) { this.tip.set(tip); } + + /// Whether the sublist header should use a larger title font. + private static final PseudoClass PSEUDO_LARGE_TITLE = PseudoClass.getPseudoClass("large-title"); + + /// The property controlling whether the sublist header uses a larger title font. + private final BooleanProperty largeTitle = new SimpleBooleanProperty(this, "largeTitle", false) { + @Override + protected void invalidated() { + pseudoClassStateChanged(PSEUDO_LARGE_TITLE, get()); + } + }; + + /// Returns the property controlling whether the sublist header uses a larger title font. + public BooleanProperty largeTitleProperty() { + return largeTitle; + } + + /// Returns whether the sublist header uses a larger title font. + public final boolean isLargeTitle() { + return largeTitle.get(); + } + + /// Sets whether the sublist header uses a larger title font. + public final void setLargeTitle(boolean value) { + largeTitle.set(value); + } } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentSublistWrapper.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentSublistWrapper.java index 991917d0f9..6deb6c059c 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentSublistWrapper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/ComponentSublistWrapper.java @@ -145,10 +145,7 @@ final class ComponentSublistWrapper extends VBox implements NoPaddingComponent { }); }); - Node headerLeft = sublist.getHeaderLeft(); - if (headerLeft != null) { - header.setTitleContent(headerLeft); - } + FXUtils.onChangeAndOperate(sublist.largeTitleProperty(), header::setLargeTitle); InvalidationListener updateTitleTrailing = observable -> { Node titleTrailing = sublist.getTitleTrailing(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/terracotta/TerracottaControllerPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/terracotta/TerracottaControllerPage.java index 9aa2a2b3b0..c2a015eb2e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/terracotta/TerracottaControllerPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/terracotta/TerracottaControllerPage.java @@ -32,8 +32,7 @@ import javafx.scene.Cursor; import javafx.scene.Node; import javafx.scene.control.Label; import javafx.scene.control.ScrollPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Priority; +import javafx.scene.image.ImageView; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import javafx.scene.text.TextFlow; @@ -550,17 +549,10 @@ public class TerracottaControllerPage extends StackPane { private ComponentSublist getThirdPartyDownloadNodes() { ComponentSublist locals = new ComponentSublist(); - - var header = new LinePane(); - header.getStyleClass().add("no-padding"); - header.setLargeTitle(true); - header.setMinHeight(LinePane.USE_COMPUTED_SIZE); - HBox.setHgrow(header, Priority.ALWAYS); - header.setMouseTransparent(true); - header.setLeading(FXUtils.newBuiltinImage("/assets/img/terracotta.png")); - header.setTitle(i18n("terracotta.from_local.title")); - header.setSubtitle(i18n("terracotta.from_local.desc")); - locals.setHeaderLeft(header); + locals.setLargeTitle(true); + locals.setLeading(new ImageView(FXUtils.newBuiltinImage("/assets/img/terracotta.png"))); + locals.setTitle(i18n("terracotta.from_local.title")); + locals.setSubtitle(i18n("terracotta.from_local.desc")); for (TerracottaMetadata.Link link : TerracottaMetadata.PACKAGE_LINKS) { LineButton item = new LineButton();