Changeset 122130 in webkit
- Timestamp:
- Jul 9, 2012 12:16:12 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 10 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r122127 r122130 1 2012-07-09 Alexandru Chiculita <achicu@adobe.com> 2 3 [CSS Filters] Blur filter is not repainted correctly when applied on a parent of a fixed element 4 https://bugs.webkit.org/show_bug.cgi?id=90087 5 6 Reviewed by Simon Fraser. 7 8 Added two new tests to check that we disable fast path scrolling for fixed positioned 9 elements that have blur applied on them or any of the parent layers. 10 11 * css3/filters/blur-filter-page-scroll-parents.html: Added. 12 * css3/filters/blur-filter-page-scroll-self.html: Added. 13 * platform/chromium/css3/filters/blur-filter-page-scroll-parents-expected.png: Added. 14 * platform/chromium/css3/filters/blur-filter-page-scroll-parents-expected.txt: Added. 15 * platform/chromium/css3/filters/blur-filter-page-scroll-self-expected.png: Added. 16 * platform/chromium/css3/filters/blur-filter-page-scroll-self-expected.txt: Added. 17 * platform/mac/css3/filters/blur-filter-page-scroll-parents-expected.png: Added. 18 * platform/mac/css3/filters/blur-filter-page-scroll-parents-expected.txt: Added. 19 * platform/mac/css3/filters/blur-filter-page-scroll-self-expected.png: Added. 20 * platform/mac/css3/filters/blur-filter-page-scroll-self-expected.txt: Added. 21 * platform/qt/Skipped: Qt needs platform results. 22 1 23 2012-07-09 Joshua Bell <jsbell@chromium.org> 2 24 -
trunk/LayoutTests/platform/qt/Skipped
r122095 r122130 2162 2162 css3/filters/composited-during-transition-layertree.html 2163 2163 css3/filters/composited-during-animation.html 2164 css3/filters/blur-filter-page-scroll.html 2165 css3/filters/blur-filter-page-scroll-self.html 2166 css3/filters/blur-filter-page-scroll-parents.html 2164 2167 svg/foreignObject/fO-display-none-with-relative-pos-content.svg 2165 2168 svg/foreignObject/fO-display-none.svg -
trunk/Source/WebCore/ChangeLog
r122127 r122130 1 2012-07-09 Alexandru Chiculita <achicu@adobe.com> 2 3 [CSS Filters] Blur filter is not repainted correctly when applied on a parent of a fixed element 4 https://bugs.webkit.org/show_bug.cgi?id=90087 5 6 Reviewed by Simon Fraser. 7 8 Added a new method, RenderLayer::hasAncestorWithFilterOutsets, to check that there's no filter with outsets (ie. blur) 9 applied on top level fixed positioned elements, nor any of its parent layers. In the event of a blur filter we need to 10 disable the fast scrolling optimization, otherwise the outsets of the filter will be carried around the page and 11 repainting will not work correctly. 12 13 Tests: css3/filters/blur-filter-page-scroll-parents.html 14 css3/filters/blur-filter-page-scroll-self.html 15 16 * page/FrameView.cpp: 17 (WebCore::FrameView::scrollContentsFastPath): 18 * rendering/RenderLayer.cpp: 19 (WebCore): 20 (WebCore::RenderLayer::hasAncestorWithFilterOutsets): 21 * rendering/RenderLayer.h: 22 (RenderLayer): 23 1 24 2012-07-09 Joshua Bell <jsbell@chromium.org> 2 25 -
trunk/Source/WebCore/page/FrameView.cpp
r121920 r122130 1478 1478 1479 1479 #if ENABLE(CSS_FILTERS) 1480 if (layer->parent()) { 1481 RenderBoxModelObject* renderer = layer->parent()->renderer(); 1482 if (renderer->style()->hasFilterOutsets()) { 1483 // If the fixed layer has a blur/drop-shadow filter applied on its parent, we cannot 1484 // scroll using the fast path, otherwise the outsets of the filter will be moved around the page. 1485 return false; 1486 } 1480 if (layer->hasAncestorWithFilterOutsets()) { 1481 // If the fixed layer has a blur/drop-shadow filter applied on at least one of its parents, we cannot 1482 // scroll using the fast path, otherwise the outsets of the filter will be moved around the page. 1483 return false; 1487 1484 } 1488 1485 #endif -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r121926 r122130 1089 1089 ASSERT_NOT_REACHED(); 1090 1090 } 1091 1092 bool RenderLayer::hasAncestorWithFilterOutsets() const 1093 { 1094 for (const RenderLayer* curr = this; curr; curr = curr->parent()) { 1095 RenderBoxModelObject* renderer = curr->renderer(); 1096 if (renderer->style()->hasFilterOutsets()) 1097 return true; 1098 } 1099 return false; 1100 } 1091 1101 #endif 1092 1102 -
trunk/Source/WebCore/rendering/RenderLayer.h
r121124 r122130 472 472 RenderLayer* enclosingFilterRepaintLayer() const; 473 473 void setFilterBackendNeedsRepaintingInRect(const LayoutRect&, bool immediate); 474 bool hasAncestorWithFilterOutsets() const; 474 475 #endif 475 476
Note: See TracChangeset
for help on using the changeset viewer.