2011-06-25 Joseph Pecoraro <joepeck@webkit.org>
Reviewed by Simon Fraser.
Inspector highlight rect is wrong for contents of transformed iframes
https://bugs.webkit.org/show_bug.cgi?id=53627
Part 2: Only adjust for the FrameView's scroll position when
the localToAbsolute mapping did not end with fixed content.
Content that is inside of a fixed position container is already
adjusted for the FrameView's scrollPosition when RenderView
maps local to container.
This patch uses a "wasFixed" out parameter to determine if
the localToAbsolute transformation ended inside a fixed block,
and if so does not apply the scroll position.
* page/FrameView.cpp:
(WebCore::FrameView::convertFromRenderer):
Respect wasFixed as described above.
* rendering/RenderBox.h:
* rendering/RenderBox.cpp:
(WebCore::RenderBox::mapLocalToContainer):
This is the only time that "fixed" ever changed. So when
fixed changes, update the optional wasFixed out parameter.
* rendering/RenderObject.cpp:
(WebCore::RenderObject::localToAbsolute):
(WebCore::RenderObject::mapLocalToContainer):
(WebCore::RenderObject::localToContainerQuad):
* rendering/RenderObject.h:
(WebCore::RenderObject::localToAbsoluteQuad):
Ignore wasFixed by default, but pipe it though where needed.
* rendering/RenderView.h:
* rendering/RenderView.cpp:
(WebCore::RenderView::mapLocalToContainer):
This is the final recursive call, so wasFixed goes no
further. We sanity check its value in debug builds.
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::selectionGapRectsForRepaint):
* rendering/RenderInline.cpp:
(WebCore::RenderInline::mapLocalToContainer):
* rendering/RenderInline.h:
* rendering/svg/RenderSVGForeignObject.cpp:
(WebCore::RenderSVGForeignObject::mapLocalToContainer):
* rendering/svg/RenderSVGForeignObject.h:
* rendering/svg/RenderSVGInline.cpp:
(WebCore::RenderSVGInline::mapLocalToContainer):
* rendering/svg/RenderSVGInline.h:
* rendering/svg/RenderSVGModelObject.cpp:
(WebCore::RenderSVGModelObject::mapLocalToContainer):
* rendering/svg/RenderSVGModelObject.h:
* rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::mapLocalToContainer):
* rendering/svg/RenderSVGRoot.h:
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::mapLocalToContainer):
* rendering/svg/RenderSVGText.h:
* rendering/svg/SVGRenderSupport.cpp:
(WebCore::SVGRenderSupport::mapLocalToContainer):
* rendering/svg/SVGRenderSupport.h:
Pipe wasFixed through where needed.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@89754 268f45cc-cd09-0410-ab3c-d52691b4dbfc
22 files changed