LayoutSVGRoot::mapToVisibleRectInAncestorSpace() should not apply viewport clip on its own rect |
||||
Issue descriptionWhen a SVGRoot itself is being invalidated, it should not apply viewport clip on its own rect. In mapToVisibleRectInAncestorSpace(), we should apply container clip and scroll offset in children's mapToVisibleRectInAncestorSpace() instead of the container's. See LayoutBox::mapToVisibleRectInAncestorSpace().
,
Mar 25 2016
Is it hard to fix?
,
Mar 25 2016
Not hard for fixing issue itself. Discussed with trchen@ and he had an idea to separate mapToVisibleRectInAncestorSpace() (and other mapping functions) into two parts: 1. map from object local space (e.g. border box space) to container's contents space (e.g. scrolling box space); 2. map from contents space to local space. Currently 2 for the container is called in child's mapToVisibleRectInAncestorSpace(), but with some exceptions which are wrong (e.g. LayoutSVGRoot). This requires the each child having its own way to do 1 to also know how to do 2 for the container. It would be clearer and less error-prone if we separate 2 into a method of the container objects. Trchen@ might work on this after my paint invalidation CLs are landed. However, will GeometryMapper cover such things?
,
Mar 25 2016
GeometryMapper does not cover this. GeometryMapper requires inputs (and outputs) that are in a well-defined property tree state, which means the space that SPv2 paintOffset is relative to: the space of the containing transform node.
,
Mar 30 2016
My current work will cover this bug.
,
Apr 5 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/afa2305acd724e42643af1fcf0a9807be4f3df99 commit afa2305acd724e42643af1fcf0a9807be4f3df99 Author: wangxianzhu <wangxianzhu@chromium.org> Date: Tue Apr 05 00:37:03 2016 Don't apply svg viewport clip when mapping a LayoutSVGRoot's own rect BUG= 597813 Review URL: https://codereview.chromium.org/1852183002 Cr-Commit-Position: refs/heads/master@{#385064} [modify] https://crrev.com/afa2305acd724e42643af1fcf0a9807be4f3df99/third_party/WebKit/Source/core/core.gypi [modify] https://crrev.com/afa2305acd724e42643af1fcf0a9807be4f3df99/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp [modify] https://crrev.com/afa2305acd724e42643af1fcf0a9807be4f3df99/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp [modify] https://crrev.com/afa2305acd724e42643af1fcf0a9807be4f3df99/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.h [add] https://crrev.com/afa2305acd724e42643af1fcf0a9807be4f3df99/third_party/WebKit/Source/core/layout/svg/LayoutSVGRootTest.cpp [modify] https://crrev.com/afa2305acd724e42643af1fcf0a9807be4f3df99/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.cpp [modify] https://crrev.com/afa2305acd724e42643af1fcf0a9807be4f3df99/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.h
,
Apr 5 2016
|
||||
►
Sign in to add a comment |
||||
Comment 1 by wangxianzhu@chromium.org
, Mar 25 2016