[Webkit-unassigned] [Bug 89384] New: Looks like wrong position of isSVGForeignObject checks in RenderObject::container
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Mon Jun 18 14:34:53 PDT 2012
https://bugs.webkit.org/show_bug.cgi?id=89384
Summary: Looks like wrong position of isSVGForeignObject checks
in RenderObject::container
Product: WebKit
Version: 528+ (Nightly build)
Platform: Unspecified
OS/Version: Unspecified
Status: NEW
Severity: Normal
Priority: P2
Component: Layout and Rendering
AssignedTo: webkit-unassigned at lists.webkit.org
ReportedBy: inferno at chromium.org
CC: hyatt at apple.com, mitz at webkit.org, zimmermann at kde.org,
pdr at google.com, schenney at chromium.org,
fmalita at chromium.org
RenderObject* RenderObject::container(const RenderBoxModelObject* repaintContainer, bool* repaintContainerSkipped) const
{
...................
EPosition pos = m_style->position();
if (pos == FixedPosition) {
// container() can be called on an object that is not in the
// tree yet. We don't call view() since it will assert if it
// can't get back to the canvas. Instead we just walk as high up
// as we can. If we're in the tree, we'll get the root. If we
// aren't we'll get the root of our little subtree (most likely
// we'll just return 0).
// FIXME: The definition of view() has changed to not crawl up the render tree. It might
// be safe now to use it.
while (o && o->parent() && !(o->hasTransform() && o->isRenderBlock())) {
if (repaintContainerSkipped && o == repaintContainer)
*repaintContainerSkipped = true;
#if ENABLE(SVG)
// foreignObject is the containing block for its contents.
if (o->isSVGForeignObject())
break;
#endif
o = o->parent();
}
} else if (pos == AbsolutePosition) {
// Same goes here. We technically just want our containing block, but
// we may not have one if we're part of an uninstalled subtree. We'll
// climb as high as we can though.
while (o && o->style()->position() == StaticPosition && !o->isRenderView() && !(o->hasTransform() && o->isRenderBlock())) {
if (repaintContainerSkipped && o == repaintContainer)
*repaintContainerSkipped = true;
#if ENABLE(SVG)
if (o->isSVGForeignObject()) // foreignObject is the containing block for contents inside it
break;
---------------------------
Shouldn't 'if (o->isSVGForeignObject()' be before the 'if (repaintContainerSkipped && o == repaintContainer)' check for both fixed positioned objects, absolute positioned objects. Can someone in the SVG team take a look and fix this.
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list