diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-09-10 19:10:20 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-09-10 19:10:20 +0200 |
commit | 284837daa07b29d6a63a748544a90b1f5842ac5c (patch) | |
tree | ecd258180bde91fe741e0cfd2638beb3c6da7e8e /Source/WebCore/rendering/FlowThreadController.cpp | |
parent | 2e2ba8ff45915f40ed3e014101269c175f2a89a0 (diff) | |
download | qtwebkit-284837daa07b29d6a63a748544a90b1f5842ac5c.tar.gz |
Imported WebKit commit 68645295d2e3e09af2c942f092556f06aa5f8b0d (http://svn.webkit.org/repository/webkit/trunk@128073)
New snapshot
Diffstat (limited to 'Source/WebCore/rendering/FlowThreadController.cpp')
-rw-r--r-- | Source/WebCore/rendering/FlowThreadController.cpp | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/Source/WebCore/rendering/FlowThreadController.cpp b/Source/WebCore/rendering/FlowThreadController.cpp index 476c924b8..9edd0aa7e 100644 --- a/Source/WebCore/rendering/FlowThreadController.cpp +++ b/Source/WebCore/rendering/FlowThreadController.cpp @@ -31,12 +31,11 @@ #include "FlowThreadController.h" +#include "NamedFlowCollection.h" #include "RenderFlowThread.h" -#include "RenderFlowThreadContainer.h" #include "RenderNamedFlowThread.h" #include "StyleInheritedData.h" #include "WebKitNamedFlow.h" -#include "WebKitNamedFlowCollection.h" #include <wtf/text/AtomicString.h> namespace WebCore { @@ -49,7 +48,6 @@ PassOwnPtr<FlowThreadController> FlowThreadController::create(RenderView* view) FlowThreadController::FlowThreadController(RenderView* view) : m_view(view) , m_currentRenderFlowThread(0) - , m_flowThreadContainer(0) , m_isRenderNamedFlowThreadOrderDirty(false) { } @@ -60,11 +58,6 @@ FlowThreadController::~FlowThreadController() RenderNamedFlowThread* FlowThreadController::ensureRenderFlowThreadWithName(const AtomicString& name) { - if (!m_flowThreadContainer) { - m_flowThreadContainer = new (m_view->renderArena()) RenderFlowThreadContainer(m_view->document()); - m_flowThreadContainer->setStyle(RenderFlowThread::createFlowThreadStyle(m_view->style())); - m_view->addChild(m_flowThreadContainer); - } if (!m_renderNamedFlowThreadList) m_renderNamedFlowThreadList = adoptPtr(new RenderNamedFlowThreadList()); else { @@ -75,7 +68,7 @@ RenderNamedFlowThread* FlowThreadController::ensureRenderFlowThreadWithName(cons } } - WebKitNamedFlowCollection* namedFlows = m_view->document()->namedFlows(); + NamedFlowCollection* namedFlows = m_view->document()->namedFlows(); // Sanity check for the absence of a named flow in the "CREATED" state with the same name. ASSERT(!namedFlows->flowByName(name)); @@ -84,8 +77,8 @@ RenderNamedFlowThread* FlowThreadController::ensureRenderFlowThreadWithName(cons flowRenderer->setStyle(RenderFlowThread::createFlowThreadStyle(m_view->style())); m_renderNamedFlowThreadList->add(flowRenderer); - // Keep the flow renderer as a child of RenderFlowThreadContainer. - m_flowThreadContainer->addChild(flowRenderer); + // Keep the flow renderer as a child of RenderView. + m_view->addChild(flowRenderer); setIsRenderNamedFlowThreadOrderDirty(true); @@ -105,6 +98,23 @@ void FlowThreadController::layoutRenderNamedFlowThreads() { ASSERT(m_renderNamedFlowThreadList); + // Remove the left-over flow threads. + RenderNamedFlowThreadList toRemoveList; + for (RenderNamedFlowThreadList::iterator iter = m_renderNamedFlowThreadList->begin(); iter != m_renderNamedFlowThreadList->end(); ++iter) { + RenderNamedFlowThread* flowRenderer = *iter; + if (flowRenderer->isMarkedForDestruction()) + toRemoveList.add(flowRenderer); + } + + if (toRemoveList.size() > 0) + setIsRenderNamedFlowThreadOrderDirty(true); + + for (RenderNamedFlowThreadList::iterator iter = toRemoveList.begin(); iter != toRemoveList.end(); ++iter) { + RenderNamedFlowThread* flowRenderer = *iter; + m_renderNamedFlowThreadList->remove(flowRenderer); + flowRenderer->destroy(); + } + if (isRenderNamedFlowThreadOrderDirty()) { // Arrange the thread list according to dependencies. RenderNamedFlowThreadList sortedList; @@ -146,10 +156,4 @@ void FlowThreadController::unregisterNamedFlowContentNode(Node* contentNode) m_mapNamedFlowContentNodes.remove(contentNode); } -void FlowThreadController::removeFlowThread(RenderNamedFlowThread* flowThread) -{ - m_renderNamedFlowThreadList->remove(flowThread); - setIsRenderNamedFlowThreadOrderDirty(true); -} - } // namespace WebCore |