Index: Source/core/rendering/RenderBlock.h |
diff --git a/Source/core/rendering/RenderBlock.h b/Source/core/rendering/RenderBlock.h |
index ee6f7d151813f38524022365b9e14fbf8480ef84..da1c3b23f90e1f90dacada611f9785480ef8b3e5 100644 |
--- a/Source/core/rendering/RenderBlock.h |
+++ b/Source/core/rendering/RenderBlock.h |
@@ -53,6 +53,10 @@ typedef Vector<WordMeasurement, 64> WordMeasurements; |
enum ContainingBlockState { NewContainingBlock, SameContainingBlock }; |
+typedef WTF::HashMap<RenderBlock*, OwnPtr<ListHashSet<RenderInline*> > > ContinuationOutlineTableMap; |
+ |
+ContinuationOutlineTableMap* continuationOutlineTable(); |
+ |
class RenderBlock : public RenderBox { |
public: |
virtual void destroy() OVERRIDE; |
@@ -82,9 +86,9 @@ public: |
LayoutUnit minLineHeightForReplacedRenderer(bool isFirstLine, LayoutUnit replacedHeight) const; |
-protected: |
RenderLineBoxList* lineBoxes() { return &m_lineBoxes; } |
+protected: |
InlineFlowBox* firstLineBox() const { return m_lineBoxes.firstLineBox(); } |
InlineFlowBox* lastLineBox() const { return m_lineBoxes.lastLineBox(); } |
@@ -179,7 +183,6 @@ public: |
void adjustForColumnRect(LayoutSize& offset, const LayoutPoint& locationInContainer) const; |
void addContinuationWithOutline(RenderInline*); |
- bool paintsContinuationOutline(RenderInline*); |
virtual RenderBoxModelObject* virtualContinuation() const OVERRIDE FINAL { return continuation(); } |
bool isAnonymousBlockContinuation() const { return continuation() && isAnonymousBlock(); } |
@@ -237,18 +240,20 @@ public: |
LayoutUnit startOffsetForContent() const { return style()->isLeftToRightDirection() ? logicalLeftOffsetForContent() : logicalWidth() - logicalRightOffsetForContent(); } |
LayoutUnit endOffsetForContent() const { return !style()->isLeftToRightDirection() ? logicalLeftOffsetForContent() : logicalWidth() - logicalRightOffsetForContent(); } |
+ virtual LayoutUnit logicalLeftSelectionOffset(const RenderBlock* rootBlock, LayoutUnit position) const; |
+ virtual LayoutUnit logicalRightSelectionOffset(const RenderBlock* rootBlock, LayoutUnit position) const; |
+ |
+ GapRects selectionGaps(const RenderBlock* rootBlock, const LayoutPoint& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, |
+ LayoutUnit& lastLogicalTop, LayoutUnit& lastLogicalLeft, LayoutUnit& lastLogicalRight, const PaintInfo* = 0) const; |
+ |
#if ENABLE(ASSERT) |
void checkPositionedObjectsNeedLayout(); |
+ bool paintsContinuationOutline(RenderInline* flow); |
#endif |
#ifndef NDEBUG |
void showLineTreeAndMark(const InlineBox* = 0, const char* = 0, const InlineBox* = 0, const char* = 0, const RenderObject* = 0) const; |
#endif |
- // inline-block elements paint all phases atomically. This function ensures that. Certain other elements |
- // (grid items, flex items) require this behavior as well, and this function exists as a helper for them. |
- // It is expected that the caller will call this function independent of the value of paintInfo.phase. |
- static void paintAsInlineBlock(RenderObject*, PaintInfo&, const LayoutPoint&); |
- |
bool recalcChildOverflowAfterStyleChange(); |
bool recalcOverflowAfterStyleChange(); |
@@ -274,11 +279,14 @@ protected: |
int beforeMarginInLineDirection(LineDirectionMode) const; |
virtual void paint(PaintInfo&, const LayoutPoint&) OVERRIDE; |
+public: |
virtual void paintObject(PaintInfo&, const LayoutPoint&) OVERRIDE; |
virtual void paintChildren(PaintInfo&, const LayoutPoint&); |
- void paintChild(RenderBox*, PaintInfo&, const LayoutPoint&); |
- void paintChildAsInlineBlock(RenderBox*, PaintInfo&, const LayoutPoint&); |
+ // FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to RenderBlockFlow |
+ virtual void paintFloats(PaintInfo&, const LayoutPoint&, bool) { } |
+ |
+protected: |
virtual void adjustInlineDirectionLineBounds(unsigned /* expansionOpportunityCount */, float& /* logicalLeft */, float& /* logicalWidth */) const { } |
virtual void computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const OVERRIDE; |
@@ -362,16 +370,7 @@ private: |
Node* nodeForHitTest() const; |
- // FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to RenderBlockFlow |
- virtual void paintFloats(PaintInfo&, const LayoutPoint&, bool) { } |
- void paintContents(PaintInfo&, const LayoutPoint&); |
- void paintColumnContents(PaintInfo&, const LayoutPoint&, bool paintFloats = false); |
- void paintColumnRules(PaintInfo&, const LayoutPoint&); |
- void paintSelection(PaintInfo&, const LayoutPoint&); |
- void paintCarets(PaintInfo&, const LayoutPoint&); |
- |
- bool hasCaret() const; |
- |
+private: |
virtual bool avoidsFloats() const OVERRIDE { return true; } |
bool hitTestColumns(const HitTestRequest&, HitTestResult&, const HitTestLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction); |
@@ -398,14 +397,10 @@ private: |
return selectionGapRectsForPaintInvalidation(paintInvalidationContainer); |
} |
bool isSelectionRoot() const; |
- GapRects selectionGaps(const RenderBlock* rootBlock, const LayoutPoint& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, |
- LayoutUnit& lastLogicalTop, LayoutUnit& lastLogicalLeft, LayoutUnit& lastLogicalRight, const PaintInfo* = 0) const; |
GapRects blockSelectionGaps(const RenderBlock* rootBlock, const LayoutPoint& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, |
LayoutUnit& lastLogicalTop, LayoutUnit& lastLogicalLeft, LayoutUnit& lastLogicalRight, const PaintInfo*) const; |
LayoutRect blockSelectionGap(const RenderBlock* rootBlock, const LayoutPoint& rootBlockPhysicalPosition, const LayoutSize& offsetFromRootBlock, |
LayoutUnit lastLogicalTop, LayoutUnit lastLogicalLeft, LayoutUnit lastLogicalRight, LayoutUnit logicalBottom, const PaintInfo*) const; |
- virtual LayoutUnit logicalLeftSelectionOffset(const RenderBlock* rootBlock, LayoutUnit position) const; |
- virtual LayoutUnit logicalRightSelectionOffset(const RenderBlock* rootBlock, LayoutUnit position) const; |
// FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to RenderBlockFlow |
virtual void clipOutFloatingObjects(const RenderBlock*, const PaintInfo*, const LayoutPoint&, const LayoutSize&) const { }; |
@@ -415,8 +410,7 @@ private: |
LayoutUnit desiredColumnWidth() const; |
- void paintContinuationOutlines(PaintInfo&, const LayoutPoint&); |
- |
+private: |
virtual LayoutRect localCaretRect(InlineBox*, int caretOffset, LayoutUnit* extraWidthToEndOfLine = 0) OVERRIDE FINAL; |
void adjustPointToColumnContents(LayoutPoint&) const; |