OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2007 David Smith (catfish.man@gmail.com) | 4 * (C) 2007 David Smith (catfish.man@gmail.com) |
5 * Copyright (C) 2003-2013 Apple Inc. All rights reserved. | 5 * Copyright (C) 2003-2013 Apple Inc. All rights reserved. |
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
7 * Copyright (C) 2013 Google Inc. All rights reserved. | 7 * Copyright (C) 2013 Google Inc. All rights reserved. |
8 * | 8 * |
9 * Redistribution and use in source and binary forms, with or without | 9 * Redistribution and use in source and binary forms, with or without |
10 * modification, are permitted provided that the following conditions are | 10 * modification, are permitted provided that the following conditions are |
(...skipping 28 matching lines...) Expand all Loading... |
39 #include "core/rendering/FloatingObjects.h" | 39 #include "core/rendering/FloatingObjects.h" |
40 #include "core/rendering/RenderBlock.h" | 40 #include "core/rendering/RenderBlock.h" |
41 #include "core/rendering/line/TrailingObjects.h" | 41 #include "core/rendering/line/TrailingObjects.h" |
42 #include "core/rendering/style/RenderStyleConstants.h" | 42 #include "core/rendering/style/RenderStyleConstants.h" |
43 | 43 |
44 namespace WebCore { | 44 namespace WebCore { |
45 | 45 |
46 class MarginInfo; | 46 class MarginInfo; |
47 class LineBreaker; | 47 class LineBreaker; |
48 class LineWidth; | 48 class LineWidth; |
49 class RenderNamedFlowFragment; | |
50 | 49 |
51 class RenderBlockFlow : public RenderBlock { | 50 class RenderBlockFlow : public RenderBlock { |
52 public: | 51 public: |
53 explicit RenderBlockFlow(ContainerNode*); | 52 explicit RenderBlockFlow(ContainerNode*); |
54 virtual ~RenderBlockFlow(); | 53 virtual ~RenderBlockFlow(); |
55 | 54 |
56 static RenderBlockFlow* createAnonymous(Document*); | 55 static RenderBlockFlow* createAnonymous(Document*); |
57 RenderBlockFlow* createAnonymousBlockFlow() const; | 56 RenderBlockFlow* createAnonymousBlockFlow() const; |
58 | 57 |
59 virtual bool isRenderBlockFlow() const OVERRIDE FINAL { return true; } | 58 virtual bool isRenderBlockFlow() const OVERRIDE FINAL { return true; } |
60 | 59 |
61 virtual void layoutBlock(bool relayoutChildren) OVERRIDE; | 60 virtual void layoutBlock(bool relayoutChildren) OVERRIDE; |
62 | 61 |
63 virtual void computeOverflow(LayoutUnit oldClientAfterEdge, bool recomputeFl
oats = false) OVERRIDE; | 62 virtual void computeOverflow(LayoutUnit oldClientAfterEdge, bool recomputeFl
oats = false) OVERRIDE; |
64 virtual void deleteLineBoxTree() OVERRIDE FINAL; | 63 virtual void deleteLineBoxTree() OVERRIDE FINAL; |
65 | 64 |
66 // Versions that can compute line offsets with the region and page offset pa
ssed in. Used for speed to avoid having to | |
67 // compute the region all over again when you already know it. | |
68 LayoutUnit availableLogicalWidthForLineInRegion(LayoutUnit position, bool sh
ouldIndentText, RenderRegion* region, LayoutUnit logicalHeight = 0) const | |
69 { | |
70 return max<LayoutUnit>(0, logicalRightOffsetForLineInRegion(position, sh
ouldIndentText, region, logicalHeight) | |
71 - logicalLeftOffsetForLineInRegion(position, shouldIndentText, regio
n, logicalHeight)); | |
72 } | |
73 LayoutUnit logicalRightOffsetForLineInRegion(LayoutUnit position, bool shoul
dIndentText, RenderRegion* region, LayoutUnit logicalHeight = 0) const | |
74 { | |
75 return logicalRightOffsetForLine(position, logicalRightOffsetForContent(
region), shouldIndentText, logicalHeight); | |
76 } | |
77 LayoutUnit logicalLeftOffsetForLineInRegion(LayoutUnit position, bool should
IndentText, RenderRegion* region, LayoutUnit logicalHeight = 0) const | |
78 { | |
79 return logicalLeftOffsetForLine(position, logicalLeftOffsetForContent(re
gion), shouldIndentText, logicalHeight); | |
80 } | |
81 LayoutUnit startOffsetForLineInRegion(LayoutUnit position, bool shouldIndent
Text, RenderRegion* region, LayoutUnit logicalHeight = 0) const | |
82 { | |
83 return style()->isLeftToRightDirection() ? logicalLeftOffsetForLineInReg
ion(position, shouldIndentText, region, logicalHeight) | |
84 : logicalWidth() - logicalRightOffsetForLineInRegion(position, shoul
dIndentText, region, logicalHeight); | |
85 } | |
86 LayoutUnit endOffsetForLineInRegion(LayoutUnit position, bool shouldIndentTe
xt, RenderRegion* region, LayoutUnit logicalHeight = 0) const | |
87 { | |
88 return !style()->isLeftToRightDirection() ? logicalLeftOffsetForLineInRe
gion(position, shouldIndentText, region, logicalHeight) | |
89 : logicalWidth() - logicalRightOffsetForLineInRegion(position, shoul
dIndentText, region, logicalHeight); | |
90 } | |
91 | |
92 LayoutUnit availableLogicalWidthForLine(LayoutUnit position, bool shouldInde
ntText, LayoutUnit logicalHeight = 0) const | 65 LayoutUnit availableLogicalWidthForLine(LayoutUnit position, bool shouldInde
ntText, LayoutUnit logicalHeight = 0) const |
93 { | 66 { |
94 return availableLogicalWidthForLineInRegion(position, shouldIndentText,
regionAtBlockOffset(position), logicalHeight); | 67 return max<LayoutUnit>(0, logicalRightOffsetForLine(position, shouldInde
ntText, logicalHeight) - logicalLeftOffsetForLine(position, shouldIndentText, lo
gicalHeight)); |
95 } | 68 } |
96 LayoutUnit logicalRightOffsetForLine(LayoutUnit position, bool shouldIndentT
ext, LayoutUnit logicalHeight = 0) const | 69 LayoutUnit logicalRightOffsetForLine(LayoutUnit position, bool shouldIndentT
ext, LayoutUnit logicalHeight = 0) const |
97 { | 70 { |
98 return logicalRightOffsetForLine(position, logicalRightOffsetForContent(
position), shouldIndentText, logicalHeight); | 71 return logicalRightOffsetForLine(position, logicalRightOffsetForContent(
), shouldIndentText, logicalHeight); |
99 } | 72 } |
100 LayoutUnit logicalLeftOffsetForLine(LayoutUnit position, bool shouldIndentTe
xt, LayoutUnit logicalHeight = 0) const | 73 LayoutUnit logicalLeftOffsetForLine(LayoutUnit position, bool shouldIndentTe
xt, LayoutUnit logicalHeight = 0) const |
101 { | 74 { |
102 return logicalLeftOffsetForLine(position, logicalLeftOffsetForContent(po
sition), shouldIndentText, logicalHeight); | 75 return logicalLeftOffsetForLine(position, logicalLeftOffsetForContent(),
shouldIndentText, logicalHeight); |
103 } | 76 } |
104 LayoutUnit pixelSnappedLogicalLeftOffsetForLine(LayoutUnit position, bool sh
ouldIndentText, LayoutUnit logicalHeight = 0) const | 77 LayoutUnit pixelSnappedLogicalLeftOffsetForLine(LayoutUnit position, bool sh
ouldIndentText, LayoutUnit logicalHeight = 0) const |
105 { | 78 { |
106 return roundToInt(logicalLeftOffsetForLine(position, shouldIndentText, l
ogicalHeight)); | 79 return roundToInt(logicalLeftOffsetForLine(position, shouldIndentText, l
ogicalHeight)); |
107 } | 80 } |
108 LayoutUnit pixelSnappedLogicalRightOffsetForLine(LayoutUnit position, bool s
houldIndentText, LayoutUnit logicalHeight = 0) const | 81 LayoutUnit pixelSnappedLogicalRightOffsetForLine(LayoutUnit position, bool s
houldIndentText, LayoutUnit logicalHeight = 0) const |
109 { | 82 { |
110 // FIXME: Multicolumn layouts break carrying over subpixel values to the
logical right offset because the lines may be shifted | 83 // FIXME: Multicolumn layouts break carrying over subpixel values to the
logical right offset because the lines may be shifted |
111 // by a subpixel value for all but the first column. This can lead to th
e actual pixel snapped width of the column being off | 84 // by a subpixel value for all but the first column. This can lead to th
e actual pixel snapped width of the column being off |
112 // by one pixel when rendered versus layed out, which can result in the
line being clipped. For now, we have to floor. | 85 // by one pixel when rendered versus layed out, which can result in the
line being clipped. For now, we have to floor. |
113 // https://bugs.webkit.org/show_bug.cgi?id=105461 | 86 // https://bugs.webkit.org/show_bug.cgi?id=105461 |
114 return floorToInt(logicalRightOffsetForLine(position, shouldIndentText,
logicalHeight)); | 87 return floorToInt(logicalRightOffsetForLine(position, shouldIndentText,
logicalHeight)); |
115 } | 88 } |
116 LayoutUnit startOffsetForLine(LayoutUnit position, bool shouldIndentText, La
youtUnit logicalHeight = 0) const | 89 LayoutUnit startOffsetForLine(LayoutUnit position, bool shouldIndentText, La
youtUnit logicalHeight = 0) const |
117 { | 90 { |
118 return style()->isLeftToRightDirection() ? logicalLeftOffsetForLine(posi
tion, shouldIndentText, logicalHeight) | 91 return style()->isLeftToRightDirection() ? logicalLeftOffsetForLine(posi
tion, shouldIndentText, logicalHeight) |
119 : logicalWidth() - logicalRightOffsetForLine(position, shouldIndentT
ext, logicalHeight); | 92 : logicalWidth() - logicalRightOffsetForLine(position, shouldIndentT
ext, logicalHeight); |
120 } | 93 } |
121 LayoutUnit endOffsetForLine(LayoutUnit position, bool shouldIndentText, Layo
utUnit logicalHeight = 0) const | 94 LayoutUnit endOffsetForLine(LayoutUnit position, bool shouldIndentText, Layo
utUnit logicalHeight = 0) const |
122 { | 95 { |
123 return !style()->isLeftToRightDirection() ? logicalLeftOffsetForLine(pos
ition, shouldIndentText, logicalHeight) | 96 return !style()->isLeftToRightDirection() ? logicalLeftOffsetForLine(pos
ition, shouldIndentText, logicalHeight) |
124 : logicalWidth() - logicalRightOffsetForLine(position, shouldIndentT
ext, logicalHeight); | 97 : logicalWidth() - logicalRightOffsetForLine(position, shouldIndentT
ext, logicalHeight); |
125 } | 98 } |
126 | 99 |
127 virtual LayoutUnit logicalLeftSelectionOffset(RenderBlock* rootBlock, Layout
Unit position) OVERRIDE; | 100 virtual LayoutUnit logicalLeftSelectionOffset(RenderBlock* rootBlock, Layout
Unit position) OVERRIDE; |
128 virtual LayoutUnit logicalRightSelectionOffset(RenderBlock* rootBlock, Layou
tUnit position) OVERRIDE; | 101 virtual LayoutUnit logicalRightSelectionOffset(RenderBlock* rootBlock, Layou
tUnit position) OVERRIDE; |
129 | 102 |
130 LayoutUnit computeStartPositionDeltaForChildAvoidingFloats(const RenderBox*
child, LayoutUnit childMarginStart, RenderRegion* = 0); | 103 LayoutUnit computeStartPositionDeltaForChildAvoidingFloats(const RenderBox*
child, LayoutUnit childMarginStart); |
131 | 104 |
132 RootInlineBox* createAndAppendRootInlineBox(); | 105 RootInlineBox* createAndAppendRootInlineBox(); |
133 | 106 |
134 void markAllDescendantsWithFloatsForLayout(RenderBox* floatToRemove = 0, boo
l inLayout = true); | 107 void markAllDescendantsWithFloatsForLayout(RenderBox* floatToRemove = 0, boo
l inLayout = true); |
135 void markSiblingsWithFloatsForLayout(RenderBox* floatToRemove = 0); | 108 void markSiblingsWithFloatsForLayout(RenderBox* floatToRemove = 0); |
136 | 109 |
137 virtual bool containsFloats() const OVERRIDE FINAL { return m_floatingObject
s && !m_floatingObjects->set().isEmpty(); } | 110 virtual bool containsFloats() const OVERRIDE FINAL { return m_floatingObject
s && !m_floatingObjects->set().isEmpty(); } |
138 bool containsFloat(RenderBox*) const; | 111 bool containsFloat(RenderBox*) const; |
139 | 112 |
140 void removeFloatingObjects(); | 113 void removeFloatingObjects(); |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 | 218 |
246 LayoutUnit logicalRightOffsetForLine(LayoutUnit logicalTop, LayoutUnit fixed
Offset, bool applyTextIndent, LayoutUnit logicalHeight = 0) const | 219 LayoutUnit logicalRightOffsetForLine(LayoutUnit logicalTop, LayoutUnit fixed
Offset, bool applyTextIndent, LayoutUnit logicalHeight = 0) const |
247 { | 220 { |
248 return adjustLogicalRightOffsetForLine(logicalRightFloatOffsetForLine(lo
gicalTop, fixedOffset, logicalHeight), applyTextIndent); | 221 return adjustLogicalRightOffsetForLine(logicalRightFloatOffsetForLine(lo
gicalTop, fixedOffset, logicalHeight), applyTextIndent); |
249 } | 222 } |
250 LayoutUnit logicalLeftOffsetForLine(LayoutUnit logicalTop, LayoutUnit fixedO
ffset, bool applyTextIndent, LayoutUnit logicalHeight = 0) const | 223 LayoutUnit logicalLeftOffsetForLine(LayoutUnit logicalTop, LayoutUnit fixedO
ffset, bool applyTextIndent, LayoutUnit logicalHeight = 0) const |
251 { | 224 { |
252 return adjustLogicalLeftOffsetForLine(logicalLeftFloatOffsetForLine(logi
calTop, fixedOffset, logicalHeight), applyTextIndent); | 225 return adjustLogicalLeftOffsetForLine(logicalLeftFloatOffsetForLine(logi
calTop, fixedOffset, logicalHeight), applyTextIndent); |
253 } | 226 } |
254 | 227 |
255 virtual void insertedIntoTree() OVERRIDE; | |
256 virtual void willBeDestroyed() OVERRIDE; | 228 virtual void willBeDestroyed() OVERRIDE; |
257 private: | 229 private: |
258 bool layoutBlockFlow(bool relayoutChildren, LayoutUnit& pageLogicalHeight, S
ubtreeLayoutScope&); | 230 bool layoutBlockFlow(bool relayoutChildren, LayoutUnit& pageLogicalHeight, S
ubtreeLayoutScope&); |
259 void layoutBlockChildren(bool relayoutChildren, LayoutUnit& maxFloatLogicalB
ottom, SubtreeLayoutScope&, LayoutUnit beforeEdge, LayoutUnit afterEdge); | 231 void layoutBlockChildren(bool relayoutChildren, LayoutUnit& maxFloatLogicalB
ottom, SubtreeLayoutScope&, LayoutUnit beforeEdge, LayoutUnit afterEdge); |
260 | 232 |
261 void layoutBlockChild(RenderBox* child, MarginInfo&, LayoutUnit& previousFlo
atLogicalBottom, LayoutUnit& maxFloatLogicalBottom); | 233 void layoutBlockChild(RenderBox* child, MarginInfo&, LayoutUnit& previousFlo
atLogicalBottom, LayoutUnit& maxFloatLogicalBottom); |
262 void adjustPositionedBlock(RenderBox* child, const MarginInfo&); | 234 void adjustPositionedBlock(RenderBox* child, const MarginInfo&); |
263 void adjustFloatingBlock(const MarginInfo&); | 235 void adjustFloatingBlock(const MarginInfo&); |
264 | 236 |
265 LayoutPoint flipFloatForWritingModeForChild(const FloatingObject*, const Lay
outPoint&) const; | 237 LayoutPoint flipFloatForWritingModeForChild(const FloatingObject*, const Lay
outPoint&) const; |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 void setNegativeMarginAfter(LayoutUnit neg) { m_negativeMarginAfter = ne
g; } | 332 void setNegativeMarginAfter(LayoutUnit neg) { m_negativeMarginAfter = ne
g; } |
361 | 333 |
362 private: | 334 private: |
363 LayoutUnit m_positiveMarginBefore; | 335 LayoutUnit m_positiveMarginBefore; |
364 LayoutUnit m_negativeMarginBefore; | 336 LayoutUnit m_negativeMarginBefore; |
365 LayoutUnit m_positiveMarginAfter; | 337 LayoutUnit m_positiveMarginAfter; |
366 LayoutUnit m_negativeMarginAfter; | 338 LayoutUnit m_negativeMarginAfter; |
367 }; | 339 }; |
368 MarginValues marginValuesForChild(RenderBox* child) const; | 340 MarginValues marginValuesForChild(RenderBox* child) const; |
369 | 341 |
370 virtual void updateLogicalHeight() OVERRIDE; | |
371 | |
372 // Allocated only when some of these fields have non-default values | 342 // Allocated only when some of these fields have non-default values |
373 struct RenderBlockFlowRareData { | 343 struct RenderBlockFlowRareData { |
374 WTF_MAKE_NONCOPYABLE(RenderBlockFlowRareData); WTF_MAKE_FAST_ALLOCATED; | 344 WTF_MAKE_NONCOPYABLE(RenderBlockFlowRareData); WTF_MAKE_FAST_ALLOCATED; |
375 public: | 345 public: |
376 RenderBlockFlowRareData(const RenderBlockFlow* block) | 346 RenderBlockFlowRareData(const RenderBlockFlow* block) |
377 : m_margins(positiveMarginBeforeDefault(block), negativeMarginBefore
Default(block), positiveMarginAfterDefault(block), negativeMarginAfterDefault(bl
ock)) | 347 : m_margins(positiveMarginBeforeDefault(block), negativeMarginBefore
Default(block), positiveMarginAfterDefault(block), negativeMarginAfterDefault(bl
ock)) |
378 , m_lineGridBox(0) | 348 , m_lineGridBox(0) |
379 , m_discardMarginBefore(false) | 349 , m_discardMarginBefore(false) |
380 , m_discardMarginAfter(false) | 350 , m_discardMarginAfter(false) |
381 , m_renderNamedFlowFragment(0) | |
382 { | 351 { |
383 } | 352 } |
384 | 353 |
385 static LayoutUnit positiveMarginBeforeDefault(const RenderBlockFlow* blo
ck) | 354 static LayoutUnit positiveMarginBeforeDefault(const RenderBlockFlow* blo
ck) |
386 { | 355 { |
387 return std::max<LayoutUnit>(block->marginBefore(), 0); | 356 return std::max<LayoutUnit>(block->marginBefore(), 0); |
388 } | 357 } |
389 static LayoutUnit negativeMarginBeforeDefault(const RenderBlockFlow* blo
ck) | 358 static LayoutUnit negativeMarginBeforeDefault(const RenderBlockFlow* blo
ck) |
390 { | 359 { |
391 return std::max<LayoutUnit>(-block->marginBefore(), 0); | 360 return std::max<LayoutUnit>(-block->marginBefore(), 0); |
392 } | 361 } |
393 static LayoutUnit positiveMarginAfterDefault(const RenderBlockFlow* bloc
k) | 362 static LayoutUnit positiveMarginAfterDefault(const RenderBlockFlow* bloc
k) |
394 { | 363 { |
395 return std::max<LayoutUnit>(block->marginAfter(), 0); | 364 return std::max<LayoutUnit>(block->marginAfter(), 0); |
396 } | 365 } |
397 static LayoutUnit negativeMarginAfterDefault(const RenderBlockFlow* bloc
k) | 366 static LayoutUnit negativeMarginAfterDefault(const RenderBlockFlow* bloc
k) |
398 { | 367 { |
399 return std::max<LayoutUnit>(-block->marginAfter(), 0); | 368 return std::max<LayoutUnit>(-block->marginAfter(), 0); |
400 } | 369 } |
401 | 370 |
402 MarginValues m_margins; | 371 MarginValues m_margins; |
403 | 372 |
404 RootInlineBox* m_lineGridBox; | 373 RootInlineBox* m_lineGridBox; |
405 | 374 |
406 bool m_discardMarginBefore : 1; | 375 bool m_discardMarginBefore : 1; |
407 bool m_discardMarginAfter : 1; | 376 bool m_discardMarginAfter : 1; |
408 RenderNamedFlowFragment* m_renderNamedFlowFragment; | |
409 }; | 377 }; |
410 LayoutUnit marginOffsetForSelfCollapsingBlock(); | 378 LayoutUnit marginOffsetForSelfCollapsingBlock(); |
411 | 379 |
412 RenderNamedFlowFragment* renderNamedFlowFragment() const { return m_rareData
? m_rareData->m_renderNamedFlowFragment : 0; } | |
413 void setRenderNamedFlowFragment(RenderNamedFlowFragment*); | |
414 | |
415 protected: | 380 protected: |
416 LayoutUnit maxPositiveMarginBefore() const { return m_rareData ? m_rareData-
>m_margins.positiveMarginBefore() : RenderBlockFlowRareData::positiveMarginBefor
eDefault(this); } | 381 LayoutUnit maxPositiveMarginBefore() const { return m_rareData ? m_rareData-
>m_margins.positiveMarginBefore() : RenderBlockFlowRareData::positiveMarginBefor
eDefault(this); } |
417 LayoutUnit maxNegativeMarginBefore() const { return m_rareData ? m_rareData-
>m_margins.negativeMarginBefore() : RenderBlockFlowRareData::negativeMarginBefor
eDefault(this); } | 382 LayoutUnit maxNegativeMarginBefore() const { return m_rareData ? m_rareData-
>m_margins.negativeMarginBefore() : RenderBlockFlowRareData::negativeMarginBefor
eDefault(this); } |
418 LayoutUnit maxPositiveMarginAfter() const { return m_rareData ? m_rareData->
m_margins.positiveMarginAfter() : RenderBlockFlowRareData::positiveMarginAfterDe
fault(this); } | 383 LayoutUnit maxPositiveMarginAfter() const { return m_rareData ? m_rareData->
m_margins.positiveMarginAfter() : RenderBlockFlowRareData::positiveMarginAfterDe
fault(this); } |
419 LayoutUnit maxNegativeMarginAfter() const { return m_rareData ? m_rareData->
m_margins.negativeMarginAfter() : RenderBlockFlowRareData::negativeMarginAfterDe
fault(this); } | 384 LayoutUnit maxNegativeMarginAfter() const { return m_rareData ? m_rareData->
m_margins.negativeMarginAfter() : RenderBlockFlowRareData::negativeMarginAfterDe
fault(this); } |
420 | 385 |
421 void setMaxMarginBeforeValues(LayoutUnit pos, LayoutUnit neg); | 386 void setMaxMarginBeforeValues(LayoutUnit pos, LayoutUnit neg); |
422 void setMaxMarginAfterValues(LayoutUnit pos, LayoutUnit neg); | 387 void setMaxMarginAfterValues(LayoutUnit pos, LayoutUnit neg); |
423 | 388 |
424 void setMustDiscardMarginBefore(bool = true); | 389 void setMustDiscardMarginBefore(bool = true); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
457 void setCollapsedBottomMargin(const MarginInfo&); | 422 void setCollapsedBottomMargin(const MarginInfo&); |
458 | 423 |
459 LayoutUnit applyBeforeBreak(RenderBox* child, LayoutUnit logicalOffset); //
If the child has a before break, then return a new yPos that shifts to the top o
f the next page/column. | 424 LayoutUnit applyBeforeBreak(RenderBox* child, LayoutUnit logicalOffset); //
If the child has a before break, then return a new yPos that shifts to the top o
f the next page/column. |
460 LayoutUnit applyAfterBreak(RenderBox* child, LayoutUnit logicalOffset, Margi
nInfo&); // If the child has an after break, then return a new offset that shift
s to the top of the next page/column. | 425 LayoutUnit applyAfterBreak(RenderBox* child, LayoutUnit logicalOffset, Margi
nInfo&); // If the child has an after break, then return a new offset that shift
s to the top of the next page/column. |
461 | 426 |
462 LayoutUnit adjustBlockChildForPagination(LayoutUnit logicalTopAfterClear, La
youtUnit estimateWithoutPagination, RenderBox* child, bool atBeforeSideOfBlock); | 427 LayoutUnit adjustBlockChildForPagination(LayoutUnit logicalTopAfterClear, La
youtUnit estimateWithoutPagination, RenderBox* child, bool atBeforeSideOfBlock); |
463 | 428 |
464 // Used to store state between styleWillChange and styleDidChange | 429 // Used to store state between styleWillChange and styleDidChange |
465 static bool s_canPropagateFloatIntoSibling; | 430 static bool s_canPropagateFloatIntoSibling; |
466 | 431 |
467 virtual bool canHaveChildren() const OVERRIDE; | |
468 virtual bool canHaveGeneratedChildren() const OVERRIDE; | |
469 | |
470 void createRenderNamedFlowFragmentIfNeeded(); | |
471 | |
472 RenderBlockFlowRareData& ensureRareData(); | 432 RenderBlockFlowRareData& ensureRareData(); |
473 | 433 |
474 LayoutUnit m_repaintLogicalTop; | 434 LayoutUnit m_repaintLogicalTop; |
475 LayoutUnit m_repaintLogicalBottom; | 435 LayoutUnit m_repaintLogicalBottom; |
476 | 436 |
477 virtual bool isSelfCollapsingBlock() const OVERRIDE; | 437 virtual bool isSelfCollapsingBlock() const OVERRIDE; |
478 protected: | 438 protected: |
479 OwnPtr<RenderBlockFlowRareData> m_rareData; | 439 OwnPtr<RenderBlockFlowRareData> m_rareData; |
480 OwnPtr<FloatingObjects> m_floatingObjects; | 440 OwnPtr<FloatingObjects> m_floatingObjects; |
481 | 441 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
522 | 482 |
523 // END METHODS DEFINED IN RenderBlockLineLayout | 483 // END METHODS DEFINED IN RenderBlockLineLayout |
524 | 484 |
525 }; | 485 }; |
526 | 486 |
527 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderBlockFlow, isRenderBlockFlow()); | 487 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderBlockFlow, isRenderBlockFlow()); |
528 | 488 |
529 } // namespace WebCore | 489 } // namespace WebCore |
530 | 490 |
531 #endif // RenderBlockFlow_h | 491 #endif // RenderBlockFlow_h |
OLD | NEW |