Skip to content

Commit 82e84ec

Browse files
committed
Update KeepTogether property for table.
DEVSIX-466
1 parent 4858089 commit 82e84ec

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,6 @@ public LayoutResult layout(LayoutContext layoutContext) {
311311

312312
layoutBox.decreaseHeight(rowHeight);
313313
}
314-
315314
if (split) {
316315
TableRenderer[] splitResult = split(row, hasContent);
317316
for (int col = 0; col < currentRow.length; col++) {
@@ -343,23 +342,30 @@ public LayoutResult layout(LayoutContext layoutContext) {
343342
}
344343

345344
if (row == rowRange.getFinishRow() && footerRenderer != null) {
346-
footerRenderer.getOccupiedAreaBBox().setY(splitResult[0].getOccupiedAreaBBox().getY() - footerRenderer.getOccupiedAreaBBox().getHeight());
345+
footerRenderer.getOccupiedAreaBBox().setY(splitResult[0].getOccupiedAreaBBox().getY()
346+
- footerRenderer.getOccupiedAreaBBox().getHeight());
347347
for (IRenderer renderer : footerRenderer.getChildRenderers()) {
348-
renderer.move(0, splitResult[0].getOccupiedAreaBBox().getY() - renderer.getOccupiedArea().getBBox().getY() - renderer.getOccupiedArea().getBBox().getHeight());
348+
renderer.move(0, splitResult[0].getOccupiedAreaBBox().getY()
349+
- renderer.getOccupiedArea().getBBox().getY() - renderer.getOccupiedArea().getBBox().getHeight());
349350
}
350351
} else {
351352
adjustFooterAndFixOccupiedArea(layoutBox);
352353
}
353354

354355
applyBorderBox(occupiedArea.getBBox(), true);
355356
applyMargins(occupiedArea.getBBox(), true);
356-
int status = (childRenderers.isEmpty() && footerRenderer == null) || getPropertyAsBoolean(Property.KEEP_TOGETHER)
357-
? LayoutResult.NOTHING
358-
: LayoutResult.PARTIAL;
359-
if (status == LayoutResult.NOTHING && getPropertyAsBoolean(Property.FORCED_PLACEMENT)) {
360-
return new LayoutResult(LayoutResult.FULL, occupiedArea, null, null);
357+
if (getPropertyAsBoolean(Property.KEEP_TOGETHER) && !getPropertyAsBoolean(Property.FORCED_PLACEMENT)) {
358+
return new LayoutResult(LayoutResult.NOTHING, occupiedArea, null, this);
359+
} else {
360+
int status = (childRenderers.isEmpty() && footerRenderer == null)
361+
? LayoutResult.NOTHING
362+
: LayoutResult.PARTIAL;
363+
if (status == LayoutResult.NOTHING && getPropertyAsBoolean(Property.FORCED_PLACEMENT)) {
364+
return new LayoutResult(LayoutResult.FULL, occupiedArea, null, null);
365+
} else {
366+
return new LayoutResult(status, occupiedArea, splitResult[0], splitResult[1]);
367+
}
361368
}
362-
return new LayoutResult(status, occupiedArea, splitResult[0], splitResult[1]);
363369
} else {
364370
childRenderers.addAll(currChildRenderers);
365371
currChildRenderers.clear();

0 commit comments

Comments
 (0)