Skip to content

Commit dba9198

Browse files
committed
fix(dev): Fix text overflow on long list item entries
1 parent 44b9c43 commit dba9198

1 file changed

Lines changed: 21 additions & 1 deletion

File tree

common/src/main/java/net/blay09/mods/balm/client/platform/config/screen/list/internal/BalmConfigListEditorInlineStringValueEntry.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class BalmConfigListEditorInlineStringValueEntry<T> extends BalmConfigLis
2121
private static final Component EDIT_LABEL = Component.translatable("gui.balm.configuration.edit");
2222
private static final Component DELETE_LABEL = Component.translatable("gui.balm.configuration.delete");
2323
private static final Component RESET_LABEL = Component.translatable("gui.balm.configuration.reset");
24+
private static final String ELLIPSIS = "...";
2425
private static final int EDIT_BOX_HEIGHT = 20;
2526

2627
private final Button editButton;
@@ -133,8 +134,27 @@ protected void extractEntryContent(GuiGraphicsExtractor graphics, int mouseX, in
133134
if (isEditing()) {
134135
ensureEditBox().extractRenderState(graphics, mouseX, mouseY, partialTick);
135136
} else {
136-
graphics.text(context.font(), label, getContentLeftAfterDragHandle(), getContentY() + 5, 0xFFFFFFFF);
137+
final var x = getContentLeftAfterDragHandle();
138+
final var maxWidth = getContentRightBeforeActions() - x;
139+
if (maxWidth > 0) {
140+
graphics.text(context.font(), truncateLabel(label, maxWidth), x, getContentY() + 5, 0xFFFFFFFF);
141+
}
142+
}
143+
}
144+
145+
private Component truncateLabel(Component label, int maxWidth) {
146+
final var font = context.font();
147+
if (font.width(label) <= maxWidth) {
148+
return label;
137149
}
150+
151+
final var ellipsisWidth = font.width(ELLIPSIS);
152+
if (maxWidth <= ellipsisWidth) {
153+
return Component.literal(font.plainSubstrByWidth(ELLIPSIS, maxWidth));
154+
}
155+
156+
final var truncatedLabel = font.plainSubstrByWidth(label.getString(), maxWidth - ellipsisWidth);
157+
return Component.literal(truncatedLabel + ELLIPSIS);
138158
}
139159

140160
@Override

0 commit comments

Comments
 (0)