From 76af50f5e287dc5b14d326a8f2c48d8be479fae4 Mon Sep 17 00:00:00 2001 From: Henning von Bargen Date: Thu, 11 Jan 2024 08:27:10 +0100 Subject: [PATCH] Fix data item leading whitespace preserve #1536 (#1539) --- .../engine/nLayout/area/impl/LineArea.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/nLayout/area/impl/LineArea.java b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/nLayout/area/impl/LineArea.java index d5ed8e783a..49e71a06fd 100644 --- a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/nLayout/area/impl/LineArea.java +++ b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/nLayout/area/impl/LineArea.java @@ -21,6 +21,7 @@ import org.eclipse.birt.report.engine.content.IStyle; import org.eclipse.birt.report.engine.content.ITextContent; import org.eclipse.birt.report.engine.css.engine.StyleConstants; +import org.eclipse.birt.report.engine.css.engine.value.DataFormatValue; import org.eclipse.birt.report.engine.css.engine.value.css.CSSValueConstants; import org.eclipse.birt.report.engine.layout.pdf.util.PropertyUtil; import org.eclipse.birt.report.engine.nLayout.LayoutContext; @@ -138,8 +139,7 @@ public void align(boolean endParagraph, LayoutContext context) { Iterator iter = getChildren(); while (iter.hasNext()) { AbstractArea area = (AbstractArea) iter.next(); - area.setPosition(spacing / 2 + area.getX() - adjustLeftWhiteSpace + adjustRightWhiteSpace, - area.getY()); + area.setPosition(spacing / 2 + area.getX() - adjustLeftWhiteSpace + adjustRightWhiteSpace, area.getY()); } } else if (isJustified) { justify(spacing, adjustLeftWhiteSpace, adjustRightWhiteSpace); @@ -147,10 +147,19 @@ public void align(boolean endParagraph, LayoutContext context) { // is left aligned if (parent.content != null && !parent.content.isDirectionRTL()) { if (adjustLeftWhiteSpace != 0) { - Iterator iter = getChildren(); - while (iter.hasNext()) { - AbstractArea area = (AbstractArea) iter.next(); - area.setPosition(area.getX() - adjustLeftWhiteSpace, area.getY()); + String sp = null; + DataFormatValue dfv = parent.content.getComputedStyle().getDataFormat(); + if (dfv != null) { + sp = dfv.getStringPattern(); + } + if (sp == null || !sp.startsWith("^")) { + Iterator iter = getChildren(); + while (iter.hasNext()) { + AbstractArea area = (AbstractArea) iter.next(); + area.setPosition(area.getX() - adjustLeftWhiteSpace, area.getY()); + } + } else { + // Do not adjust (see https://github.com/eclipse-birt/birt/discussions/1536) } } } @@ -335,7 +344,6 @@ private IntTupleCounter countCharactersAndWhiteSpace(ContainerArea area) { return count; } - protected void justify(int spacing, int adjustLeftWhiteSpace, int adjustRightWhiteSpace) { // 1. Gets the white space number. The last white space of a line should not be // counted.