Reviewed by Darin.
authortomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 13 Aug 2006 01:38:46 +0000 (01:38 +0000)
committertomernic <tomernic@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 13 Aug 2006 01:38:46 +0000 (01:38 +0000)
        <http://bugzilla.opendarwin.org/show_bug.cgi?id=10111> - Menu flickers over Flash content
        <rdar://problem/3052546> Plugins don't work with z-index (overlapping elements, etc.)

        * Plugins/WebBaseNetscapePluginView.m:
        (-[WebBaseNetscapePluginView saveAndSetNewPortStateForUpdate:]):
        Don't just clip to the dirty region for "transparent" plug-ins -- do it for all plug-ins.  This is a
        generally useful thing to do, as it prevents the plug-in from drawing over parts of the window that
        have already been drawn and are not expected to be redrawn in the same update.

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

WebKit/ChangeLog
WebKit/Plugins/WebBaseNetscapePluginView.m

index d989ba31a422ca19567561472d7ce0f976d1335d..4dc166b0135e23b1b34ef0d8181a91b30353def1 100644 (file)
@@ -1,3 +1,16 @@
+2006-08-11  Tim Omernick  <timo@apple.com>
+
+        Reviewed by Darin.
+
+        <http://bugzilla.opendarwin.org/show_bug.cgi?id=10111> - Menu flickers over Flash content
+        <rdar://problem/3052546> Plugins don't work with z-index (overlapping elements, etc.)
+
+        * Plugins/WebBaseNetscapePluginView.m:
+        (-[WebBaseNetscapePluginView saveAndSetNewPortStateForUpdate:]):
+        Don't just clip to the dirty region for "transparent" plug-ins -- do it for all plug-ins.  This is a
+        generally useful thing to do, as it prevents the plug-in from drawing over parts of the window that
+        have already been drawn and are not expected to be redrawn in the same update.
+
 2006-08-11  Brady Eidson  <beidson@apple.com>
 
         Reviewed by John, Timo, Adele, and Darin
index 2c02434c6ac04a4c115d590e6a3c4a8047d877c5..0aad67c02d92f8d36595804ad4c3047d9caa2385 100644 (file)
@@ -365,8 +365,9 @@ static OSStatus TSMEventHandler(EventHandlerCallRef inHandlerRef, EventRef inEve
                 window.clipRect.left + nPort.qdPort.portx, window.clipRect.top + nPort.qdPort.porty,
                 window.clipRect.right + nPort.qdPort.portx, window.clipRect.bottom + nPort.qdPort.porty);
             
-            // Clip to dirty region when updating in "windowless" mode (transparent)
-            if (forUpdate && isTransparent) {
+            // Clip to dirty region so plug-in does not draw over already-drawn regions of the window that are
+            // not going to be redrawn this update.  This forces plug-ins to play nice with z-index ordering.
+            if (forUpdate) {
                 RgnHandle viewClipRegion = NewRgn();
                 
                 // Get list of dirty rects from the opaque ancestor -- WebKit does some tricks with invalidation and