summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderRegion.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-09-18 15:53:33 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-09-18 15:53:33 +0200
commit6bbb7fbbac94d0f511a7bd0cbd50854ab643bfb2 (patch)
treed9c68d1cca0b3e352f1e438561f3e504e641a08f /Source/WebCore/rendering/RenderRegion.cpp
parentd0424a769059c84ae20beb3c217812792ea6726b (diff)
downloadqtwebkit-6bbb7fbbac94d0f511a7bd0cbd50854ab643bfb2.tar.gz
Imported WebKit commit c7503cef7ecb236730d1309676ab9fc723fd061d (http://svn.webkit.org/repository/webkit/trunk@128886)
New snapshot with various build fixes
Diffstat (limited to 'Source/WebCore/rendering/RenderRegion.cpp')
-rw-r--r--Source/WebCore/rendering/RenderRegion.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/Source/WebCore/rendering/RenderRegion.cpp b/Source/WebCore/rendering/RenderRegion.cpp
index 2b7e4252a..8a7487d7c 100644
--- a/Source/WebCore/rendering/RenderRegion.cpp
+++ b/Source/WebCore/rendering/RenderRegion.cpp
@@ -49,6 +49,7 @@ RenderRegion::RenderRegion(Node* node, RenderFlowThread* flowThread)
, m_parentNamedFlowThread(0)
, m_isValid(false)
, m_hasCustomRegionStyle(false)
+ , m_hasAutoLogicalHeight(false)
, m_regionState(RegionUndefined)
{
}
@@ -172,6 +173,23 @@ void RenderRegion::checkRegionStyle()
m_flowThread->checkRegionsWithStyling();
}
+void RenderRegion::updateRegionHasAutoLogicalHeightFlag()
+{
+ ASSERT(m_flowThread);
+
+ if (!isValid())
+ return;
+
+ bool didHaveAutoLogicalHeight = m_hasAutoLogicalHeight;
+ m_hasAutoLogicalHeight = shouldHaveAutoLogicalHeight();
+ if (m_hasAutoLogicalHeight != didHaveAutoLogicalHeight) {
+ if (m_hasAutoLogicalHeight)
+ view()->flowThreadController()->incrementAutoLogicalHeightRegions();
+ else
+ view()->flowThreadController()->decrementAutoLogicalHeightRegions();
+ }
+}
+
void RenderRegion::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
{
RenderReplaced::styleDidChange(diff, oldStyle);
@@ -185,6 +203,7 @@ void RenderRegion::styleDidChange(StyleDifference diff, const RenderStyle* oldSt
}
checkRegionStyle();
+ updateRegionHasAutoLogicalHeightFlag();
}
void RenderRegion::layout()
@@ -282,12 +301,24 @@ void RenderRegion::attachRegion()
// The region just got attached to the flow thread, lets check whether
// it has region styling rules associated.
checkRegionStyle();
+
+ if (!isValid())
+ return;
+
+ m_hasAutoLogicalHeight = shouldHaveAutoLogicalHeight();
+ if (hasAutoLogicalHeight())
+ view()->flowThreadController()->incrementAutoLogicalHeightRegions();
}
void RenderRegion::detachRegion()
{
- if (m_flowThread)
+ if (m_flowThread) {
m_flowThread->removeRegionFromThread(this);
+ if (hasAutoLogicalHeight()) {
+ ASSERT(isValid());
+ view()->flowThreadController()->decrementAutoLogicalHeightRegions();
+ }
+ }
m_flowThread = 0;
}