Title: [182785] releases/WebKitGTK/webkit-2.8
- Revision
- 182785
- Author
- carlo...@webkit.org
- Date
- 2015-04-14 01:37:03 -0700 (Tue, 14 Apr 2015)
Log Message
Merge r182743 - Fixed position element is truncated if moved onscreen by a transform
https://bugs.webkit.org/show_bug.cgi?id=143655
Source/WebCore:
rdar://problem/15020044
Reviewed by Darin Adler.
Our "don't do layout if transform changes" code was too aggressive.
If an element changes between having a transform and not having one, we
really need to do a layout since so much else depends on transforms. In
this particular case, we clip position:fixed elements to the viewport if
they are not transformed, and were failing to re-evaluate this when a
transform was added. Doing a layout fixes this.
Test: compositing/geometry/fixed-transformed.html
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeRequiresLayout):
* rendering/style/StyleTransformData.h:
(WebCore::StyleTransformData::hasTransform):
LayoutTests:
Reviewed by Darin Adler.
Test that moves a position:fixed element on-screen using a transform.
* compositing/geometry/fixed-transformed.html: Added.
Modified Paths
Added Paths
Diff
Modified: releases/WebKitGTK/webkit-2.8/LayoutTests/ChangeLog (182784 => 182785)
--- releases/WebKitGTK/webkit-2.8/LayoutTests/ChangeLog 2015-04-14 08:27:45 UTC (rev 182784)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/ChangeLog 2015-04-14 08:37:03 UTC (rev 182785)
@@ -1,3 +1,14 @@
+2015-04-13 Simon Fraser <simon.fra...@apple.com>
+
+ Fixed position element is truncated if moved onscreen by a transform
+ https://bugs.webkit.org/show_bug.cgi?id=143655
+
+ Reviewed by Darin Adler.
+
+ Test that moves a position:fixed element on-screen using a transform.
+
+ * compositing/geometry/fixed-transformed.html: Added.
+
2015-04-12 Simon Fraser <simon.fra...@apple.com>
Selects don't scroll at some aspect ratios
Added: releases/WebKitGTK/webkit-2.8/LayoutTests/compositing/geometry/fixed-transformed.html (0 => 182785)
--- releases/WebKitGTK/webkit-2.8/LayoutTests/compositing/geometry/fixed-transformed.html (rev 0)
+++ releases/WebKitGTK/webkit-2.8/LayoutTests/compositing/geometry/fixed-transformed.html 2015-04-14 08:37:03 UTC (rev 182785)
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <style>
+ #slider {
+ position: fixed;
+ top: 100px;
+ left: -100px;
+ width: 200px;
+ height: 100px;
+ background-color: blue;
+ border: 10px solid gray;
+ }
+ #slider.out {
+ -webkit-transform: translateX(100px);
+ }
+ </style>
+ <script>
+ if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+ }
+ window.addEventListener('load', function() {
+ window.setTimeout(function() {
+ document.getElementById('slider').classList.add('out');
+ if (window.testRunner) {
+ document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document);
+ testRunner.notifyDone();
+ }
+ }, 0);
+ }, false);
+
+ </script>
+</head>
+<body>
+<div id="slider"></div>
+<pre id="layertree"></pre>
+</body>
+</html>
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog (182784 => 182785)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog 2015-04-14 08:27:45 UTC (rev 182784)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/ChangeLog 2015-04-14 08:37:03 UTC (rev 182785)
@@ -1,3 +1,25 @@
+2015-04-13 Simon Fraser <simon.fra...@apple.com>
+
+ Fixed position element is truncated if moved onscreen by a transform
+ https://bugs.webkit.org/show_bug.cgi?id=143655
+ rdar://problem/15020044
+
+ Reviewed by Darin Adler.
+
+ Our "don't do layout if transform changes" code was too aggressive.
+ If an element changes between having a transform and not having one, we
+ really need to do a layout since so much else depends on transforms. In
+ this particular case, we clip position:fixed elements to the viewport if
+ they are not transformed, and were failing to re-evaluate this when a
+ transform was added. Doing a layout fixes this.
+
+ Test: compositing/geometry/fixed-transformed.html
+
+ * rendering/style/RenderStyle.cpp:
+ (WebCore::RenderStyle::changeRequiresLayout):
+ * rendering/style/StyleTransformData.h:
+ (WebCore::StyleTransformData::hasTransform):
+
2015-04-13 Darin Adler <da...@apple.com>
Remove needless recreation of URL in NavigationScheduler::scheduleLocationChange
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/style/RenderStyle.cpp (182784 => 182785)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/style/RenderStyle.cpp 2015-04-14 08:27:45 UTC (rev 182784)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/style/RenderStyle.cpp 2015-04-14 08:37:03 UTC (rev 182785)
@@ -474,10 +474,13 @@
&& *rareNonInheritedData->m_multiCol.get() != *other.rareNonInheritedData->m_multiCol.get())
return true;
- if (rareNonInheritedData->m_transform.get() != other.rareNonInheritedData->m_transform.get()
- && *rareNonInheritedData->m_transform.get() != *other.rareNonInheritedData->m_transform.get()) {
- changedContextSensitiveProperties |= ContextSensitivePropertyTransform;
- // Don't return; keep looking for another change
+ if (rareNonInheritedData->m_transform != other.rareNonInheritedData->m_transform) {
+ if (rareNonInheritedData->m_transform->hasTransform() != other.rareNonInheritedData->m_transform->hasTransform())
+ return true;
+ if (*rareNonInheritedData->m_transform != *other.rareNonInheritedData->m_transform) {
+ changedContextSensitiveProperties |= ContextSensitivePropertyTransform;
+ // Don't return; keep looking for another change
+ }
}
#if ENABLE(CSS_GRID_LAYOUT)
Modified: releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/style/StyleTransformData.h (182784 => 182785)
--- releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/style/StyleTransformData.h 2015-04-14 08:27:45 UTC (rev 182784)
+++ releases/WebKitGTK/webkit-2.8/Source/WebCore/rendering/style/StyleTransformData.h 2015-04-14 08:37:03 UTC (rev 182785)
@@ -42,6 +42,8 @@
{
return !(*this == o);
}
+
+ bool hasTransform() const { return m_operations.size(); }
TransformOperations m_operations;
Length m_x;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes