rendered paste bodydiff --git a/WebCore/page/Frame.cpp b/WebCore/page/Frame.cpp
index e1b78af..55d31a4 100644
--- a/WebCore/page/Frame.cpp
+++ b/WebCore/page/Frame.cpp
@@ -1594,6 +1594,12 @@ void Frame::pageDestroyed()
void Frame::disconnectOwnerElement()
{
if (m_ownerElement) {
+#if PLATFORM(QT)
+ if (view() && view()->parent()) {
+ int count = view()->preventBlittingCount();
+ view()->parent()->decrementPreventBlittingCount(count);
+ }
+#endif
if (Document* doc = document())
doc->clearAXObjectCache();
m_ownerElement->m_contentFrame = 0;
diff --git a/WebCore/platform/ScrollView.h b/WebCore/platform/ScrollView.h
index 782c544..a602a9e 100644
--- a/WebCore/platform/ScrollView.h
+++ b/WebCore/platform/ScrollView.h
@@ -295,6 +295,10 @@ private:
#endif
#if PLATFORM(QT)
+public:
+ int preventBlittingCount() const;
+ void incrementPreventBlittingCount(int);
+ void decrementPreventBlittingCount(int);
private:
bool rootPreventsBlitting() const { return root()->m_widgetsThatPreventBlitting > 0; }
unsigned m_widgetsThatPreventBlitting;
diff --git a/WebCore/platform/qt/ScrollViewQt.cpp b/WebCore/platform/qt/ScrollViewQt.cpp
index 76d9f01..caec0b8 100644
--- a/WebCore/platform/qt/ScrollViewQt.cpp
+++ b/WebCore/platform/qt/ScrollViewQt.cpp
@@ -43,20 +43,39 @@ void ScrollView::platformDestroy()
{
}
-void ScrollView::platformAddChild(Widget* child)
+int ScrollView::preventBlittingCount() const
+{
+ return m_widgetsThatPreventBlitting;
+}
+
+void ScrollView::incrementPreventBlittingCount(int count)
+{
+ m_widgetsThatPreventBlitting += count;
+ // propagate the increment
+ if (parent())
+ parent()->incrementPreventBlittingCount(count);
+}
+
+void ScrollView::decrementPreventBlittingCount(int count)
{
- root()->m_widgetsThatPreventBlitting++;
+ ASSERT(m_widgetsThatPreventBlitting);
+
+ m_widgetsThatPreventBlitting -= count;
+ // propagate the decrement
if (parent())
- parent()->platformAddChild(child);
+ parent()->decrementPreventBlittingCount(count);
+}
+
+void ScrollView::platformAddChild(Widget* child)
+{
+ incrementPreventBlittingCount(1);
}
void ScrollView::platformRemoveChild(Widget* child)
{
- ASSERT(root()->m_widgetsThatPreventBlitting);
- root()->m_widgetsThatPreventBlitting--;
child->hide();
+ decrementPreventBlittingCount(1);
}
}
-
// vim: ts=4 sw=4 et