Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: Source/WebCore/rendering/RenderBox.cpp

Issue 11414259: Merge 135578 - REGRESSION (r128633): td changes size during re-layout of table although it shouldn't (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1312/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « LayoutTests/fast/table/nested-tables-with-div-offset-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com) 5 * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed.
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 2163 matching lines...) Expand 10 before | Expand all | Expand 10 after
2174 // A positioned element that specified both top/bottom or that specifies hei ght should be treated as though it has a height 2174 // A positioned element that specified both top/bottom or that specifies hei ght should be treated as though it has a height
2175 // explicitly specified that can be used for any percentage computations. 2175 // explicitly specified that can be used for any percentage computations.
2176 // FIXME: We can't just check top/bottom here. 2176 // FIXME: We can't just check top/bottom here.
2177 // https://bugs.webkit.org/show_bug.cgi?id=46500 2177 // https://bugs.webkit.org/show_bug.cgi?id=46500
2178 bool isOutOfFlowPositionedWithSpecifiedHeight = cb->isOutOfFlowPositioned() && (!cbstyle->logicalHeight().isAuto() || (!cbstyle->top().isAuto() && !cbstyle- >bottom().isAuto())); 2178 bool isOutOfFlowPositionedWithSpecifiedHeight = cb->isOutOfFlowPositioned() && (!cbstyle->logicalHeight().isAuto() || (!cbstyle->top().isAuto() && !cbstyle- >bottom().isAuto()));
2179 2179
2180 bool includeBorderPadding = isTable(); 2180 bool includeBorderPadding = isTable();
2181 2181
2182 if (isHorizontalWritingMode() != cb->isHorizontalWritingMode()) 2182 if (isHorizontalWritingMode() != cb->isHorizontalWritingMode())
2183 availableHeight = cb->contentLogicalWidth(); 2183 availableHeight = cb->contentLogicalWidth();
2184 else if (cb->isTableCell() && !skippedAutoHeightContainingBlock) { 2184 else if (cb->isTableCell()) {
2185 // Table cells violate what the CSS spec says to do with heights. Basica lly we 2185 if (!skippedAutoHeightContainingBlock) {
2186 // don't care if the cell specified a height or not. We just always make ourselves 2186 // Table cells violate what the CSS spec says to do with heights. Ba sically we
2187 // be a percentage of the cell's current content height. 2187 // don't care if the cell specified a height or not. We just always make ourselves
2188 if (!cb->hasOverrideHeight()) { 2188 // be a percentage of the cell's current content height.
2189 // Normally we would let the cell size intrinsically, but scrolling overflow has to be 2189 if (!cb->hasOverrideHeight()) {
2190 // treated differently, since WinIE lets scrolled overflow regions s hrink as needed. 2190 // Normally we would let the cell size intrinsically, but scroll ing overflow has to be
2191 // While we can't get all cases right, we can at least detect when t he cell has a specified 2191 // treated differently, since WinIE lets scrolled overflow regio ns shrink as needed.
2192 // height or when the table has a specified height. In these cases w e want to initially have 2192 // While we can't get all cases right, we can at least detect wh en the cell has a specified
2193 // no size and allow the flexing of the table or the cell to its spe cified height to cause us 2193 // height or when the table has a specified height. In these cas es we want to initially have
2194 // to grow to fill the space. This could end up being wrong in some cases, but it is 2194 // no size and allow the flexing of the table or the cell to its specified height to cause us
2195 // preferable to the alternative (sizing intrinsically and making th e row end up too big). 2195 // to grow to fill the space. This could end up being wrong in s ome cases, but it is
2196 RenderTableCell* cell = toRenderTableCell(cb); 2196 // preferable to the alternative (sizing intrinsically and makin g the row end up too big).
2197 if (scrollsOverflowY() && (!cell->style()->logicalHeight().isAuto() || !cell->table()->style()->logicalHeight().isAuto())) 2197 RenderTableCell* cell = toRenderTableCell(cb);
2198 return 0; 2198 if (scrollsOverflowY() && (!cell->style()->logicalHeight().isAut o() || !cell->table()->style()->logicalHeight().isAuto()))
2199 return -1; 2199 return 0;
2200 return -1;
2201 }
2202 availableHeight = cb->overrideLogicalContentHeight();
2203 includeBorderPadding = true;
2200 } 2204 }
2201 availableHeight = cb->overrideLogicalContentHeight();
2202 includeBorderPadding = true;
2203 } else if (cbstyle->logicalHeight().isFixed()) { 2205 } else if (cbstyle->logicalHeight().isFixed()) {
2204 LayoutUnit contentBoxHeightWithScrollbar = cb->adjustContentBoxLogicalHe ightForBoxSizing(cbstyle->logicalHeight().value()); 2206 LayoutUnit contentBoxHeightWithScrollbar = cb->adjustContentBoxLogicalHe ightForBoxSizing(cbstyle->logicalHeight().value());
2205 availableHeight = max<LayoutUnit>(0, contentBoxHeightWithScrollbar - cb- >scrollbarLogicalHeight()); 2207 availableHeight = max<LayoutUnit>(0, contentBoxHeightWithScrollbar - cb- >scrollbarLogicalHeight());
2206 } else if (cbstyle->logicalHeight().isPercent() && !isOutOfFlowPositionedWit hSpecifiedHeight) { 2208 } else if (cbstyle->logicalHeight().isPercent() && !isOutOfFlowPositionedWit hSpecifiedHeight) {
2207 // We need to recur and compute the percentage height for our containing block. 2209 // We need to recur and compute the percentage height for our containing block.
2208 LayoutUnit heightWithScrollbar = cb->computePercentageLogicalHeight(cbst yle->logicalHeight()); 2210 LayoutUnit heightWithScrollbar = cb->computePercentageLogicalHeight(cbst yle->logicalHeight());
2209 if (heightWithScrollbar != -1) { 2211 if (heightWithScrollbar != -1) {
2210 LayoutUnit contentBoxHeightWithScrollbar = cb->adjustContentBoxLogic alHeightForBoxSizing(heightWithScrollbar); 2212 LayoutUnit contentBoxHeightWithScrollbar = cb->adjustContentBoxLogic alHeightForBoxSizing(heightWithScrollbar);
2211 availableHeight = max<LayoutUnit>(0, contentBoxHeightWithScrollbar - cb->scrollbarLogicalHeight()); 2213 availableHeight = max<LayoutUnit>(0, contentBoxHeightWithScrollbar - cb->scrollbarLogicalHeight());
2212 } 2214 }
(...skipping 1871 matching lines...) Expand 10 before | Expand all | Expand 10 after
4084 } 4086 }
4085 4087
4086 if (didSplitParentAnonymousBoxes) 4088 if (didSplitParentAnonymousBoxes)
4087 markBoxForRelayoutAfterSplit(this); 4089 markBoxForRelayoutAfterSplit(this);
4088 4090
4089 ASSERT(beforeChild->parent() == this); 4091 ASSERT(beforeChild->parent() == this);
4090 return beforeChild; 4092 return beforeChild;
4091 } 4093 }
4092 4094
4093 } // namespace WebCore 4095 } // namespace WebCore
OLDNEW
« no previous file with comments | « LayoutTests/fast/table/nested-tables-with-div-offset-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698