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

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

Issue 9371032: Merge 106694 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1025/
Patch Set: Created 8 years, 10 months 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
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) 2007 David Smith (catfish.man@gmail.com) 4 * (C) 2007 David Smith (catfish.man@gmail.com)
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
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 1189 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 // Table cells call layoutBlock directly, so don't add any logic here. Put code into 1200 // Table cells call layoutBlock directly, so don't add any logic here. Put code into
1201 // layoutBlock(). 1201 // layoutBlock().
1202 layoutBlock(false); 1202 layoutBlock(false);
1203 1203
1204 // It's safe to check for control clip here, since controls can never be tab le cells. 1204 // It's safe to check for control clip here, since controls can never be tab le cells.
1205 // If we have a lightweight clip, there can never be any overflow from child ren. 1205 // If we have a lightweight clip, there can never be any overflow from child ren.
1206 if (hasControlClip() && m_overflow) 1206 if (hasControlClip() && m_overflow)
1207 clearLayoutOverflow(); 1207 clearLayoutOverflow();
1208 } 1208 }
1209 1209
1210 void RenderBlock::computeInitialRegionRangeForBlock()
1211 {
1212 if (inRenderFlowThread()) {
1213 // Set our start and end regions. No regions above or below us will be c onsidered by our children. They are
1214 // effectively clamped to our region range.
1215 LayoutUnit oldHeight = logicalHeight();
1216 LayoutUnit oldLogicalTop = logicalTop();
1217 setLogicalHeight(numeric_limits<LayoutUnit>::max() / 2);
1218 computeLogicalHeight();
1219 enclosingRenderFlowThread()->setRegionRangeForBox(this, offsetFromLogica lTopOfFirstPage());
1220 setLogicalHeight(oldHeight);
1221 setLogicalTop(oldLogicalTop);
1222 }
1223 }
1224
1225 void RenderBlock::computeRegionRangeForBlock()
1226 {
1227 if (inRenderFlowThread())
1228 enclosingRenderFlowThread()->setRegionRangeForBox(this, offsetFromLogica lTopOfFirstPage());
1229 }
1230
1210 void RenderBlock::layoutBlock(bool relayoutChildren, LayoutUnit pageLogicalHeigh t, BlockLayoutPass layoutPass) 1231 void RenderBlock::layoutBlock(bool relayoutChildren, LayoutUnit pageLogicalHeigh t, BlockLayoutPass layoutPass)
1211 { 1232 {
1212 ASSERT(needsLayout()); 1233 ASSERT(needsLayout());
1213 1234
1214 if (isInline() && !isInlineBlockOrInlineTable()) // Inline <form>s inside va rious table elements can 1235 if (isInline() && !isInlineBlockOrInlineTable()) // Inline <form>s inside va rious table elements can
1215 return; // cause us to come in here . Just bail. 1236 return; // cause us to come in here . Just bail.
1216 1237
1217 if (!relayoutChildren && simplifiedLayout()) 1238 if (!relayoutChildren && simplifiedLayout())
1218 return; 1239 return;
1219 1240
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 pageLogicalHeightChanged = true; 1280 pageLogicalHeightChanged = true;
1260 } 1281 }
1261 1282
1262 if (!hasSpecifiedPageLogicalHeight && !pageLogicalHeight) 1283 if (!hasSpecifiedPageLogicalHeight && !pageLogicalHeight)
1263 colInfo->clearForcedBreaks(); 1284 colInfo->clearForcedBreaks();
1264 } 1285 }
1265 1286
1266 RenderView* renderView = view(); 1287 RenderView* renderView = view();
1267 RenderStyle* styleToUse = style(); 1288 RenderStyle* styleToUse = style();
1268 LayoutStateMaintainer statePusher(renderView, this, locationOffset(), hasCol umns() || hasTransform() || hasReflection() || styleToUse->isFlippedBlocksWritin gMode(), pageLogicalHeight, pageLogicalHeightChanged, colInfo); 1289 LayoutStateMaintainer statePusher(renderView, this, locationOffset(), hasCol umns() || hasTransform() || hasReflection() || styleToUse->isFlippedBlocksWritin gMode(), pageLogicalHeight, pageLogicalHeightChanged, colInfo);
1269 1290
1270 if (inRenderFlowThread()) { 1291 if (inRenderFlowThread()) {
1271 // Regions changing widths can force us to relayout our children. 1292 // Regions changing widths can force us to relayout our children.
1272 if (logicalWidthChangedInRegions()) 1293 if (logicalWidthChangedInRegions())
1273 relayoutChildren = true; 1294 relayoutChildren = true;
1274
1275 // Set our start and end regions. No regions above or below us will be c onsidered by our children. They are
1276 // effectively clamped to our region range.
1277 LayoutUnit oldHeight = logicalHeight();
1278 LayoutUnit oldLogicalTop = logicalTop();
1279 setLogicalHeight(numeric_limits<LayoutUnit>::max() / 2);
1280 computeLogicalHeight();
1281 enclosingRenderFlowThread()->setRegionRangeForBox(this, offsetFromLogica lTopOfFirstPage());
1282 setLogicalHeight(oldHeight);
1283 setLogicalTop(oldLogicalTop);
1284 } 1295 }
1296 computeInitialRegionRangeForBlock();
1285 1297
1286 // We use four values, maxTopPos, maxTopNeg, maxBottomPos, and maxBottomNeg, to track 1298 // We use four values, maxTopPos, maxTopNeg, maxBottomPos, and maxBottomNeg, to track
1287 // our current maximal positive and negative margins. These values are used when we 1299 // our current maximal positive and negative margins. These values are used when we
1288 // are collapsed with adjacent blocks, so for example, if you have block A a nd B 1300 // are collapsed with adjacent blocks, so for example, if you have block A a nd B
1289 // collapsing together, then you'd take the maximal positive margin from bot h A and B 1301 // collapsing together, then you'd take the maximal positive margin from bot h A and B
1290 // and subtract it from the maximal negative margin from both A and B to get the 1302 // and subtract it from the maximal negative margin from both A and B to get the
1291 // true collapsed margin. This algorithm is recursive, so when we finish la yout() 1303 // true collapsed margin. This algorithm is recursive, so when we finish la yout()
1292 // our block knows its current maximal positive/negative values. 1304 // our block knows its current maximal positive/negative values.
1293 // 1305 //
1294 // Start out by setting our margin values to our current margins. Table cel ls have 1306 // Start out by setting our margin values to our current margins. Table cel ls have
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
1352 } 1364 }
1353 } 1365 }
1354 } 1366 }
1355 } 1367 }
1356 1368
1357 if (previousHeight != newHeight) 1369 if (previousHeight != newHeight)
1358 relayoutChildren = true; 1370 relayoutChildren = true;
1359 1371
1360 bool needAnotherLayoutPass = layoutPositionedObjects(relayoutChildren || isR oot()); 1372 bool needAnotherLayoutPass = layoutPositionedObjects(relayoutChildren || isR oot());
1361 1373
1362 if (inRenderFlowThread()) 1374 computeRegionRangeForBlock();
1363 enclosingRenderFlowThread()->setRegionRangeForBox(this, offsetFromLogica lTopOfFirstPage());
1364 1375
1365 // Add overflow from children (unless we're multi-column, since in that case all our child overflow is clipped anyway). 1376 // Add overflow from children (unless we're multi-column, since in that case all our child overflow is clipped anyway).
1366 computeOverflow(oldClientAfterEdge); 1377 computeOverflow(oldClientAfterEdge);
1367 1378
1368 statePusher.pop(); 1379 statePusher.pop();
1369 1380
1370 if (renderView->layoutState()->m_pageLogicalHeight) 1381 if (renderView->layoutState()->m_pageLogicalHeight)
1371 setPageLogicalOffset(renderView->layoutState()->pageLogicalOffset(logica lTop())); 1382 setPageLogicalOffset(renderView->layoutState()->pageLogicalOffset(logica lTop()));
1372 1383
1373 updateLayerTransform(); 1384 updateLayerTransform();
(...skipping 5708 matching lines...) Expand 10 before | Expand all | Expand 10 after
7082 } 7093 }
7083 7094
7084 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl oatingObject* floatingObject) 7095 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl oatingObject* floatingObject)
7085 { 7096 {
7086 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x( ), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY()); 7097 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->x( ), floatingObject->y(), floatingObject->maxX(), floatingObject->maxY());
7087 } 7098 }
7088 7099
7089 #endif 7100 #endif
7090 7101
7091 } // namespace WebCore 7102 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/WebCore/rendering/RenderBlock.h ('k') | Source/WebCore/rendering/RenderDeprecatedFlexibleBox.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698