| Index: Source/core/layout/LayoutObject.h
|
| diff --git a/Source/core/layout/LayoutObject.h b/Source/core/layout/LayoutObject.h
|
| index ae63d6ca79b8b9be6e18a59b44e7aefad3ea1e16..837eeed856cd2810e05e6f2968f4d3afa6ccb728 100644
|
| --- a/Source/core/layout/LayoutObject.h
|
| +++ b/Source/core/layout/LayoutObject.h
|
| @@ -203,7 +203,7 @@ public:
|
| // function follows the containing block chain.
|
| LayoutFlowThread* flowThreadContainingBlock() const
|
| {
|
| - if (flowThreadState() == NotInsideFlowThread)
|
| + if (!isInsideFlowThread())
|
| return 0;
|
| return locateFlowThreadContainingBlock();
|
| }
|
| @@ -287,9 +287,9 @@ protected:
|
| // Only update if our flow thread state is different from our new parent and if we're not a LayoutFlowThread.
|
| // A LayoutFlowThread is always considered to be inside itself, so it never has to change its state
|
| // in response to parent changes.
|
| - FlowThreadState newState = parent ? parent->flowThreadState() : NotInsideFlowThread;
|
| - if (newState != flowThreadState() && !isLayoutFlowThread())
|
| - setFlowThreadStateIncludingDescendants(newState);
|
| + bool insideFlowThread = parent && parent->isInsideFlowThread();
|
| + if (insideFlowThread != isInsideFlowThread() && !isLayoutFlowThread())
|
| + setIsInsideFlowThreadIncludingDescendants(insideFlowThread);
|
| }
|
|
|
| //////////////////////////////////////////
|
| @@ -430,16 +430,10 @@ public:
|
| setNeedsLayoutAndFullPaintInvalidation(LayoutInvalidationReason::LineBoxesChanged);
|
| }
|
|
|
| - enum FlowThreadState {
|
| - NotInsideFlowThread = 0,
|
| - InsideOutOfFlowThread = 1,
|
| - InsideInFlowThread = 2,
|
| - };
|
| -
|
| - void setFlowThreadStateIncludingDescendants(FlowThreadState);
|
| + void setIsInsideFlowThreadIncludingDescendants(bool);
|
|
|
| - FlowThreadState flowThreadState() const { return m_bitfields.flowThreadState(); }
|
| - void setFlowThreadState(FlowThreadState state) { m_bitfields.setFlowThreadState(state); }
|
| + bool isInsideFlowThread() const { return m_bitfields.isInsideFlowThread(); }
|
| + void setIsInsideFlowThread(bool insideFlowThread) { m_bitfields.setIsInsideFlowThread(insideFlowThread); }
|
|
|
| // FIXME: Until all SVG layoutObjects can be subclasses of LayoutSVGModelObject we have
|
| // to add SVG layoutObject methods to LayoutObject with an ASSERT_NOT_REACHED() default implementation.
|
| @@ -1307,13 +1301,13 @@ private:
|
| , m_ancestorLineBoxDirty(false)
|
| , m_layoutDidGetCalledSinceLastFrame(false)
|
| , m_hasPendingResourceUpdate(false)
|
| + , m_isInsideFlowThread(false)
|
| , m_childrenInline(false)
|
| , m_hasColumns(false)
|
| , m_alwaysCreateLineBoxesForLayoutInline(false)
|
| , m_lastBoxDecorationBackgroundObscured(false)
|
| , m_positionedState(IsStaticallyPositioned)
|
| , m_selectionState(SelectionNone)
|
| - , m_flowThreadState(NotInsideFlowThread)
|
| , m_boxDecorationBackgroundState(NoBoxDecorationBackground)
|
| , m_fullPaintInvalidationReason(PaintInvalidationNone)
|
| {
|
| @@ -1355,6 +1349,8 @@ private:
|
|
|
| ADD_BOOLEAN_BITFIELD(hasPendingResourceUpdate, HasPendingResourceUpdate);
|
|
|
| + ADD_BOOLEAN_BITFIELD(isInsideFlowThread, IsInsideFlowThread);
|
| +
|
| // from LayoutBlock
|
| ADD_BOOLEAN_BITFIELD(childrenInline, ChildrenInline);
|
| ADD_BOOLEAN_BITFIELD(hasColumns, HasColumns);
|
| @@ -1368,7 +1364,6 @@ private:
|
| private:
|
| unsigned m_positionedState : 2; // PositionedState
|
| unsigned m_selectionState : 3; // SelectionState
|
| - unsigned m_flowThreadState : 2; // FlowThreadState
|
| unsigned m_boxDecorationBackgroundState : 2; // BoxDecorationBackgroundState
|
| unsigned m_fullPaintInvalidationReason : 5; // PaintInvalidationReason
|
|
|
| @@ -1387,9 +1382,6 @@ private:
|
| ALWAYS_INLINE SelectionState selectionState() const { return static_cast<SelectionState>(m_selectionState); }
|
| ALWAYS_INLINE void setSelectionState(SelectionState selectionState) { m_selectionState = selectionState; }
|
|
|
| - ALWAYS_INLINE FlowThreadState flowThreadState() const { return static_cast<FlowThreadState>(m_flowThreadState); }
|
| - ALWAYS_INLINE void setFlowThreadState(FlowThreadState flowThreadState) { m_flowThreadState = flowThreadState; }
|
| -
|
| ALWAYS_INLINE BoxDecorationBackgroundState boxDecorationBackgroundState() const { return static_cast<BoxDecorationBackgroundState>(m_boxDecorationBackgroundState); }
|
| ALWAYS_INLINE void setBoxDecorationBackgroundState(BoxDecorationBackgroundState s) { m_boxDecorationBackgroundState = s; }
|
|
|
|
|