2009-05-19 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
authorhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 May 2009 15:34:58 +0000 (15:34 +0000)
committerhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 May 2009 15:34:58 +0000 (15:34 +0000)
        Reviewed by Simon Hausmann.

        Fix a plugin bug in the WebKit code, similar to the one in WebCore.

        The problem is when a non visible QtPluginWidget would show it self
        in a sibling frame. The problem was due to our clipping. In Qt,
        if setMask is set with an empty QRegion, no clipping will
        be performed, so in that case we hide the PluginContainer

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@43917 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/qt/ChangeLog
WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp

index ad8ff3e..fadd9c1 100644 (file)
@@ -1,3 +1,17 @@
+2009-05-19  Kenneth Rohde Christiansen  <kenneth.christiansen@openbossa.org>
+
+        Reviewed by Simon Hausmann.
+
+        Fix a plugin bug in the WebKit code, similar to the one in WebCore.
+
+        The problem is when a non visible QtPluginWidget would show it self
+        in a sibling frame. The problem was due to our clipping. In Qt,
+        if setMask is set with an empty QRegion, no clipping will
+        be performed, so in that case we hide the PluginContainer
+
+        * WebCoreSupport/FrameLoaderClientQt.cpp:
+        (WebCore::):
+
 2009-05-18  Zoltan Horvath <horvath.zoltan.6@stud.u-szeged.hu>
 
         Reviewed by Ariya Hidayat.
index 91c845b..8f29523 100644 (file)
@@ -1071,7 +1071,13 @@ public:
         IntRect clipRect(static_cast<FrameView*>(parentScrollView)->windowClipRect());
         clipRect.move(-windowRect.x(), -windowRect.y());
         clipRect.intersect(platformWidget()->rect());
-        platformWidget()->setMask(QRegion(clipRect.x(), clipRect.y(), clipRect.width(), clipRect.height()));
+
+        QRegion clipRegion = QRegion(clipRect);
+        platformWidget()->setMask(clipRegion);
+
+        // if setMask is set with an empty QRegion, no clipping will
+        // be performed, so in that case we hide the platformWidget
+        platformWidget()->setVisible(!clipRegion.isEmpty());
     }
 };