summaryrefslogtreecommitdiffstats
path: root/layout/tables/nsTableFrame.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--layout/tables/nsTableFrame.cpp245
1 files changed, 160 insertions, 85 deletions
diff --git a/layout/tables/nsTableFrame.cpp b/layout/tables/nsTableFrame.cpp
index 9a359192c0..e7fd7340bf 100644
--- a/layout/tables/nsTableFrame.cpp
+++ b/layout/tables/nsTableFrame.cpp
@@ -82,13 +82,19 @@ struct TableReflowInput final {
std::max(0, mReflowInput.ComputedISize() - table->GetColSpacing(-1) -
table->GetColSpacing(table->GetColCount()));
- // Bug 1863421 will fix border-spacing issue in the block-axis in printing.
mAvailSize.BSize(mWM) = aMode == TableReflowMode::Measuring
? NS_UNCONSTRAINEDSIZE
: mReflowInput.AvailableBSize();
- AdvanceBCoord(aBorderPadding.BStart(mWM));
- ReduceAvailableBSizeBy(aBorderPadding.BEnd(mWM) + table->GetRowSpacing(-1) +
- table->GetRowSpacing(table->GetRowCount()));
+ AdvanceBCoord(aBorderPadding.BStart(mWM) +
+ (!table->GetPrevInFlow() ? table->GetRowSpacing(-1) : 0));
+ if (aReflowInput.mStyleBorder->mBoxDecorationBreak ==
+ StyleBoxDecorationBreak::Clone) {
+ // At this point, we're assuming we won't be the last fragment, so we only
+ // reserve space for block-end border-padding if we're cloning it on each
+ // fragment; and we don't need to reserve any row-spacing for this
+ // hypothetical fragmentation, either.
+ ReduceAvailableBSizeBy(aBorderPadding.BEnd(mWM));
+ }
}
// Advance to the next block-offset and reduce the available block-size.
@@ -1633,12 +1639,15 @@ void nsTableFrame::Reflow(nsPresContext* aPresContext,
// Check for an overflow list, and append any row group frames being pushed
MoveOverflowToChildList();
- bool haveDesiredBSize = false;
+ bool haveCalledCalcDesiredBSize = false;
SetHaveReflowedColGroups(false);
- // Bug 1863421: We need to call ApplySkipSides() for borderPadding so that it
- // is correct in a table continuation.
- LogicalMargin borderPadding = aReflowInput.ComputedLogicalBorderPadding(wm);
+ LogicalMargin borderPadding =
+ aReflowInput.ComputedLogicalBorderPadding(wm).ApplySkipSides(
+ PreReflowBlockLevelLogicalSkipSides());
+ nsIFrame* lastChildReflowed = nullptr;
+ const nsSize containerSize =
+ aReflowInput.ComputedSizeAsContainerIfConstrained();
// The tentative width is the width we assumed for the table when the child
// frames were positioned (which only matters in vertical-rl mode, because
@@ -1691,7 +1700,6 @@ void nsTableFrame::Reflow(nsPresContext* aPresContext,
needToInitiateSpecialReflow =
HasAnyStateBits(NS_FRAME_CONTAINS_RELATIVE_BSIZE);
}
- nsIFrame* lastChildReflowed = nullptr;
NS_ASSERTION(!aReflowInput.mFlags.mSpecialBSizeReflow,
"Shouldn't be in special bsize reflow here!");
@@ -1717,8 +1725,6 @@ void nsTableFrame::Reflow(nsPresContext* aPresContext,
// Note that vertical-lr, unlike vertical-rl, doesn't need to take special
// care of this situation, because they're positioned relative to the
// left-hand edge.
- const nsSize containerSize =
- aReflowInput.ComputedSizeAsContainerIfConstrained();
if (wm.IsVerticalRL()) {
tentativeContainerWidth = containerSize.width;
mayAdjustXForAllChildren = true;
@@ -1736,29 +1742,36 @@ void nsTableFrame::Reflow(nsPresContext* aPresContext,
ReflowInput& mutable_rs = const_cast<ReflowInput&>(aReflowInput);
// distribute extra block-direction space to rows
- aDesiredSize.BSize(wm) = CalcDesiredBSize(aReflowInput, borderPadding);
+ aDesiredSize.BSize(wm) =
+ CalcDesiredBSize(aReflowInput, borderPadding, aStatus);
+ haveCalledCalcDesiredBSize = true;
+
mutable_rs.mFlags.mSpecialBSizeReflow = true;
ReflowTable(aDesiredSize, aReflowInput, borderPadding,
TableReflowMode::Final, lastChildReflowed, aStatus);
- if (lastChildReflowed && aStatus.IsIncomplete()) {
- // if there is an incomplete child, then set the desired bsize
- // to include it but not the next one
- aDesiredSize.BSize(wm) =
- borderPadding.BEnd(wm) + GetRowSpacing(GetRowCount()) +
- lastChildReflowed->GetLogicalNormalRect(wm, containerSize).BEnd(wm);
- }
- haveDesiredBSize = true;
-
mutable_rs.mFlags.mSpecialBSizeReflow = false;
}
}
+ if (aStatus.IsIncomplete() &&
+ aReflowInput.mStyleBorder->mBoxDecorationBreak ==
+ StyleBoxDecorationBreak::Slice) {
+ borderPadding.BEnd(wm) = 0;
+ }
+
aDesiredSize.ISize(wm) =
aReflowInput.ComputedISize() + borderPadding.IStartEnd(wm);
- if (!haveDesiredBSize) {
- aDesiredSize.BSize(wm) = CalcDesiredBSize(aReflowInput, borderPadding);
+ if (!haveCalledCalcDesiredBSize) {
+ aDesiredSize.BSize(wm) =
+ CalcDesiredBSize(aReflowInput, borderPadding, aStatus);
+ } else if (lastChildReflowed && aStatus.IsIncomplete()) {
+ // If there is an incomplete child, then set the desired block-size to
+ // include it but not the next one.
+ aDesiredSize.BSize(wm) =
+ borderPadding.BEnd(wm) +
+ lastChildReflowed->GetLogicalNormalRect(wm, containerSize).BEnd(wm);
}
if (IsRowInserted()) {
ProcessRowInserted(aDesiredSize.BSize(wm));
@@ -2380,16 +2393,15 @@ nsMargin nsTableFrame::GetUsedMargin() const {
return nsMargin(0, 0, 0, 0);
}
-// This property is only set on the first-in-flow of nsTableFrame.
+// TODO(TYLin): Should this property only be set on the first-in-flow of
+// nsTableFrame?
NS_DECLARE_FRAME_PROPERTY_DELETABLE(TableBCDataProperty, TableBCData)
TableBCData* nsTableFrame::GetTableBCData() const {
- return FirstInFlow()->GetProperty(TableBCDataProperty());
+ return GetProperty(TableBCDataProperty());
}
TableBCData* nsTableFrame::GetOrCreateTableBCData() {
- MOZ_ASSERT(!GetPrevInFlow(),
- "TableBCProperty should only be set on the first-in-flow!");
TableBCData* value = GetProperty(TableBCDataProperty());
if (!value) {
value = new TableBCData();
@@ -2609,7 +2621,6 @@ void nsTableFrame::PlaceRepeatedFooter(TableReflowInput& aReflowInput,
kidAvailSize, Nothing(),
ReflowInput::InitFlag::CallerWillInit);
InitChildReflowInput(footerReflowInput);
- aReflowInput.AdvanceBCoord(GetRowSpacing(GetRowCount()));
nsRect origTfootRect = aTfoot->GetRect();
nsRect origTfootInkOverflow = aTfoot->InkOverflowRect();
@@ -2727,6 +2738,7 @@ void nsTableFrame::ReflowChildren(TableReflowInput& aReflowInput,
PushChildrenToOverflow(rowGroups, childX);
aStatus.Reset();
aStatus.SetIncomplete();
+ aLastChildReflowed = allowRepeatedFooter ? tfoot : prevKidFrame;
break;
}
@@ -2769,7 +2781,7 @@ void nsTableFrame::ReflowChildren(TableReflowInput& aReflowInput,
.BEnd(wm) > 0)) {
kidReflowInput.mFlags.mIsTopOfPage = false;
}
- aReflowInput.AdvanceBCoord(rowSpacing);
+
// record the presence of a next in flow, it might get destroyed so we
// need to reorder the row group array
const bool reorder = kidFrame->GetNextInFlow();
@@ -2813,7 +2825,7 @@ void nsTableFrame::ReflowChildren(TableReflowInput& aReflowInput,
aStatus.Reset();
aStatus.SetIncomplete();
PushChildrenToOverflow(rowGroups, childX + 1);
- aLastChildReflowed = kidFrame;
+ aLastChildReflowed = allowRepeatedFooter ? tfoot : kidFrame;
break;
}
} else { // we are not on top, push this rowgroup onto the next page
@@ -2822,7 +2834,7 @@ void nsTableFrame::ReflowChildren(TableReflowInput& aReflowInput,
aStatus.Reset();
aStatus.SetIncomplete();
PushChildrenToOverflow(rowGroups, childX);
- aLastChildReflowed = prevKidFrame;
+ aLastChildReflowed = allowRepeatedFooter ? tfoot : prevKidFrame;
break;
} else { // we can't push so lets make clear how much space we need
PlaceChild(aReflowInput, kidFrame, kidReflowInput, kidPosition,
@@ -2850,6 +2862,7 @@ void nsTableFrame::ReflowChildren(TableReflowInput& aReflowInput,
// Place the child
PlaceChild(aReflowInput, kidFrame, kidReflowInput, kidPosition,
containerSize, desiredSize, oldKidRect, oldKidInkOverflow);
+ aReflowInput.AdvanceBCoord(rowSpacing);
// Remember where we just were in case we end up pushing children
prevKidFrame = kidFrame;
@@ -2887,6 +2900,7 @@ void nsTableFrame::ReflowChildren(TableReflowInput& aReflowInput,
if (kidFrame->GetNextSibling()) {
PushChildrenToOverflow(rowGroups, childX + 1);
}
+ aLastChildReflowed = allowRepeatedFooter ? tfoot : kidFrame;
break;
}
} else { // it isn't being reflowed
@@ -2970,10 +2984,10 @@ void nsTableFrame::ReflowColGroups(gfxContext* aRenderingContext) {
}
nscoord nsTableFrame::CalcDesiredBSize(const ReflowInput& aReflowInput,
- const LogicalMargin& aBorderPadding) {
+ const LogicalMargin& aBorderPadding,
+ const nsReflowStatus& aStatus) {
WritingMode wm = aReflowInput.GetWritingMode();
- // get the natural bsize based on the last child's (row group) rect
RowGroupArray rowGroups = OrderedRowGroups();
if (rowGroups.IsEmpty()) {
if (eCompatibility_NavQuirks == PresContext()->CompatibilityMode()) {
@@ -2990,11 +3004,20 @@ nscoord nsTableFrame::CalcDesiredBSize(const ReflowInput& aReflowInput,
int32_t colCount = cellMap->GetColCount();
nscoord desiredBSize = aBorderPadding.BStartEnd(wm);
if (rowCount > 0 && colCount > 0) {
- desiredBSize += GetRowSpacing(-1);
- for (uint32_t rgIdx = 0; rgIdx < rowGroups.Length(); rgIdx++) {
- desiredBSize += rowGroups[rgIdx]->BSize(wm) +
- GetRowSpacing(rowGroups[rgIdx]->GetRowCount() +
- rowGroups[rgIdx]->GetStartRowIndex());
+ if (!GetPrevInFlow()) {
+ desiredBSize += GetRowSpacing(-1);
+ }
+ const nsTableRowGroupFrame* lastRG = rowGroups.LastElement();
+ for (nsTableRowGroupFrame* rg : rowGroups) {
+ desiredBSize += rg->BSize(wm);
+ if (rg != lastRG || aStatus.IsFullyComplete()) {
+ desiredBSize +=
+ GetRowSpacing(rg->GetStartRowIndex() + rg->GetRowCount());
+ }
+ }
+ if (aReflowInput.ComputedBSize() == NS_UNCONSTRAINEDSIZE &&
+ aStatus.IsIncomplete()) {
+ desiredBSize = std::max(desiredBSize, aReflowInput.AvailableBSize());
}
}
@@ -3903,16 +3926,19 @@ class BCMapCellIterator {
public:
BCMapCellIterator(nsTableFrame* aTableFrame, const TableArea& aDamageArea);
- void First(BCMapCellInfo& aMapCellInfo);
+ void First(BCMapCellInfo& aMapInfo);
- void Next(BCMapCellInfo& aMapCellInfo);
+ void Next(BCMapCellInfo& aMapInfo);
- void PeekIEnd(BCMapCellInfo& aRefInfo, uint32_t aRowIndex,
+ void PeekIEnd(const BCMapCellInfo& aRefInfo, int32_t aRowIndex,
BCMapCellInfo& aAjaInfo);
- void PeekBEnd(BCMapCellInfo& aRefInfo, uint32_t aColIndex,
+ void PeekBEnd(const BCMapCellInfo& aRefInfo, int32_t aColIndex,
BCMapCellInfo& aAjaInfo);
+ void PeekIStart(const BCMapCellInfo& aRefInfo, int32_t aRowIndex,
+ BCMapCellInfo& aAjaInfo);
+
bool IsNewRow() { return mIsNewRow; }
nsTableRowFrame* GetPrevRow() const { return mPrevRow; }
@@ -3927,6 +3953,8 @@ class BCMapCellIterator {
private:
bool SetNewRow(nsTableRowFrame* row = nullptr);
bool SetNewRowGroup(bool aFindFirstDamagedRow);
+ void PeekIAt(const BCMapCellInfo& aRefInfo, int32_t aRowIndex,
+ int32_t aColIndex, BCMapCellInfo& aAjaInfo);
nsTableFrame* mTableFrame;
nsTableCellMap* mTableCellMap;
@@ -4184,35 +4212,14 @@ void BCMapCellIterator::Next(BCMapCellInfo& aMapInfo) {
mAtEnd = true;
}
-void BCMapCellIterator::PeekIEnd(BCMapCellInfo& aRefInfo, uint32_t aRowIndex,
- BCMapCellInfo& aAjaInfo) {
- aAjaInfo.ResetCellInfo();
- int32_t colIndex = aRefInfo.mColIndex + aRefInfo.mColSpan;
- uint32_t rgRowIndex = aRowIndex - mRowGroupStart;
-
- BCCellData* cellData =
- static_cast<BCCellData*>(mCellMap->GetDataAt(rgRowIndex, colIndex));
- if (!cellData) { // add a dead cell data
- NS_ASSERTION(colIndex < mTableCellMap->GetColCount(), "program error");
- TableArea damageArea;
- cellData = static_cast<BCCellData*>(mCellMap->AppendCell(
- *mTableCellMap, nullptr, rgRowIndex, false, 0, damageArea));
- if (!cellData) ABORT0();
- }
- nsTableRowFrame* row = nullptr;
- if (cellData->IsRowSpan()) {
- rgRowIndex -= cellData->GetRowSpanOffset();
- cellData =
- static_cast<BCCellData*>(mCellMap->GetDataAt(rgRowIndex, colIndex));
- if (!cellData) ABORT0();
- } else {
- row = mRow;
- }
- aAjaInfo.SetInfo(row, colIndex, cellData, this);
+void BCMapCellIterator::PeekIEnd(const BCMapCellInfo& aRefInfo,
+ int32_t aRowIndex, BCMapCellInfo& aAjaInfo) {
+ PeekIAt(aRefInfo, aRowIndex, aRefInfo.mColIndex + aRefInfo.mColSpan,
+ aAjaInfo);
}
-void BCMapCellIterator::PeekBEnd(BCMapCellInfo& aRefInfo, uint32_t aColIndex,
- BCMapCellInfo& aAjaInfo) {
+void BCMapCellIterator::PeekBEnd(const BCMapCellInfo& aRefInfo,
+ int32_t aColIndex, BCMapCellInfo& aAjaInfo) {
aAjaInfo.ResetCellInfo();
int32_t rowIndex = aRefInfo.mRowIndex + aRefInfo.mRowSpan;
int32_t rgRowIndex = rowIndex - mRowGroupStart;
@@ -4227,6 +4234,7 @@ void BCMapCellIterator::PeekBEnd(BCMapCellInfo& aRefInfo, uint32_t aColIndex,
if (rg) {
cellMap = mTableCellMap->GetMapFor(rg, cellMap);
if (!cellMap) ABORT0();
+ // First row of the next row group
rgRowIndex = 0;
nextRow = rg->GetFirstRow();
}
@@ -4251,13 +4259,46 @@ void BCMapCellIterator::PeekBEnd(BCMapCellInfo& aRefInfo, uint32_t aColIndex,
if (!cellData) ABORT0();
}
if (cellData->IsColSpan()) {
- aColIndex -= cellData->GetColSpanOffset();
+ aColIndex -= static_cast<int32_t>(cellData->GetColSpanOffset());
cellData =
static_cast<BCCellData*>(cellMap->GetDataAt(rgRowIndex, aColIndex));
}
aAjaInfo.SetInfo(nextRow, aColIndex, cellData, this, cellMap);
}
+void BCMapCellIterator::PeekIStart(const BCMapCellInfo& aRefInfo,
+ int32_t aRowIndex, BCMapCellInfo& aAjaInfo) {
+ NS_ASSERTION(aRefInfo.mColIndex != 0, "program error");
+ PeekIAt(aRefInfo, aRowIndex, aRefInfo.mColIndex - 1, aAjaInfo);
+}
+
+void BCMapCellIterator::PeekIAt(const BCMapCellInfo& aRefInfo,
+ int32_t aRowIndex, int32_t aColIndex,
+ BCMapCellInfo& aAjaInfo) {
+ aAjaInfo.ResetCellInfo();
+ int32_t rgRowIndex = aRowIndex - mRowGroupStart;
+
+ auto* cellData =
+ static_cast<BCCellData*>(mCellMap->GetDataAt(rgRowIndex, aColIndex));
+ if (!cellData) { // add a dead cell data
+ NS_ASSERTION(aColIndex < mTableCellMap->GetColCount(), "program error");
+ TableArea damageArea;
+ cellData = static_cast<BCCellData*>(mCellMap->AppendCell(
+ *mTableCellMap, nullptr, rgRowIndex, false, 0, damageArea));
+ if (!cellData) ABORT0();
+ }
+ nsTableRowFrame* row = nullptr;
+ if (cellData->IsRowSpan()) {
+ rgRowIndex -= static_cast<int32_t>(cellData->GetRowSpanOffset());
+ cellData =
+ static_cast<BCCellData*>(mCellMap->GetDataAt(rgRowIndex, aColIndex));
+ if (!cellData) ABORT0();
+ } else {
+ row = mRow;
+ }
+ aAjaInfo.SetInfo(row, aColIndex, cellData, this);
+}
+
#define CELL_CORNER true
/** return the border style, border color and optionally the width in
@@ -5043,6 +5084,24 @@ void nsTableFrame::CalcBCBorders() {
BCCellBorders lastBlockDirBorders(damageArea.ColCount() + 1,
damageArea.StartCol());
if (!lastBlockDirBorders.borders) ABORT0();
+ if (damageArea.StartRow() != 0) {
+ // Ok, we've filled with information about the previous row's borders with
+ // the default state, which is "no borders." This is incorrect, and leaving
+ // it will result in an erroneous behaviour if the previous row did have
+ // borders, and the dirty rows don't, as we will not mark the beginning of
+ // the no border segment.
+ TableArea prevRowArea(damageArea.StartCol(), damageArea.StartRow() - 1,
+ damageArea.ColCount(), 1);
+ BCMapCellIterator iter(this, prevRowArea);
+ BCMapCellInfo info(this);
+ for (iter.First(info); !iter.mAtEnd; iter.Next(info)) {
+ if (info.mColIndex == prevRowArea.StartCol()) {
+ lastBlockDirBorders.borders[0] = info.GetIStartEdgeBorder();
+ }
+ lastBlockDirBorders.borders[info.mColIndex - prevRowArea.StartCol() + 1] =
+ info.GetIEndEdgeBorder();
+ }
+ }
// Inline direction border at block start of the table, computed by the
// previous cell. Unused afterwards.
Maybe<BCCellBorder> firstRowBStartEdgeBorder;
@@ -5072,12 +5131,27 @@ void nsTableFrame::CalcBCBorders() {
if (iter.IsNewRow()) {
if (info.mRowIndex == 0) {
BCCellBorder border;
- border.Reset(info.mRowIndex, info.mRowSpan);
+ if (info.mColIndex == 0) {
+ border.Reset(info.mRowIndex, info.mRowSpan);
+ } else {
+ // Similar to lastBlockDirBorders, the previous block-start border
+ // is filled by actually quering the adjacent cell.
+ BCMapCellInfo ajaInfo(this);
+ iter.PeekIStart(info, info.mRowIndex, ajaInfo);
+ border = ajaInfo.GetBStartEdgeBorder();
+ }
firstRowBStartEdgeBorder = Some(border);
} else {
firstRowBStartEdgeBorder = Nothing{};
}
- lastBEndBorder.Reset(info.GetCellEndRowIndex() + 1, info.mRowSpan);
+ if (info.mColIndex == 0) {
+ lastBEndBorder.Reset(info.GetCellEndRowIndex() + 1, info.mRowSpan);
+ } else {
+ // Same as above, but for block-end border.
+ BCMapCellInfo ajaInfo(this);
+ iter.PeekIStart(info, info.mRowIndex, ajaInfo);
+ lastBEndBorder = ajaInfo.GetBEndEdgeBorder();
+ }
} else if (info.mColIndex > damageArea.StartCol()) {
lastBEndBorder = lastBEndBorders[info.mColIndex - 1];
if (lastBEndBorder.rowIndex > (info.GetCellEndRowIndex() + 1)) {
@@ -5105,7 +5179,7 @@ void nsTableFrame::CalcBCBorders() {
} else {
bStartIStartCorner.Update(eLogicalSideIEnd, currentBorder);
tableCellMap->SetBCBorderCorner(
- eLogicalCornerBStartIStart, *iter.mCellMap, 0, 0, colIdx,
+ LogicalCorner::BStartIStart, *iter.mCellMap, 0, 0, colIdx,
LogicalSide(bStartIStartCorner.ownerSide),
bStartIStartCorner.subWidth, bStartIStartCorner.bevel);
}
@@ -5164,7 +5238,7 @@ void nsTableFrame::CalcBCBorders() {
(0 == rowB) ? bStartCorners[0] : bEndCorners[0];
bStartIStartCorner.Update(eLogicalSideBEnd, currentBorder);
tableCellMap->SetBCBorderCorner(
- eLogicalCornerBStartIStart, *iter.mCellMap, iter.mRowGroupStart,
+ LogicalCorner::BStartIStart, *iter.mCellMap, iter.mRowGroupStart,
rowB, 0, LogicalSide(bStartIStartCorner.ownerSide),
bStartIStartCorner.subWidth, bStartIStartCorner.bevel);
bEndCorners[0].Set(eLogicalSideBStart, currentBorder);
@@ -5203,14 +5277,15 @@ void nsTableFrame::CalcBCBorders() {
: bEndCorners[info.GetCellEndColIndex() + 1];
bStartIEndCorner.Update(eLogicalSideBEnd, currentBorder);
tableCellMap->SetBCBorderCorner(
- eLogicalCornerBStartIEnd, *iter.mCellMap, iter.mRowGroupStart, rowB,
- info.GetCellEndColIndex(), LogicalSide(bStartIEndCorner.ownerSide),
- bStartIEndCorner.subWidth, bStartIEndCorner.bevel);
+ LogicalCorner::BStartIEnd, *iter.mCellMap, iter.mRowGroupStart,
+ rowB, info.GetCellEndColIndex(),
+ LogicalSide(bStartIEndCorner.ownerSide), bStartIEndCorner.subWidth,
+ bStartIEndCorner.bevel);
BCCornerInfo& bEndIEndCorner =
bEndCorners[info.GetCellEndColIndex() + 1];
bEndIEndCorner.Set(eLogicalSideBStart, currentBorder);
tableCellMap->SetBCBorderCorner(
- eLogicalCornerBEndIEnd, *iter.mCellMap, iter.mRowGroupStart, rowB,
+ LogicalCorner::BEndIEnd, *iter.mCellMap, iter.mRowGroupStart, rowB,
info.GetCellEndColIndex(), LogicalSide(bEndIEndCorner.ownerSide),
bEndIEndCorner.subWidth, bEndIEndCorner.bevel);
// update lastBlockDirBorders and see if a new segment starts
@@ -5293,7 +5368,7 @@ void nsTableFrame::CalcBCBorders() {
if (0 != rowB) {
// Ok, actually store the information
tableCellMap->SetBCBorderCorner(
- eLogicalCornerBStartIEnd, *iter.mCellMap, iter.mRowGroupStart,
+ LogicalCorner::BStartIEnd, *iter.mCellMap, iter.mRowGroupStart,
rowB, info.GetCellEndColIndex(),
LogicalSide(bStartIEndCorner->ownerSide),
bStartIEndCorner->subWidth, bStartIEndCorner->bevel);
@@ -5301,8 +5376,8 @@ void nsTableFrame::CalcBCBorders() {
// Propagate this segment down the rowspan
for (int32_t rX = rowB + 1; rX < rowB + segLength; rX++) {
tableCellMap->SetBCBorderCorner(
- eLogicalCornerBEndIEnd, *iter.mCellMap, iter.mRowGroupStart, rX,
- info.GetCellEndColIndex(),
+ LogicalCorner::BEndIEnd, *iter.mCellMap, iter.mRowGroupStart,
+ rX, info.GetCellEndColIndex(),
LogicalSide(bStartIEndCorner->ownerSide),
bStartIEndCorner->subWidth, false);
}
@@ -5336,7 +5411,7 @@ void nsTableFrame::CalcBCBorders() {
BCCornerInfo& bEndIStartCorner = bEndCorners[colIdx];
bEndIStartCorner.Update(eLogicalSideIEnd, currentBorder);
tableCellMap->SetBCBorderCorner(
- eLogicalCornerBEndIStart, *iter.mCellMap, iter.mRowGroupStart,
+ LogicalCorner::BEndIStart, *iter.mCellMap, iter.mRowGroupStart,
info.GetCellEndRowIndex(), colIdx,
LogicalSide(bEndIStartCorner.ownerSide), bEndIStartCorner.subWidth,
bEndIStartCorner.bevel);
@@ -5346,7 +5421,7 @@ void nsTableFrame::CalcBCBorders() {
// inline-end of the overall table.
if (info.mNumTableCols == colIdx + 1) {
tableCellMap->SetBCBorderCorner(
- eLogicalCornerBEndIEnd, *iter.mCellMap, iter.mRowGroupStart,
+ LogicalCorner::BEndIEnd, *iter.mCellMap, iter.mRowGroupStart,
info.GetCellEndRowIndex(), colIdx,
LogicalSide(bEndIEndCorner.ownerSide), bEndIEndCorner.subWidth,
bEndIEndCorner.bevel, true);
@@ -5423,7 +5498,7 @@ void nsTableFrame::CalcBCBorders() {
colIdx >= damageArea.StartCol()) {
if (hitsSpanBelow) {
tableCellMap->SetBCBorderCorner(
- eLogicalCornerBEndIStart, *iter.mCellMap, iter.mRowGroupStart,
+ LogicalCorner::BEndIStart, *iter.mCellMap, iter.mRowGroupStart,
info.GetCellEndRowIndex(), colIdx,
LogicalSide(bEndIStartCorner.ownerSide),
bEndIStartCorner.subWidth, bEndIStartCorner.bevel);
@@ -5433,7 +5508,7 @@ void nsTableFrame::CalcBCBorders() {
BCCornerInfo& corner = bEndCorners[c];
corner.Set(eLogicalSideIEnd, currentBorder);
tableCellMap->SetBCBorderCorner(
- eLogicalCornerBEndIStart, *iter.mCellMap, iter.mRowGroupStart,
+ LogicalCorner::BEndIStart, *iter.mCellMap, iter.mRowGroupStart,
info.GetCellEndRowIndex(), c, LogicalSide(corner.ownerSide),
corner.subWidth, false);
}