summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderObject.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-07-11 13:45:28 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-07-11 13:45:28 +0200
commitd6a599dbc9d824a462b2b206316e102bf8136446 (patch)
treeecb257a5e55b2239d74b90fdad62fccd661cf286 /Source/WebCore/rendering/RenderObject.cpp
parent3ccc3a85f09a83557b391aae380d3bf5f81a2911 (diff)
downloadqtwebkit-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-xSource/WebCore/rendering/RenderObject.cpp31
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