diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-16 14:51:15 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-16 14:51:15 +0200 |
commit | 4e6b3a206fa4ad8bb0b664f7674c9a70376d6e26 (patch) | |
tree | 7bb9ad7e31c24d1cf1707e03e6f1a80f6d033951 /Source/WebCore/rendering/RenderNamedFlowThread.cpp | |
parent | 3977e3d2f72f7fe2c887c1ec0e0c342e1d169f42 (diff) | |
download | qtwebkit-4e6b3a206fa4ad8bb0b664f7674c9a70376d6e26.tar.gz |
Imported WebKit commit 953baa67aa07087b6ecd4199351ec554c724e27d (http://svn.webkit.org/repository/webkit/trunk@122676)
Diffstat (limited to 'Source/WebCore/rendering/RenderNamedFlowThread.cpp')
-rw-r--r-- | Source/WebCore/rendering/RenderNamedFlowThread.cpp | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/Source/WebCore/rendering/RenderNamedFlowThread.cpp b/Source/WebCore/rendering/RenderNamedFlowThread.cpp index 088b87248..227af7df5 100644 --- a/Source/WebCore/rendering/RenderNamedFlowThread.cpp +++ b/Source/WebCore/rendering/RenderNamedFlowThread.cpp @@ -33,10 +33,16 @@ namespace WebCore { -RenderNamedFlowThread::RenderNamedFlowThread(Node* node, const AtomicString& name) +RenderNamedFlowThread::RenderNamedFlowThread(Node* node, PassRefPtr<WebKitNamedFlow> namedFlow) : RenderFlowThread(node) - , m_flowThreadName(name) + , m_namedFlow(namedFlow) { + m_namedFlow->setRenderer(this); +} + +RenderNamedFlowThread::~RenderNamedFlowThread() +{ + m_namedFlow->setRenderer(0); } const char* RenderNamedFlowThread::renderName() const @@ -44,7 +50,6 @@ const char* RenderNamedFlowThread::renderName() const return "RenderNamedFlowThread"; } - RenderObject* RenderNamedFlowThread::nextRendererForNode(Node* node) const { FlowThreadChildList::const_iterator it = m_flowThreadChildList.begin(); @@ -182,10 +187,14 @@ void RenderNamedFlowThread::removeRegionFromThread(RenderRegion* renderRegion) removeDependencyOnFlowThread(renderRegion->parentNamedFlowThread()); } + if (canBeDestroyed()) { + destroy(); + return; + } + invalidateRegions(); } - void RenderNamedFlowThread::checkInvalidRegions() { for (RenderRegionList::iterator iter = m_regionList.begin(); iter != m_regionList.end(); ++iter) { @@ -245,14 +254,6 @@ void RenderNamedFlowThread::pushDependencies(RenderNamedFlowThreadList& list) } } -WebKitNamedFlow* RenderNamedFlowThread::ensureNamedFlow() -{ - if (!m_namedFlow) - m_namedFlow = WebKitNamedFlow::create(this); - - return m_namedFlow.get(); -} - // The content nodes list contains those nodes with -webkit-flow-into: flow. // An element with display:none should also be listed among those nodes. // The list of nodes is ordered. @@ -283,6 +284,21 @@ void RenderNamedFlowThread::unregisterNamedFlowContentNode(Node* contentNode) contentNode->clearInNamedFlow(); m_contentNodes.remove(contentNode); + if (canBeDestroyed()) + destroy(); +} + +const AtomicString& RenderNamedFlowThread::flowThreadName() const +{ + return m_namedFlow->name(); +} + +void RenderNamedFlowThread::willBeDestroyed() +{ + if (!documentBeingDestroyed()) + view()->flowThreadController()->removeFlowThread(this); + + RenderFlowThread::willBeDestroyed(); } } |