Skip to content

Commit 3d56594

Browse files
committed
Consider item's direction when deciding on symbol's indent
DEVSIX-5423
1 parent 41c0097 commit 3d56594

File tree

76 files changed

+15
-6
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+15
-6
lines changed

layout/src/main/java/com/itextpdf/layout/renderer/ListRenderer.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -367,17 +367,26 @@ private LayoutResult initializeListSymbols(LayoutContext layoutContext) {
367367
listItemNum = 0;
368368
for (IRenderer childRenderer : childRenderers) {
369369
childRenderer.setParent(this);
370-
childRenderer.deleteOwnProperty(Property.MARGIN_LEFT);
371-
UnitValue marginLeftUV = childRenderer.getProperty(Property.MARGIN_LEFT, UnitValue.createPointValue(0f));
372-
if (!marginLeftUV.isPointValue()) {
370+
371+
// Symbol indent's value should be summed with the margin's value
372+
boolean isRtl = BaseDirection.RIGHT_TO_LEFT ==
373+
childRenderer.<BaseDirection>getProperty(Property.BASE_DIRECTION);
374+
int marginToSet = isRtl ? Property.MARGIN_RIGHT : Property.MARGIN_LEFT;
375+
childRenderer.deleteOwnProperty(marginToSet);
376+
UnitValue marginToSetUV =
377+
childRenderer.<UnitValue>getProperty(marginToSet, UnitValue.createPointValue(0f));
378+
if (!marginToSetUV.isPointValue()) {
373379
Logger logger = LoggerFactory.getLogger(ListRenderer.class);
374-
logger.error(MessageFormatUtil.format(LogMessageConstant.PROPERTY_IN_PERCENTS_NOT_SUPPORTED, Property.MARGIN_LEFT));
380+
logger.error(MessageFormatUtil.format(
381+
LogMessageConstant.PROPERTY_IN_PERCENTS_NOT_SUPPORTED,
382+
marginToSet));
375383
}
376-
float calculatedMargin = marginLeftUV.getValue();
384+
float calculatedMargin = marginToSetUV.getValue();
377385
if ((ListSymbolPosition) getListItemOrListProperty(childRenderer, this, Property.LIST_SYMBOL_POSITION) == ListSymbolPosition.DEFAULT) {
378386
calculatedMargin += maxSymbolWidth + (float) (symbolIndent != null ? symbolIndent : 0f);
379387
}
380-
childRenderer.setProperty(Property.MARGIN_LEFT, UnitValue.createPointValue(calculatedMargin));
388+
childRenderer.setProperty(marginToSet, UnitValue.createPointValue(calculatedMargin));
389+
381390
IRenderer symbolRenderer = symbolRenderers.get(listItemNum++);
382391
((ListItemRenderer) childRenderer).addSymbolRenderer(symbolRenderer, maxSymbolWidth);
383392
if (symbolRenderer != null) {

0 commit comments

Comments
 (0)