summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderNamedFlowThread.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-08-12 09:27:39 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-08-12 09:27:39 +0200
commit3749d61e1f7a59f5ec5067e560af1eb610c82015 (patch)
tree73dc228333948738bbe02976cacca8cd382bc978 /Source/WebCore/rendering/RenderNamedFlowThread.cpp
parentb32b4dcd9a51ab8de6afc53d9e17f8707e1f7a5e (diff)
downloadqtwebkit-3749d61e1f7a59f5ec5067e560af1eb610c82015.tar.gz
Imported WebKit commit a77350243e054f3460d1137301d8b3faee3d2052 (http://svn.webkit.org/repository/webkit/trunk@125365)
New snapshot with build fixes for latest API changes in Qt and all WK1 Win MSVC fixes upstream
Diffstat (limited to 'Source/WebCore/rendering/RenderNamedFlowThread.cpp')
-rw-r--r--Source/WebCore/rendering/RenderNamedFlowThread.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/Source/WebCore/rendering/RenderNamedFlowThread.cpp b/Source/WebCore/rendering/RenderNamedFlowThread.cpp
index 227af7df5..5b02453e4 100644
--- a/Source/WebCore/rendering/RenderNamedFlowThread.cpp
+++ b/Source/WebCore/rendering/RenderNamedFlowThread.cpp
@@ -36,6 +36,7 @@ namespace WebCore {
RenderNamedFlowThread::RenderNamedFlowThread(Node* node, PassRefPtr<WebKitNamedFlow> namedFlow)
: RenderFlowThread(node)
, m_namedFlow(namedFlow)
+ , m_regionLayoutUpdateEventTimer(this, &RenderNamedFlowThread::regionLayoutUpdateEventTimerFired)
{
m_namedFlow->setRenderer(this);
}
@@ -192,6 +193,10 @@ void RenderNamedFlowThread::removeRegionFromThread(RenderRegion* renderRegion)
return;
}
+ // After removing all the regions in the flow the following layout needs to dispatch the regionLayoutUpdate event
+ if (m_regionList.isEmpty())
+ setDispatchRegionLayoutUpdateEvent(true);
+
invalidateRegions();
}
@@ -301,4 +306,19 @@ void RenderNamedFlowThread::willBeDestroyed()
RenderFlowThread::willBeDestroyed();
}
+void RenderNamedFlowThread::dispatchRegionLayoutUpdateEvent()
+{
+ RenderFlowThread::dispatchRegionLayoutUpdateEvent();
+
+ if (!m_regionLayoutUpdateEventTimer.isActive() && m_namedFlow->hasEventListeners())
+ m_regionLayoutUpdateEventTimer.startOneShot(0);
+}
+
+void RenderNamedFlowThread::regionLayoutUpdateEventTimerFired(Timer<RenderNamedFlowThread>*)
+{
+ ASSERT(m_namedFlow);
+
+ m_namedFlow->dispatchRegionLayoutUpdateEvent();
+}
+
}