Skip to content

Commit 0979cc5

Browse files
Make margins collapse handling on cells a bit more consitent
DEVSIX-1195
1 parent 010d71a commit 0979cc5

File tree

2 files changed

+9
-13
lines changed

2 files changed

+9
-13
lines changed

layout/src/main/java/com/itextpdf/layout/margincollapse/MarginsCollapseHandler.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,7 @@ public void endMarginsCollapse(Rectangle layoutBox) {
243243
} else {
244244
ownCollapseAfter = new MarginsCollapse();
245245
}
246-
if (ownCollapseAfter != null) {
247-
ownCollapseAfter.joinMargin(getModelBottomMargin(renderer));
248-
}
246+
ownCollapseAfter.joinMargin(getModelBottomMargin(renderer));
249247
collapseInfo.setOwnCollapseAfter(ownCollapseAfter);
250248

251249
if (collapseInfo.isSelfCollapsing()) {
@@ -290,7 +288,7 @@ public void endMarginsCollapse(Rectangle layoutBox) {
290288
}
291289

292290
private void updateCollapseBeforeIfPrevKidIsFirstAndSelfCollapsed(MarginsCollapse collapseAfter) {
293-
if (prevChildMarginInfo.isSelfCollapsing() && prevChildMarginInfo.isIgnoreOwnMarginTop() && collapseAfter != null) {
291+
if (prevChildMarginInfo.isSelfCollapsing() && prevChildMarginInfo.isIgnoreOwnMarginTop()) {
294292
// prevChildMarginInfo.isIgnoreOwnMarginTop() is true only if it's the first kid and is adjoined to parent margin
295293
collapseInfo.getCollapseBefore().joinMargin(collapseAfter);
296294
}
@@ -560,7 +558,8 @@ private static boolean rendererIsFloated(IRenderer renderer) {
560558

561559
private static float getModelTopMargin(IRenderer renderer) {
562560
Float margin = renderer.getModelElement().<Float>getProperty(Property.MARGIN_TOP);
563-
return margin != null ? (float) margin : 0;
561+
// TODO Concerning "renderer instanceof CellRenderer" check: may be try to apply more general solution in future
562+
return margin != null && !(renderer instanceof CellRenderer) ? (float) margin : 0;
564563
}
565564

566565
private static void ignoreModelTopMargin(IRenderer renderer) {
@@ -573,7 +572,8 @@ private static void overrideModelTopMargin(IRenderer renderer, float collapsedMa
573572

574573
private static float getModelBottomMargin(IRenderer renderer) {
575574
Float margin = renderer.getModelElement().<Float>getProperty(Property.MARGIN_BOTTOM);
576-
return margin != null ? (float) margin : 0;
575+
// TODO Concerning "renderer instanceof CellRenderer" check: may be try to apply more general solution in future
576+
return margin != null && !(renderer instanceof CellRenderer) ? (float) margin : 0;
577577
}
578578

579579
private static void ignoreModelBottomMargin(IRenderer renderer) {

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,7 @@ public LayoutResult layout(LayoutContext layoutContext) {
122122

123123
boolean isCellRenderer = this instanceof CellRenderer;
124124
if (marginsCollapsingEnabled) {
125-
if (!isCellRenderer) {
126-
marginsCollapseHandler.startMarginsCollapse(parentBBox);
127-
}
125+
marginsCollapseHandler.startMarginsCollapse(parentBBox);
128126
}
129127

130128
Border[] borders = getBorders();
@@ -168,9 +166,7 @@ public LayoutResult layout(LayoutContext layoutContext) {
168166
if (result.getStatus() != LayoutResult.NOTHING) {
169167
marginsCollapseHandler.endChildMarginsHandling(layoutBox);
170168
}
171-
if (!isCellRenderer) {
172-
marginsCollapseHandler.endMarginsCollapse(layoutBox);
173-
}
169+
marginsCollapseHandler.endMarginsCollapse(layoutBox);
174170
}
175171
if (Boolean.TRUE.equals(getPropertyAsBoolean(Property.FILL_AVAILABLE_AREA_ON_SPLIT))
176172
|| Boolean.TRUE.equals(getPropertyAsBoolean(Property.FILL_AVAILABLE_AREA))) {
@@ -365,7 +361,7 @@ public LayoutResult layout(LayoutContext layoutContext) {
365361
}
366362
}
367363
float overflowPartHeight = getOverflowPartHeight(overflowY, layoutBox);
368-
if (marginsCollapsingEnabled && !isCellRenderer) {
364+
if (marginsCollapsingEnabled) {
369365
marginsCollapseHandler.endMarginsCollapse(layoutBox);
370366
}
371367

0 commit comments

Comments
 (0)