| Index: third_party/WebKit/Source/core/layout/LayoutTable.cpp
|
| diff --git a/third_party/WebKit/Source/core/layout/LayoutTable.cpp b/third_party/WebKit/Source/core/layout/LayoutTable.cpp
|
| index 9e3aff1c029a906222751313ef8273db7c012289..d01f9f790e489a7b99a65cc3a06b322a53db4fa6 100644
|
| --- a/third_party/WebKit/Source/core/layout/LayoutTable.cpp
|
| +++ b/third_party/WebKit/Source/core/layout/LayoutTable.cpp
|
| @@ -4,7 +4,8 @@
|
| * (C) 1998 Waldo Bastian (bastian@kde.org)
|
| * (C) 1999 Lars Knoll (knoll@kde.org)
|
| * (C) 1999 Antti Koivisto (koivisto@kde.org)
|
| - * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc. All rights reserved.
|
| + * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2013 Apple Inc.
|
| + * All rights reserved.
|
| * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
|
| *
|
| * This library is free software; you can redistribute it and/or
|
| @@ -88,7 +89,8 @@ void LayoutTable::styleDidChange(StyleDifference diff,
|
| m_tableLayout->willChangeTableLayout();
|
|
|
| // According to the CSS2 spec, you only use fixed table layout if an
|
| - // explicit width is specified on the table. Auto width implies auto table layout.
|
| + // explicit width is specified on the table. Auto width implies auto table
|
| + // layout.
|
| if (style()->isFixedTableLayout())
|
| m_tableLayout = wrapUnique(new TableLayoutAlgorithmFixed(this));
|
| else
|
| @@ -278,7 +280,8 @@ void LayoutTable::updateLogicalWidth() {
|
| setLogicalWidth(convertStyleLogicalWidthToComputedWidth(
|
| styleLogicalWidth, containerWidthInInlineDirection));
|
| } else {
|
| - // Subtract out any fixed margins from our available width for auto width tables.
|
| + // Subtract out any fixed margins from our available width for auto width
|
| + // tables.
|
| LayoutUnit marginStart =
|
| minimumValueForLength(style()->marginStart(), availableLogicalWidth);
|
| LayoutUnit marginEnd =
|
| @@ -296,8 +299,9 @@ void LayoutTable::updateLogicalWidth() {
|
|
|
| // Ensure we aren't bigger than our available width.
|
| LayoutUnit maxWidth = maxPreferredLogicalWidth();
|
| - // scaledWidthFromPercentColumns depends on m_layoutStruct in TableLayoutAlgorithmAuto, which
|
| - // maxPreferredLogicalWidth fills in. So scaledWidthFromPercentColumns has to be called after
|
| + // scaledWidthFromPercentColumns depends on m_layoutStruct in
|
| + // TableLayoutAlgorithmAuto, which maxPreferredLogicalWidth fills in. So
|
| + // scaledWidthFromPercentColumns has to be called after
|
| // maxPreferredLogicalWidth.
|
| LayoutUnit scaledWidth = m_tableLayout->scaledWidthFromPercentColumns() +
|
| bordersPaddingAndSpacingInRowDirection();
|
| @@ -318,8 +322,9 @@ void LayoutTable::updateLogicalWidth() {
|
| LayoutUnit(std::min(logicalWidth(), computedMaxLogicalWidth).floor()));
|
| }
|
|
|
| - // Ensure we aren't smaller than our min preferred width. This MUST be done after 'max-width' as
|
| - // we ignore it if it means we wouldn't accommodate our content.
|
| + // Ensure we aren't smaller than our min preferred width. This MUST be done
|
| + // after 'max-width' as we ignore it if it means we wouldn't accommodate our
|
| + // content.
|
| setLogicalWidth(
|
| LayoutUnit(std::max(logicalWidth(), minPreferredLogicalWidth()).floor()));
|
|
|
| @@ -344,14 +349,16 @@ void LayoutTable::updateLogicalWidth() {
|
| setMarginStart(marginValues.m_start);
|
| setMarginEnd(marginValues.m_end);
|
|
|
| - // We should NEVER shrink the table below the min-content logical width, or else the table can't accommodate
|
| - // its own content which doesn't match CSS nor what authors expect.
|
| - // FIXME: When we convert to sub-pixel layout for tables we can remove the int conversion
|
| - // https://code.google.com/p/chromium/issues/detail?id=241198
|
| + // We should NEVER shrink the table below the min-content logical width, or
|
| + // else the table can't accommodate its own content which doesn't match CSS
|
| + // nor what authors expect.
|
| + // FIXME: When we convert to sub-pixel layout for tables we can remove the int
|
| + // conversion. http://crbug.com/241198
|
| ASSERT(logicalWidth().floor() >= minPreferredLogicalWidth().floor());
|
| }
|
|
|
| -// This method takes a ComputedStyle's logical width, min-width, or max-width length and computes its actual value.
|
| +// This method takes a ComputedStyle's logical width, min-width, or max-width
|
| +// length and computes its actual value.
|
| LayoutUnit LayoutTable::convertStyleLogicalWidthToComputedWidth(
|
| const Length& styleLogicalWidth,
|
| LayoutUnit availableWidth) {
|
| @@ -360,7 +367,8 @@ LayoutUnit LayoutTable::convertStyleLogicalWidthToComputedWidth(
|
| styleLogicalWidth, availableWidth,
|
| bordersPaddingAndSpacingInRowDirection());
|
|
|
| - // HTML tables' width styles already include borders and paddings, but CSS tables' width styles do not.
|
| + // HTML tables' width styles already include borders and paddings, but CSS
|
| + // tables' width styles do not.
|
| LayoutUnit borders;
|
| bool isCSSTable = !isHTMLTableElement(node());
|
| if (isCSSTable && styleLogicalWidth.isSpecified() &&
|
| @@ -382,9 +390,11 @@ LayoutUnit LayoutTable::convertStyleLogicalHeightToComputedHeight(
|
| LayoutUnit borderAndPadding = borderAndPaddingBefore + borderAndPaddingAfter;
|
| LayoutUnit computedLogicalHeight;
|
| if (styleLogicalHeight.isFixed()) {
|
| - // HTML tables size as though CSS height includes border/padding, CSS tables do not.
|
| + // HTML tables size as though CSS height includes border/padding, CSS tables
|
| + // do not.
|
| LayoutUnit borders = LayoutUnit();
|
| - // FIXME: We cannot apply box-sizing: content-box on <table> which other browsers allow.
|
| + // FIXME: We cannot apply box-sizing: content-box on <table> which other
|
| + // browsers allow.
|
| if (isHTMLTableElement(node()) ||
|
| style()->boxSizing() == BoxSizingBorderBox) {
|
| borders = borderAndPadding;
|
| @@ -404,15 +414,17 @@ LayoutUnit LayoutTable::convertStyleLogicalHeightToComputedHeight(
|
|
|
| void LayoutTable::layoutCaption(LayoutTableCaption& caption) {
|
| if (caption.needsLayout()) {
|
| - // The margins may not be available but ensure the caption is at least located beneath any previous sibling caption
|
| - // so that it does not mistakenly think any floats in the previous caption intrude into it.
|
| + // The margins may not be available but ensure the caption is at least
|
| + // located beneath any previous sibling caption so that it does not
|
| + // mistakenly think any floats in the previous caption intrude into it.
|
| caption.setLogicalLocation(
|
| LayoutPoint(caption.marginStart(),
|
| collapsedMarginBeforeForChild(caption) + logicalHeight()));
|
| // If LayoutTableCaption ever gets a layout() function, use it here.
|
| caption.layoutIfNeeded();
|
| }
|
| - // Apply the margins to the location now that they are definitely available from layout
|
| + // Apply the margins to the location now that they are definitely available
|
| + // from layout
|
| LayoutUnit captionLogicalTop =
|
| collapsedMarginBeforeForChild(caption) + logicalHeight();
|
| caption.setLogicalLocation(
|
| @@ -430,19 +442,23 @@ void LayoutTable::distributeExtraLogicalHeight(int extraLogicalHeight) {
|
| if (extraLogicalHeight <= 0)
|
| return;
|
|
|
| - // FIXME: Distribute the extra logical height between all table sections instead of giving it all to the first one.
|
| + // FIXME: Distribute the extra logical height between all table sections
|
| + // instead of giving it all to the first one.
|
| if (LayoutTableSection* section = firstBody())
|
| extraLogicalHeight -=
|
| section->distributeExtraLogicalHeightToRows(extraLogicalHeight);
|
|
|
| - // FIXME: We really would like to enable this ASSERT to ensure that all the extra space has been distributed.
|
| - // However our current distribution algorithm does not round properly and thus we can have some remaining height.
|
| + // FIXME: We really would like to enable this ASSERT to ensure that all the
|
| + // extra space has been distributed.
|
| + // However our current distribution algorithm does not round properly and thus
|
| + // we can have some remaining height.
|
| // ASSERT(!topSection() || !extraLogicalHeight);
|
| }
|
|
|
| void LayoutTable::simplifiedNormalFlowLayout() {
|
| - // FIXME: We should walk through the items in the tree in tree order to do the layout here
|
| - // instead of walking through individual parts of the tree. crbug.com/442737
|
| + // FIXME: We should walk through the items in the tree in tree order to do the
|
| + // layout here instead of walking through individual parts of the tree.
|
| + // crbug.com/442737
|
| for (auto& caption : m_captions)
|
| caption->layoutIfNeeded();
|
|
|
| @@ -460,8 +476,8 @@ bool LayoutTable::recalcChildOverflowAfterStyleChange() {
|
| ASSERT(childNeedsOverflowRecalcAfterStyleChange());
|
| clearChildNeedsOverflowRecalcAfterStyleChange();
|
|
|
| - // If the table sections we keep pointers to have gone away then the table will be rebuilt and
|
| - // overflow will get recalculated anyway so return early.
|
| + // If the table sections we keep pointers to have gone away then the table
|
| + // will be rebuilt and overflow will get recalculated anyway so return early.
|
| if (needsSectionRecalc())
|
| return false;
|
|
|
| @@ -484,20 +500,22 @@ void LayoutTable::layout() {
|
| if (simplifiedLayout())
|
| return;
|
|
|
| - // Note: LayoutTable is handled differently than other LayoutBlocks and the LayoutScope
|
| + // Note: LayoutTable is handled differently than other LayoutBlocks and the
|
| + // LayoutScope
|
| // must be created before the table begins laying out.
|
| TextAutosizer::LayoutScope textAutosizerLayoutScope(this);
|
|
|
| recalcSectionsIfNeeded();
|
| - // FIXME: We should do this recalc lazily in borderStart/borderEnd so that we don't have to make sure
|
| - // to call this before we call borderStart/borderEnd to avoid getting a stale value.
|
| + // FIXME: We should do this recalc lazily in borderStart/borderEnd so that we
|
| + // don't have to make sure to call this before we call borderStart/borderEnd
|
| + // to avoid getting a stale value.
|
| recalcBordersInRowDirection();
|
|
|
| SubtreeLayoutScope layouter(*this);
|
|
|
| - // If any table section moved vertically, we will just issue paint invalidations for everything from that
|
| - // section down (it is quite unlikely that any of the following sections
|
| - // did not shift).
|
| + // If any table section moved vertically, we will just issue paint
|
| + // invalidations for everything from that section down (it is quite unlikely
|
| + // that any of the following sections did not shift).
|
| bool sectionMoved = false;
|
| {
|
| LayoutState state(*this, locationOffset());
|
| @@ -545,9 +563,10 @@ void LayoutTable::layout() {
|
| child->layoutIfNeeded();
|
| ASSERT(!child->needsLayout());
|
| } else {
|
| - // FIXME: We should never have other type of children (they should be wrapped in an
|
| - // anonymous table section) but our code is too crazy and this can happen in practice.
|
| - // Until this is fixed, let's make sure we don't leave non laid out children in the tree.
|
| + // FIXME: We should never have other type of children (they should be
|
| + // wrapped in an anonymous table section) but our code is too crazy and
|
| + // this can happen in practice. Until this is fixed, let's make sure we
|
| + // don't leave non laid out children in the tree.
|
| child->layoutIfNeeded();
|
| }
|
| }
|
| @@ -609,14 +628,16 @@ void LayoutTable::layout() {
|
| section->setLogicalTop(logicalOffset);
|
| section->layoutRows();
|
| logicalOffset += section->logicalHeight();
|
| - // If the section is a repeating header group that allows at least one row of content then store the
|
| - // offset for other sections to offset their rows against.
|
| + // If the section is a repeating header group that allows at least one row
|
| + // of content then store the offset for other sections to offset their
|
| + // rows against.
|
| if (isPaginated && m_head && m_head == section &&
|
| section->logicalHeight() <
|
| section->pageLogicalHeightForOffset(logicalOffset) &&
|
| section->getPaginationBreakability() != LayoutBox::AllowAnyBreaks) {
|
| LayoutUnit offsetForTableHeaders = state.heightOffsetForTableHeaders();
|
| - // Don't include any strut in the header group - we only want the height from its content.
|
| + // Don't include any strut in the header group - we only want the height
|
| + // from its content.
|
| offsetForTableHeaders += section->logicalHeight();
|
| if (LayoutTableRow* row = section->firstRow())
|
| offsetForTableHeaders -= row->paginationStrut();
|
| @@ -626,8 +647,8 @@ void LayoutTable::layout() {
|
|
|
| if (!topSection && computedLogicalHeight > totalSectionLogicalHeight &&
|
| !document().inQuirksMode()) {
|
| - // Completely empty tables (with no sections or anything) should at least honor specified height
|
| - // in strict mode.
|
| + // Completely empty tables (with no sections or anything) should at least
|
| + // honor specified height in strict mode.
|
| setLogicalHeight(logicalHeight() + computedLogicalHeight);
|
| }
|
|
|
| @@ -645,7 +666,8 @@ void LayoutTable::layout() {
|
| section->setLogicalLocation(
|
| LayoutPoint(sectionLogicalLeft, logicalHeight()));
|
|
|
| - // As we may skip invalidation on the table, we need to ensure that sections are invalidated when they moved.
|
| + // As we may skip invalidation on the table, we need to ensure that
|
| + // sections are invalidated when they moved.
|
| if (sectionMoved && !section->selfNeedsLayout())
|
| section->setMayNeedPaintInvalidation();
|
|
|
| @@ -703,9 +725,9 @@ void LayoutTable::invalidateCollapsedBorders() {
|
| }
|
|
|
| // Collect all the unique border values that we want to paint in a sorted list.
|
| -// During the collection, each cell saves its recalculated borders into the cache
|
| -// of its containing section, and invalidates itself if any border changes.
|
| -// This method doesn't affect layout.
|
| +// During the collection, each cell saves its recalculated borders into the
|
| +// cache of its containing section, and invalidates itself if any border
|
| +// changes. This method doesn't affect layout.
|
| void LayoutTable::recalcCollapsedBordersIfNeeded() {
|
| if (m_collapsedBordersValid || !collapseBorders())
|
| return;
|
| @@ -729,8 +751,10 @@ void LayoutTable::recalcCollapsedBordersIfNeeded() {
|
|
|
| void LayoutTable::addOverflowFromChildren() {
|
| // Add overflow from borders.
|
| - // Technically it's odd that we are incorporating the borders into layout overflow, which is only supposed to be about overflow from our
|
| - // descendant objects, but since tables don't support overflow:auto, this works out fine.
|
| + // Technically it's odd that we are incorporating the borders into layout
|
| + // overflow, which is only supposed to be about overflow from our
|
| + // descendant objects, but since tables don't support overflow:auto, this
|
| + // works out fine.
|
| if (collapseBorders()) {
|
| int rightBorderOverflow =
|
| (size().width() + outerBorderRight() - borderRight()).toInt();
|
| @@ -808,15 +832,18 @@ void LayoutTable::paintMask(const PaintInfo& paintInfo,
|
| void LayoutTable::computeIntrinsicLogicalWidths(LayoutUnit& minWidth,
|
| LayoutUnit& maxWidth) const {
|
| recalcSectionsIfNeeded();
|
| - // FIXME: Do the recalc in borderStart/borderEnd and make those const_cast this call.
|
| - // Then m_borderStart/m_borderEnd will be transparent a cache and it removes the possibility
|
| - // of reading out stale values.
|
| + // FIXME: Do the recalc in borderStart/borderEnd and make those const_cast
|
| + // this call.
|
| + // Then m_borderStart/m_borderEnd will be transparent a cache and it removes
|
| + // the possibility of reading out stale values.
|
| const_cast<LayoutTable*>(this)->recalcBordersInRowDirection();
|
| - // FIXME: Restructure the table layout code so that we can make this method const.
|
| + // FIXME: Restructure the table layout code so that we can make this method
|
| + // const.
|
| const_cast<LayoutTable*>(this)->m_tableLayout->computeIntrinsicLogicalWidths(
|
| minWidth, maxWidth);
|
|
|
| - // FIXME: We should include captions widths here like we do in computePreferredLogicalWidths.
|
| + // FIXME: We should include captions widths here like we do in
|
| + // computePreferredLogicalWidths.
|
| }
|
|
|
| void LayoutTable::computePreferredLogicalWidths() {
|
| @@ -838,7 +865,8 @@ void LayoutTable::computePreferredLogicalWidths() {
|
| m_minPreferredLogicalWidth, m_captions[i]->minPreferredLogicalWidth());
|
|
|
| const ComputedStyle& styleToUse = styleRef();
|
| - // FIXME: This should probably be checking for isSpecified since you should be able to use percentage or calc values for min-width.
|
| + // FIXME: This should probably be checking for isSpecified since you should be
|
| + // able to use percentage or calc values for min-width.
|
| if (styleToUse.logicalMinWidth().isFixed() &&
|
| styleToUse.logicalMinWidth().value() > 0) {
|
| m_maxPreferredLogicalWidth = std::max(
|
| @@ -849,9 +877,11 @@ void LayoutTable::computePreferredLogicalWidths() {
|
| styleToUse.logicalMinWidth().value()));
|
| }
|
|
|
| - // FIXME: This should probably be checking for isSpecified since you should be able to use percentage or calc values for maxWidth.
|
| + // FIXME: This should probably be checking for isSpecified since you should be
|
| + // able to use percentage or calc values for maxWidth.
|
| if (styleToUse.logicalMaxWidth().isFixed()) {
|
| - // We don't constrain m_minPreferredLogicalWidth as the table should be at least the size of its min-content, regardless of 'max-width'.
|
| + // We don't constrain m_minPreferredLogicalWidth as the table should be at
|
| + // least the size of its min-content, regardless of 'max-width'.
|
| m_maxPreferredLogicalWidth = std::min(
|
| m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(
|
| styleToUse.logicalMaxWidth().value()));
|
| @@ -859,8 +889,9 @@ void LayoutTable::computePreferredLogicalWidths() {
|
| std::max(m_minPreferredLogicalWidth, m_maxPreferredLogicalWidth);
|
| }
|
|
|
| - // FIXME: We should be adding borderAndPaddingLogicalWidth here, but m_tableLayout->computePreferredLogicalWidths already does,
|
| - // so a bunch of tests break doing this naively.
|
| + // FIXME: We should be adding borderAndPaddingLogicalWidth here, but
|
| + // m_tableLayout->computePreferredLogicalWidths already does, so a bunch of
|
| + // tests break doing this naively.
|
| clearPreferredLogicalWidthsDirty();
|
| }
|
|
|
| @@ -877,8 +908,9 @@ void LayoutTable::splitEffectiveColumn(unsigned index, unsigned firstSpan) {
|
| m_effectiveColumns.insert(index, firstSpan);
|
| m_effectiveColumns[index + 1].span -= firstSpan;
|
|
|
| - // Propagate the change in our columns representation to the sections that don't need
|
| - // cell recalc. If they do, they will be synced up directly with m_columns later.
|
| + // Propagate the change in our columns representation to the sections that
|
| + // don't need cell recalc. If they do, they will be synced up directly with
|
| + // m_columns later.
|
| for (LayoutObject* child = firstChild(); child;
|
| child = child->nextSibling()) {
|
| if (!child->isTableSection())
|
| @@ -898,14 +930,16 @@ void LayoutTable::appendEffectiveColumn(unsigned span) {
|
| unsigned newColumnIndex = m_effectiveColumns.size();
|
| m_effectiveColumns.append(span);
|
|
|
| - // Unless the table has cell(s) with colspan that exceed the number of columns afforded
|
| - // by the other rows in the table we can use the fast path when mapping columns to effective columns.
|
| + // Unless the table has cell(s) with colspan that exceed the number of columns
|
| + // afforded by the other rows in the table we can use the fast path when
|
| + // mapping columns to effective columns.
|
| if (span == 1 && m_noCellColspanAtLeast + 1 == numEffectiveColumns()) {
|
| m_noCellColspanAtLeast++;
|
| }
|
|
|
| - // Propagate the change in our columns representation to the sections that don't need
|
| - // cell recalc. If they do, they will be synced up directly with m_columns later.
|
| + // Propagate the change in our columns representation to the sections that
|
| + // don't need cell recalc. If they do, they will be synced up directly with
|
| + // m_columns later.
|
| for (LayoutObject* child = firstChild(); child;
|
| child = child->nextSibling()) {
|
| if (!child->isTableSection())
|
| @@ -1036,7 +1070,8 @@ void LayoutTable::recalcSections() const {
|
| }
|
| }
|
|
|
| - // repair column count (addChild can grow it too much, because it always adds elements to the last row of a section)
|
| + // repair column count (addChild can grow it too much, because it always adds
|
| + // elements to the last row of a section)
|
| unsigned maxCols = 0;
|
| for (LayoutObject* child = firstChild(); child;
|
| child = child->nextSibling()) {
|
| @@ -1060,7 +1095,8 @@ int LayoutTable::calcBorderStart() const {
|
| if (!collapseBorders())
|
| return LayoutBlock::borderStart();
|
|
|
| - // Determined by the first cell of the first row. See the CSS 2.1 spec, section 17.6.2.
|
| + // Determined by the first cell of the first row. See the CSS 2.1 spec,
|
| + // section 17.6.2.
|
| if (!numEffectiveColumns())
|
| return 0;
|
|
|
| @@ -1072,7 +1108,8 @@ int LayoutTable::calcBorderStart() const {
|
| if (tableStartBorder.style() > BorderStyleHidden)
|
| borderWidth = tableStartBorder.width();
|
|
|
| - // TODO(dgrogan): This logic doesn't properly account for the first column in the first column-group case.
|
| + // TODO(dgrogan): This logic doesn't properly account for the first column in
|
| + // the first column-group case.
|
| if (LayoutTableCol* column =
|
| colElementAtAbsoluteColumn(0).innermostColOrColGroup()) {
|
| // FIXME: We don't account for direction on columns and column groups.
|
| @@ -1119,7 +1156,8 @@ int LayoutTable::calcBorderEnd() const {
|
| if (!collapseBorders())
|
| return LayoutBlock::borderEnd();
|
|
|
| - // Determined by the last cell of the first row. See the CSS 2.1 spec, section 17.6.2.
|
| + // Determined by the last cell of the first row. See the CSS 2.1 spec, section
|
| + // 17.6.2.
|
| if (!numEffectiveColumns())
|
| return 0;
|
|
|
| @@ -1133,7 +1171,8 @@ int LayoutTable::calcBorderEnd() const {
|
|
|
| unsigned endColumn = numEffectiveColumns() - 1;
|
|
|
| - // TODO(dgrogan): This logic doesn't properly account for the last column in the last column-group case.
|
| + // TODO(dgrogan): This logic doesn't properly account for the last column in
|
| + // the last column-group case.
|
| if (LayoutTableCol* column =
|
| colElementAtAbsoluteColumn(endColumn).innermostColOrColGroup()) {
|
| // FIXME: We don't account for direction on columns and column groups.
|
| @@ -1177,7 +1216,8 @@ int LayoutTable::calcBorderEnd() const {
|
| }
|
|
|
| void LayoutTable::recalcBordersInRowDirection() {
|
| - // FIXME: We need to compute the collapsed before / after borders in the same fashion.
|
| + // FIXME: We need to compute the collapsed before / after borders in the same
|
| + // fashion.
|
| m_borderStart = calcBorderStart();
|
| m_borderEnd = calcBorderEnd();
|
| }
|
| @@ -1453,9 +1493,10 @@ int LayoutTable::inlineBlockBaseline(LineDirectionMode) const {
|
| }
|
|
|
| int LayoutTable::firstLineBoxBaseline() const {
|
| - // The baseline of a 'table' is the same as the 'inline-table' baseline per CSS 3 Flexbox (CSS 2.1
|
| - // doesn't define the baseline of a 'table' only an 'inline-table').
|
| - // This is also needed to properly determine the baseline of a cell if it has a table child.
|
| + // The baseline of a 'table' is the same as the 'inline-table' baseline per
|
| + // CSS 3 Flexbox (CSS 2.1 doesn't define the baseline of a 'table' only an
|
| + // 'inline-table'). This is also needed to properly determine the baseline of
|
| + // a cell if it has a table child.
|
|
|
| if (isWritingModeRoot())
|
| return -1;
|
| @@ -1470,7 +1511,8 @@ int LayoutTable::firstLineBoxBaseline() const {
|
| if (baseline >= 0)
|
| return (topNonEmptySection->logicalTop() + baseline).toInt();
|
|
|
| - // FF, Presto and IE use the top of the section as the baseline if its first row is empty of cells or content.
|
| + // FF, Presto and IE use the top of the section as the baseline if its first
|
| + // row is empty of cells or content.
|
| // The baseline of an empty row isn't specified by CSS 2.1.
|
| if (topNonEmptySection->firstRow() &&
|
| !topNonEmptySection->firstRow()->firstCell())
|
| @@ -1488,9 +1530,10 @@ LayoutRect LayoutTable::overflowClipRect(
|
| // If we have a caption, expand the clip to include the caption.
|
| // FIXME: Technically this is wrong, but it's virtually impossible to fix this
|
| // for real until captions have been re-written.
|
| - // FIXME: This code assumes (like all our other caption code) that only top/bottom are
|
| - // supported. When we actually support left/right and stop mapping them to top/bottom,
|
| - // we might have to hack this code first (depending on what order we do these bug fixes in).
|
| + // FIXME: This code assumes (like all our other caption code) that only
|
| + // top/bottom are supported. When we actually support left/right and stop
|
| + // mapping them to top/bottom, we might have to hack this code first
|
| + // (depending on what order we do these bug fixes in).
|
| if (!m_captions.isEmpty()) {
|
| if (style()->isHorizontalWritingMode()) {
|
| rect.setHeight(size().height());
|
|
|