diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-11 13:45:28 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-07-11 13:45:28 +0200 |
commit | d6a599dbc9d824a462b2b206316e102bf8136446 (patch) | |
tree | ecb257a5e55b2239d74b90fdad62fccd661cf286 /Source/WebCore/rendering/RenderObject.cpp | |
parent | 3ccc3a85f09a83557b391aae380d3bf5f81a2911 (diff) | |
download | qtwebkit-d6a599dbc9d824a462b2b206316e102bf8136446.tar.gz |
Imported WebKit commit 8ff1f22783a32de82fee915abd55bd1b298f2644 (http://svn.webkit.org/repository/webkit/trunk@122325)
New snapshot that should work with the latest Qt build system changes
Diffstat (limited to 'Source/WebCore/rendering/RenderObject.cpp')
-rwxr-xr-x | Source/WebCore/rendering/RenderObject.cpp | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/Source/WebCore/rendering/RenderObject.cpp b/Source/WebCore/rendering/RenderObject.cpp index b5ca92b81..deb66079c 100755 --- a/Source/WebCore/rendering/RenderObject.cpp +++ b/Source/WebCore/rendering/RenderObject.cpp @@ -150,7 +150,8 @@ RenderObject* RenderObject::createObject(Node* node, RenderStyle* style) // treat <rt> as ruby text ONLY if it still has its default treatment of block if (node->hasTagName(rtTag) && style->display() == BLOCK) return new (arena) RenderRubyText(node); - + if (doc->cssRegionsEnabled() && style->isDisplayRegionType() && !style->regionThread().isEmpty() && doc->renderView()) + return new (arena) RenderRegion(node, doc->renderView()->flowThreadController()->ensureRenderFlowThreadWithName(style->regionThread())); switch (style->display()) { case NONE: return 0; @@ -160,9 +161,6 @@ RenderObject* RenderObject::createObject(Node* node, RenderStyle* style) case INLINE_BLOCK: case RUN_IN: case COMPACT: - // Only non-replaced block elements can become a region. - if (doc->cssRegionsEnabled() && !style->regionThread().isEmpty() && doc->renderView()) - return new (arena) RenderRegion(node, doc->renderView()->flowThreadController()->ensureRenderFlowThreadWithName(style->regionThread())); if ((!style->hasAutoColumnCount() || !style->hasAutoColumnWidth()) && doc->regionBasedColumnsEnabled()) return new (arena) RenderMultiColumnBlock(node); return new (arena) RenderBlock(node); @@ -678,6 +676,16 @@ void RenderObject::markContainingBlocksForLayout(bool scheduleRelayout, RenderOb last->scheduleRelayout(); } +#ifndef NDEBUG +void RenderObject::checkBlockPositionedObjectsNeedLayout() +{ + ASSERT(!needsLayout()); + + if (isRenderBlock()) + toRenderBlock(this)->checkPositionedObjectsNeedLayout(); +} +#endif + void RenderObject::setPreferredLogicalWidthsDirty(bool shouldBeDirty, MarkingBehavior markParents) { bool alreadyDirty = preferredLogicalWidthsDirty(); @@ -730,6 +738,10 @@ RenderBlock* RenderObject::containingBlock() const break; if (o->hasTransform() && o->isRenderBlock()) break; + // The render flow thread is the top most containing block + // for the fixed positioned elements. + if (o->isRenderFlowThread()) + break; #if ENABLE(SVG) // foreignObject is the containing block for its contents. if (o->isSVGForeignObject()) @@ -2220,6 +2232,11 @@ RenderObject* RenderObject::container(const RenderBoxModelObject* repaintContain if (o->isSVGForeignObject()) break; #endif + // The render flow thread is the top most containing block + // for the fixed positioned elements. + if (o->isRenderFlowThread()) + break; + if (repaintContainerSkipped && o == repaintContainer) *repaintContainerSkipped = true; @@ -2681,7 +2698,11 @@ bool RenderObject::willRenderImage(CachedImage*) // If we're not in a window (i.e., we're dormant from being put in the b/f cache or in a background tab) // then we don't want to render either. - return !document()->inPageCache() && !document()->view()->isOffscreen(); + if (document()->inPageCache() || document()->view()->isOffscreen()) + return false; + + // If a renderer is outside the viewport, we won't render. + return viewRect().intersects(absoluteClippedOverflowRect()); } int RenderObject::maximalOutlineSize(PaintPhase p) const |