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

Unified Diff: Source/core/rendering/RenderBlock.cpp

Issue 802813003: Skip PositionedMovementLayout when descendants depend on element's height (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Updated Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/RenderBlock.cpp
diff --git a/Source/core/rendering/RenderBlock.cpp b/Source/core/rendering/RenderBlock.cpp
index bd49f4ad3547517a216814008da89d5912a61957..792d6442ccb5c40f75cc6eea8529fb1de1a6946a 100644
--- a/Source/core/rendering/RenderBlock.cpp
+++ b/Source/core/rendering/RenderBlock.cpp
@@ -3878,6 +3878,28 @@ bool RenderBlock::recalcOverflowAfterStyleChange()
return !hasOverflowClip();
}
+// Called when a positioned object moves but doesn't necessarily change size. A simplified layout is attempted
+// that just updates the object's position. If the size does change, the object remains dirty.
+bool RenderBlock::tryLayoutDoingPositionedMovementOnly()
Julien - ping for review 2015/01/06 14:35:09 I can understand why only blocks use this function
rhogan 2015/01/06 21:43:45 The other reason I moved it is that hasPercentageH
Julien - ping for review 2015/01/07 09:41:39 I think we have no other option then as hasPercent
+{
+ LayoutUnit oldWidth = logicalWidth();
+ LogicalExtentComputedValues computedValues;
+ logicalExtentAfterUpdatingLogicalWidth(logicalTop(), computedValues);
+ // If we shrink to fit our width may have changed, so we still need full layout.
+ if (oldWidth != computedValues.m_extent)
+ return false;
+ setLogicalWidth(computedValues.m_extent);
+ setLogicalLeft(computedValues.m_position);
+ setMarginStart(computedValues.m_margins.m_start);
+ setMarginEnd(computedValues.m_margins.m_end);
+
+ LayoutUnit oldHeight = logicalHeight();
+ updateLogicalHeight();
+ if (hasPercentHeightDescendants() && oldHeight != logicalHeight())
Julien - ping for review 2015/01/06 14:35:09 The percentage height descendant map is filled dur
+ return false;
+ return true;
Julien - ping for review 2015/01/06 14:35:09 The past 3 lines can be combined into a single lin
+}
+
#if ENABLE(ASSERT)
void RenderBlock::checkPositionedObjectsNeedLayout()
{

Powered by Google App Engine
This is Rietveld 408576698