From 7a8f9316416a25f34c56ad2bc34eb6b6093529fc Mon Sep 17 00:00:00 2001 From: ZZZank <47418975+ZZZank@users.noreply.github.com> Date: Tue, 8 Sep 2026 21:57:32 +0800 Subject: [PATCH] Fix display of mod with extra long display name (#6436) --- .../jackhuang/hmcl/ui/construct/TwoLineListItem.java | 11 +++++++++-- .../org/jackhuang/hmcl/ui/instances/ModListPage.java | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TwoLineListItem.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TwoLineListItem.java index f9f90e9590..a6b3086f30 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TwoLineListItem.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TwoLineListItem.java @@ -25,6 +25,7 @@ import javafx.collections.ObservableList; import javafx.css.PseudoClass; import javafx.geometry.Pos; import javafx.scene.control.Label; +import javafx.scene.control.OverrunStyle; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; @@ -45,6 +46,7 @@ public class TwoLineListItem extends VBox { lblTitle = new Label(); lblTitle.getStyleClass().add("title"); + lblTitle.setTextOverrun(OverrunStyle.ELLIPSIS); this.firstLine = new HBox(lblTitle); firstLine.getStyleClass().add("first-line"); @@ -167,8 +169,12 @@ public class TwoLineListItem extends VBox { var tagsBox = new HBox(8); tagsBox.getStyleClass().add("tags"); tagsBox.setAlignment(Pos.CENTER_LEFT); + + // grow lazily after title has been placed + tagsBox.setPrefWidth(0); tagsBox.setMinWidth(0); - HBox.setHgrow(tagsBox, Priority.ALWAYS); + HBox.setHgrow(tagsBox, Priority.SOMETIMES); + Bindings.bindContent(tagsBox.getChildren(), tags); var isNotEmpty = Bindings.isNotEmpty(tags); tagsBox.managedProperty().bind(isNotEmpty); @@ -176,7 +182,8 @@ public class TwoLineListItem extends VBox { FXUtils.setOverflowHidden(tagsBox); - lblTitle.setMinWidth(Label.USE_PREF_SIZE); + HBox.setHgrow(lblTitle, Priority.ALWAYS); + lblTitle.setMinWidth(0); firstLine.getChildren().setAll(lblTitle, tagsBox); } return tags; diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/instances/ModListPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/instances/ModListPage.java index 02d69ed8f0..c6a8084d05 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/instances/ModListPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/instances/ModListPage.java @@ -685,6 +685,7 @@ public final class ModListPage extends ListPageBase i modInfo.loadIcon(imageContainer, null); TwoLineListItem title = new TwoLineListItem(); + title.getTitleLabel().setWrapText(true); if (modInfo.getModTranslations() != null && I18n.isUseChinese()) title.setTitle(modInfo.getModTranslations().getDisplayName()); else