Fixed background is scrolling in http://www.nieuwecode.nl/ in Qt webkit2
authoryael.aharon@nokia.com <yael.aharon@nokia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Apr 2012 23:43:46 +0000 (23:43 +0000)
committeryael.aharon@nokia.com <yael.aharon@nokia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 24 Apr 2012 23:43:46 +0000 (23:43 +0000)
https://bugs.webkit.org/show_bug.cgi?id=83980

Reviewed by Simon Fraser.

.:

* ManualTests/fixed-position-no-z-index.html: Added.

Source/WebCore:

When a fixed position element does not have z-index explicitly specified, it does not create a
stacking context. This results in fixed elements scrolling with the content layer.
This patch creates a stacking context for fixed positioned elements for the Qt port, by enabling
the flag ENABLE_FIXED_POSITION_CREATES_STACKING_CONTEXT.
Added a manual test because this patch takes effect only during scrolling.

* css/CSSStyleSelector.cpp:
(WebCore::CSSStyleSelector::collectMatchingRulesForList):

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

ChangeLog
ManualTests/fixed-position-no-z-index.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/css/CSSStyleSelector.cpp

index 4e47253430f5a95926ab46505f05970d4f2a172a..c7d8e77bd7bfd756212a7fec584dc604bfef4ce0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2012-04-24  Yael Aharon  <yael.aharon@nokia.com>
+
+        Fixed background is scrolling in http://www.nieuwecode.nl/ in Qt webkit2
+        https://bugs.webkit.org/show_bug.cgi?id=83980
+
+        Reviewed by Simon Fraser.
+
+        * ManualTests/fixed-position-no-z-index.html: Added.
+
 2012-04-24  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         [GTK] Build and run TestWebKitAPI unit tests
diff --git a/ManualTests/fixed-position-no-z-index.html b/ManualTests/fixed-position-no-z-index.html
new file mode 100644 (file)
index 0000000..4c0b715
--- /dev/null
@@ -0,0 +1,25 @@
+<html>
+<head>
+<style>
+.back { z-index: -1; position: absolute; width:1000px; height:1000px;}
+.d1 { position:fixed; top:0; left:0; width:1000px; height:1000px;}
+.d2 { margin: 30px 40% 20px 20%;  position: relative; z-index: 5;}
+body { margin: 0px; }
+</style>
+</head>
+<body>
+<div class="d1"><img class="back" src="resources/simple_image.png">
+</div>
+<div class="d2">
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.<br>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.<br>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.<br>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.<br>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.<br>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.<br>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.<br>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.<br>
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In ornare risus. Aliquam nonummy libero et risus. Vestibulum sit amet massa nec mauris interdum luctus. Nam ut dolor ut nunc malesuada varius. Duis risus. Mauris vel nulla ut odio porta vestibulum. Mauris ac sapien. In a dolor at urna malesuada suscipit. Aenean nisl erat, nonummy quis, blandit in, sagittis et, ligula. Maecenas consequat. Donec nonummy rutrum nibh. Praesent tincidunt cursus mi. Donec adipiscing. Nulla at ipsum. Aenean fermentum.<br>
+
+</div>
+</body></html>
index e074c91cd2c05115b1ece832b00ced6e8655c064..cd24407a9684d0bf900815554cb1768ae06bb7e9 100644 (file)
@@ -1,3 +1,19 @@
+2012-04-24  Yael Aharon  <yael.aharon@nokia.com>
+
+        Fixed background is scrolling in http://www.nieuwecode.nl/ in Qt webkit2
+        https://bugs.webkit.org/show_bug.cgi?id=83980
+
+        Reviewed by Simon Fraser.
+
+        When a fixed position element does not have z-index explicitly specified, it does not create a
+        stacking context. This results in fixed elements scrolling with the content layer.
+        This patch creates a stacking context for fixed positioned elements for the Qt port, by enabling
+        the flag ENABLE_FIXED_POSITION_CREATES_STACKING_CONTEXT.
+        Added a manual test because this patch takes effect only during scrolling.
+
+        * css/CSSStyleSelector.cpp:
+        (WebCore::CSSStyleSelector::collectMatchingRulesForList):
+
 2012-04-24  Andreas Kling  <kling@webkit.org>
 
         REGRESSION(r115099): html5lib/runner.html crashes.
index 1ae051bd245cc2989f3df92784a794272dbdb253..16f68ffac476b0eed04af7edca166c86d788ffa6 100644 (file)
 #include "StyleCachedImageSet.h"
 #endif
 
+#if PLATFORM(QT)
+#define FIXED_POSITION_CREATES_STACKING_CONTEXT 1
+#endif
+
 using namespace std;
 
 namespace WebCore {
@@ -2007,6 +2011,9 @@ void StyleResolver::adjustRenderStyle(RenderStyle* style, RenderStyle* parentSty
     // object wedged in between them.  Auto z-index also becomes 0 for objects that specify transforms/masks/reflections.
     if (style->hasAutoZIndex() && ((e && e->document()->documentElement() == e) || style->opacity() < 1.0f
         || style->hasTransformRelatedProperty() || style->hasMask() || style->boxReflect() || style->hasFilter()
+#ifdef FIXED_POSITION_CREATES_STACKING_CONTEXT
+        || style->position() == FixedPosition
+#endif
 #if ENABLE(OVERFLOW_SCROLLING)
         // Touch overflow scrolling creates a stacking context.
         || style->useTouchOverflowScrolling()