From 7a8217796c2012854aff6b17583b82741e6b318b Mon Sep 17 00:00:00 2001 From: ToobLac Date: Thu, 6 Aug 2026 19:17:36 +0800 Subject: [PATCH 1/4] enhance html spacing --- .../org/jackhuang/hmcl/ui/HTMLRenderer.java | 39 ++++++++++++++----- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java index 08d2108ed4..2fac7430e5 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java @@ -454,7 +454,7 @@ public HTMLRenderer appendNode(Node node) { appendAutoLineBreak("\n\n"); } case "hr" -> { - appendAutoLineBreak("\n"); + appendAutoLineBreak("\n\n"); this.children.add(new Separator()); } } @@ -512,16 +512,37 @@ public HTMLRenderer mergeLineBreaks() { } } } - int size = children.size(); - for (int i = 0; i < size; i++) { - var child = children.get(i); - if (child instanceof AutoLineBreak || (child instanceof Text txt && isSpacing(txt.getText()))) { - // do nothing - } else { - children.subList(0, i).clear(); - break; + + { + // Remove empty lines at the beginning + int size = children.size(); + int lastAutoLineBreak = -1; + for (int i = 0; i < size; i++) { + var child = children.get(i); + if (child instanceof AutoLineBreak) { + lastAutoLineBreak = i; + } else if (child instanceof Text txt && isSpacing(txt.getText())) { + // NO-OP + } else break; + if (i == size - 1) lastAutoLineBreak = i; } + if (lastAutoLineBreak > 0) + this.children.subList(0, lastAutoLineBreak + 1).clear(); } + { + // Remove empty lines and spaces at the end + int size = children.size(); + for (int i = size - 1; i > -1; i--) { + var child = children.get(i); + if (child instanceof AutoLineBreak || child instanceof Text txt && isSpacing(txt.getText())) { + // NO-OP + } else { + this.children.subList(i + 1, size).clear(); + break; + } + } + } + return this; } From 4c0c8f8510facd0a94fc737b3f8b187d0307dc72 Mon Sep 17 00:00:00 2001 From: ToobLac Date: Thu, 6 Aug 2026 19:23:07 +0800 Subject: [PATCH 2/4] update --- HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java index 2fac7430e5..6e919a4c2f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java @@ -558,6 +558,7 @@ public TextFlow render() { InvalidationListener listener = __ -> img.setFitWidth(Math.min(textFlow.getWidth() * 0.9, img.getImage() == null ? 0D : img.getImage().getWidth())); textFlow.widthProperty().addListener(listener); img.imageProperty().addListener(listener); + listener.invalidated(null); } else if (node instanceof TableView table) { table.prefWidthProperty().bind(textFlow.widthProperty().multiply(0.8)); } else if (node instanceof CodeFlow codeFlow) { From cbe44d0f1e984abe4339f37af8c8429ae486651f Mon Sep 17 00:00:00 2001 From: ToobLac Date: Thu, 6 Aug 2026 19:31:15 +0800 Subject: [PATCH 3/4] update --- HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java index 6e919a4c2f..284af70140 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java @@ -526,7 +526,7 @@ public HTMLRenderer mergeLineBreaks() { } else break; if (i == size - 1) lastAutoLineBreak = i; } - if (lastAutoLineBreak > 0) + if (lastAutoLineBreak >= 0) this.children.subList(0, lastAutoLineBreak + 1).clear(); } { From a93cf13f1d390b0b852622380f4b94de59ecf7ce Mon Sep 17 00:00:00 2001 From: ToobLac Date: Thu, 6 Aug 2026 20:25:32 +0800 Subject: [PATCH 4/4] update --- .../java/org/jackhuang/hmcl/ui/HTMLRenderer.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java index 284af70140..e0812636b5 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/HTMLRenderer.java @@ -516,18 +516,15 @@ public HTMLRenderer mergeLineBreaks() { { // Remove empty lines at the beginning int size = children.size(); - int lastAutoLineBreak = -1; for (int i = 0; i < size; i++) { var child = children.get(i); - if (child instanceof AutoLineBreak) { - lastAutoLineBreak = i; - } else if (child instanceof Text txt && isSpacing(txt.getText())) { + if (child instanceof AutoLineBreak || child instanceof Text txt && isSpacing(txt.getText())) { // NO-OP - } else break; - if (i == size - 1) lastAutoLineBreak = i; + } else { + this.children.subList(0, i).clear(); + break; + } } - if (lastAutoLineBreak >= 0) - this.children.subList(0, lastAutoLineBreak + 1).clear(); } { // Remove empty lines and spaces at the end