summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/FlowThreadController.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-09-10 19:10:20 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-09-10 19:10:20 +0200
commit284837daa07b29d6a63a748544a90b1f5842ac5c (patch)
treeecd258180bde91fe741e0cfd2638beb3c6da7e8e /Source/WebCore/rendering/FlowThreadController.cpp
parent2e2ba8ff45915f40ed3e014101269c175f2a89a0 (diff)
downloadqtwebkit-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.cpp38
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