| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org) | 2 * Copyright (C) 1997 Martin Jones (mjones@kde.org) |
| 3 * (C) 1997 Torben Weis (weis@kde.org) | 3 * (C) 1997 Torben Weis (weis@kde.org) |
| 4 * (C) 1998 Waldo Bastian (bastian@kde.org) | 4 * (C) 1998 Waldo Bastian (bastian@kde.org) |
| 5 * (C) 1999 Lars Knoll (knoll@kde.org) | 5 * (C) 1999 Lars Knoll (knoll@kde.org) |
| 6 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 6 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 7 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2013 Apple Inc. | 7 * Copyright (C) 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2013 Apple Inc. |
| 8 * All rights reserved. | 8 * All rights reserved. |
| 9 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 9 * Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
| 10 * | 10 * |
| (...skipping 1093 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1104 | 1104 |
| 1105 int remainingExtraLogicalHeight = extraLogicalHeight; | 1105 int remainingExtraLogicalHeight = extraLogicalHeight; |
| 1106 distributeExtraLogicalHeightToPercentRows(remainingExtraLogicalHeight, | 1106 distributeExtraLogicalHeightToPercentRows(remainingExtraLogicalHeight, |
| 1107 totalPercent); | 1107 totalPercent); |
| 1108 distributeExtraLogicalHeightToAutoRows(remainingExtraLogicalHeight, | 1108 distributeExtraLogicalHeightToAutoRows(remainingExtraLogicalHeight, |
| 1109 autoRowsCount); | 1109 autoRowsCount); |
| 1110 distributeRemainingExtraLogicalHeight(remainingExtraLogicalHeight); | 1110 distributeRemainingExtraLogicalHeight(remainingExtraLogicalHeight); |
| 1111 return extraLogicalHeight - remainingExtraLogicalHeight; | 1111 return extraLogicalHeight - remainingExtraLogicalHeight; |
| 1112 } | 1112 } |
| 1113 | 1113 |
| 1114 static bool shouldFlexCellChild(LayoutObject* cellDescendant) { | 1114 static bool shouldFlexCellChild(const LayoutTableCell& cell, |
| 1115 return cellDescendant->isAtomicInlineLevel() || | 1115 LayoutObject* cellDescendant) { |
| 1116 (cellDescendant->isBox() && | 1116 if (!cell.style()->logicalHeight().isSpecified()) |
| 1117 toLayoutBox(cellDescendant)->style()->overflowY() != | 1117 return false; |
| 1118 OverflowVisible && | 1118 if (cellDescendant->isAtomicInlineLevel()) |
| 1119 toLayoutBox(cellDescendant)->style()->overflowY() != OverflowHidden); | 1119 return true; |
| 1120 if (cellDescendant->style()->overflowY() == OverflowVisible || |
| 1121 cellDescendant->style()->overflowY() == OverflowHidden) |
| 1122 return true; |
| 1123 Node* node = cellDescendant->node(); |
| 1124 return node && node->isElementNode() && |
| 1125 (toElement(node)->isFormControlElement() || |
| 1126 isHTMLImageElement(toElement(node))); |
| 1120 } | 1127 } |
| 1121 | 1128 |
| 1122 void LayoutTableSection::layoutRows() { | 1129 void LayoutTableSection::layoutRows() { |
| 1123 #if DCHECK_IS_ON() | 1130 #if DCHECK_IS_ON() |
| 1124 SetLayoutNeededForbiddenScope layoutForbiddenScope(*this); | 1131 SetLayoutNeededForbiddenScope layoutForbiddenScope(*this); |
| 1125 #endif | 1132 #endif |
| 1126 | 1133 |
| 1127 ASSERT(!needsLayout()); | 1134 ASSERT(!needsLayout()); |
| 1128 | 1135 |
| 1129 LayoutAnalyzer::Scope analyzer(*this); | 1136 LayoutAnalyzer::Scope analyzer(*this); |
| (...skipping 765 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1895 // can't hope to match the behavior perfectly, but we'll continue to refine it | 1902 // can't hope to match the behavior perfectly, but we'll continue to refine it |
| 1896 // as we discover new bugs. :) | 1903 // as we discover new bugs. :) |
| 1897 bool cellChildrenFlex = false; | 1904 bool cellChildrenFlex = false; |
| 1898 bool flexAllChildren = cell.style()->logicalHeight().isSpecified() || | 1905 bool flexAllChildren = cell.style()->logicalHeight().isSpecified() || |
| 1899 (!table()->style()->logicalHeight().isAuto() && | 1906 (!table()->style()->logicalHeight().isAuto() && |
| 1900 rowHeight != cell.logicalHeight()); | 1907 rowHeight != cell.logicalHeight()); |
| 1901 | 1908 |
| 1902 for (LayoutObject* child = cell.firstChild(); child; | 1909 for (LayoutObject* child = cell.firstChild(); child; |
| 1903 child = child->nextSibling()) { | 1910 child = child->nextSibling()) { |
| 1904 if (!child->isText() && child->style()->logicalHeight().isPercentOrCalc() && | 1911 if (!child->isText() && child->style()->logicalHeight().isPercentOrCalc() && |
| 1905 (flexAllChildren || shouldFlexCellChild(child)) && | 1912 (flexAllChildren || shouldFlexCellChild(cell, child)) && |
| 1906 (!child->isTable() || toLayoutTable(child)->hasSections())) { | 1913 (!child->isTable() || toLayoutTable(child)->hasSections())) { |
| 1907 cellChildrenFlex = true; | 1914 cellChildrenFlex = true; |
| 1908 break; | 1915 break; |
| 1909 } | 1916 } |
| 1910 } | 1917 } |
| 1911 | 1918 |
| 1912 if (!cellChildrenFlex) { | 1919 if (!cellChildrenFlex) { |
| 1913 if (TrackedLayoutBoxListHashSet* percentHeightDescendants = | 1920 if (TrackedLayoutBoxListHashSet* percentHeightDescendants = |
| 1914 cell.percentHeightDescendants()) { | 1921 cell.percentHeightDescendants()) { |
| 1915 for (auto* descendant : *percentHeightDescendants) { | 1922 for (auto* descendant : *percentHeightDescendants) { |
| 1916 if (flexAllChildren || shouldFlexCellChild(descendant)) { | 1923 if (flexAllChildren || shouldFlexCellChild(cell, descendant)) { |
| 1917 cellChildrenFlex = true; | 1924 cellChildrenFlex = true; |
| 1918 break; | 1925 break; |
| 1919 } | 1926 } |
| 1920 } | 1927 } |
| 1921 } | 1928 } |
| 1922 } | 1929 } |
| 1923 | 1930 |
| 1924 if (!cellChildrenFlex) | 1931 if (!cellChildrenFlex) |
| 1925 return; | 1932 return; |
| 1926 | 1933 |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2082 // the header in all columns. | 2089 // the header in all columns. |
| 2083 // Note that this is in flow thread coordinates, not visual coordinates. The | 2090 // Note that this is in flow thread coordinates, not visual coordinates. The |
| 2084 // enclosing LayoutFlowThread will convert to visual coordinates. | 2091 // enclosing LayoutFlowThread will convert to visual coordinates. |
| 2085 if (table()->header() == this && isRepeatingHeaderGroup()) | 2092 if (table()->header() == this && isRepeatingHeaderGroup()) |
| 2086 rect.setHeight(table()->logicalHeight()); | 2093 rect.setHeight(table()->logicalHeight()); |
| 2087 return LayoutTableBoxComponent::mapToVisualRectInAncestorSpace(ancestor, rect, | 2094 return LayoutTableBoxComponent::mapToVisualRectInAncestorSpace(ancestor, rect, |
| 2088 flags); | 2095 flags); |
| 2089 } | 2096 } |
| 2090 | 2097 |
| 2091 } // namespace blink | 2098 } // namespace blink |
| OLD | NEW |