| Index: Source/core/rendering/RenderObject.h
|
| diff --git a/Source/core/rendering/RenderObject.h b/Source/core/rendering/RenderObject.h
|
| index c0de169ae7ec0f9b7a3895708c42166f0a5e6e09..cca2dc64ab6e00c2684f9fdc225c4c23572a7f6b 100644
|
| --- a/Source/core/rendering/RenderObject.h
|
| +++ b/Source/core/rendering/RenderObject.h
|
| @@ -175,6 +175,10 @@ public:
|
| virtual RenderObjectChildList* virtualChildren() { return 0; }
|
| virtual const RenderObjectChildList* virtualChildren() const { return 0; }
|
|
|
| + // Introduce a non-recursive traversal algorithm for layout
|
| + enum Order { Pre, Post };
|
| + RenderObject* nextForLayout(Order& order, const RenderObject* stayWithin, bool skippingChildren) const;
|
| +
|
| RenderObject* nextInPreOrder() const;
|
| RenderObject* nextInPreOrder(const RenderObject* stayWithin) const;
|
| RenderObject* nextInPreOrderAfterChildren() const;
|
| @@ -665,6 +669,15 @@ public:
|
| // Subclasses must reimplement this method to compute the size and position
|
| // of this object and all its descendants.
|
| virtual void layout() = 0;
|
| +
|
| + // These are hooks into the non-recursive layout variation. Each subclass
|
| + // would override these methods and implement non-recursive layout.
|
| + virtual bool isNonRecursiveLayout() const { return false; }
|
| + // We have pre/post layout methods in order to facilitate work to be done
|
| + // before children are visited and after.
|
| + virtual void preLayout() { ASSERT_NOT_REACHED(); }
|
| + virtual void postLayout() { ASSERT_NOT_REACHED(); }
|
| +
|
| virtual bool updateImageLoadingPriorities() { return false; }
|
| void setHasPendingResourceUpdate(bool hasPendingResourceUpdate) { m_bitfields.setHasPendingResourceUpdate(hasPendingResourceUpdate); }
|
| bool hasPendingResourceUpdate() const { return m_bitfields.hasPendingResourceUpdate(); }
|
|
|