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 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. | 4 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
218 | 218 |
219 void updateLayerTransform(); | 219 void updateLayerTransform(); |
220 | 220 |
221 LayoutUnit contentWidth() const { return clientWidth() - paddingLeft() - pad
dingRight(); } | 221 LayoutUnit contentWidth() const { return clientWidth() - paddingLeft() - pad
dingRight(); } |
222 LayoutUnit contentHeight() const { return clientHeight() - paddingTop() - pa
ddingBottom(); } | 222 LayoutUnit contentHeight() const { return clientHeight() - paddingTop() - pa
ddingBottom(); } |
223 LayoutUnit contentLogicalWidth() const { return style()->isHorizontalWriting
Mode() ? contentWidth() : contentHeight(); } | 223 LayoutUnit contentLogicalWidth() const { return style()->isHorizontalWriting
Mode() ? contentWidth() : contentHeight(); } |
224 LayoutUnit contentLogicalHeight() const { return style()->isHorizontalWritin
gMode() ? contentHeight() : contentWidth(); } | 224 LayoutUnit contentLogicalHeight() const { return style()->isHorizontalWritin
gMode() ? contentHeight() : contentWidth(); } |
225 | 225 |
226 // IE extensions. Used to calculate offsetWidth/Height. Overridden by inlin
es (RenderFlow) | 226 // IE extensions. Used to calculate offsetWidth/Height. Overridden by inlin
es (RenderFlow) |
227 // to return the remaining width on a given line (and the height of a single
line). | 227 // to return the remaining width on a given line (and the height of a single
line). |
228 virtual LayoutUnit offsetWidth() const { return width(); } | 228 virtual LayoutUnit offsetWidth() const OVERRIDE { return width(); } |
229 virtual LayoutUnit offsetHeight() const { return height(); } | 229 virtual LayoutUnit offsetHeight() const OVERRIDE { return height(); } |
230 | 230 |
231 virtual int pixelSnappedOffsetWidth() const OVERRIDE FINAL; | 231 virtual int pixelSnappedOffsetWidth() const OVERRIDE FINAL; |
232 virtual int pixelSnappedOffsetHeight() const OVERRIDE FINAL; | 232 virtual int pixelSnappedOffsetHeight() const OVERRIDE FINAL; |
233 | 233 |
234 bool canDetermineWidthWithoutLayout() const; | 234 bool canDetermineWidthWithoutLayout() const; |
235 LayoutUnit fixedOffsetWidth() const; | 235 LayoutUnit fixedOffsetWidth() const; |
236 | 236 |
237 // More IE extensions. clientWidth and clientHeight represent the interior
of an object | 237 // More IE extensions. clientWidth and clientHeight represent the interior
of an object |
238 // excluding border and scrollbar. clientLeft/Top are just the borderLeftWi
dth and borderTopWidth. | 238 // excluding border and scrollbar. clientLeft/Top are just the borderLeftWi
dth and borderTopWidth. |
239 LayoutUnit clientLeft() const { return borderLeft(); } | 239 LayoutUnit clientLeft() const { return borderLeft(); } |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 // All objects know their maximal positive and negative margins. The | 305 // All objects know their maximal positive and negative margins. The |
306 // formula for computing a collapsed margin is |maxPosMargin| - |maxNegmargi
n|. | 306 // formula for computing a collapsed margin is |maxPosMargin| - |maxNegmargi
n|. |
307 // For a non-collapsing box, such as a leaf element, this formula will simpl
y return | 307 // For a non-collapsing box, such as a leaf element, this formula will simpl
y return |
308 // the margin of the element. Blocks override the maxMarginBefore and maxMa
rginAfter | 308 // the margin of the element. Blocks override the maxMarginBefore and maxMa
rginAfter |
309 // methods. | 309 // methods. |
310 enum MarginSign { PositiveMargin, NegativeMargin }; | 310 enum MarginSign { PositiveMargin, NegativeMargin }; |
311 virtual bool isSelfCollapsingBlock() const { return false; } | 311 virtual bool isSelfCollapsingBlock() const { return false; } |
312 virtual LayoutUnit collapsedMarginBefore() const { return marginBefore(); } | 312 virtual LayoutUnit collapsedMarginBefore() const { return marginBefore(); } |
313 virtual LayoutUnit collapsedMarginAfter() const { return marginAfter(); } | 313 virtual LayoutUnit collapsedMarginAfter() const { return marginAfter(); } |
314 | 314 |
315 virtual void absoluteRects(Vector<IntRect>&, const LayoutPoint& accumulatedO
ffset) const; | 315 virtual void absoluteRects(Vector<IntRect>&, const LayoutPoint& accumulatedO
ffset) const OVERRIDE; |
316 virtual void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const; | 316 virtual void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const OVERRID
E; |
317 | 317 |
318 LayoutRect reflectionBox() const; | 318 LayoutRect reflectionBox() const; |
319 int reflectionOffset() const; | 319 int reflectionOffset() const; |
320 // Given a rect in the object's coordinate space, returns the corresponding
rect in the reflection. | 320 // Given a rect in the object's coordinate space, returns the corresponding
rect in the reflection. |
321 LayoutRect reflectedRect(const LayoutRect&) const; | 321 LayoutRect reflectedRect(const LayoutRect&) const; |
322 | 322 |
323 virtual void layout(); | 323 virtual void layout() OVERRIDE; |
324 virtual void paint(PaintInfo&, const LayoutPoint&); | 324 virtual void paint(PaintInfo&, const LayoutPoint&) OVERRIDE; |
325 virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTes
tLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAct
ion) OVERRIDE; | 325 virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, const HitTes
tLocation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAct
ion) OVERRIDE; |
326 | 326 |
327 virtual LayoutUnit minPreferredLogicalWidth() const; | 327 virtual LayoutUnit minPreferredLogicalWidth() const OVERRIDE; |
328 virtual LayoutUnit maxPreferredLogicalWidth() const; | 328 virtual LayoutUnit maxPreferredLogicalWidth() const OVERRIDE; |
329 | 329 |
330 // FIXME: We should rename these back to overrideLogicalHeight/Width and hav
e them store | 330 // FIXME: We should rename these back to overrideLogicalHeight/Width and hav
e them store |
331 // the border-box height/width like the regular height/width accessors on Re
nderBox. | 331 // the border-box height/width like the regular height/width accessors on Re
nderBox. |
332 // Right now, these are different than contentHeight/contentWidth because th
ey still | 332 // Right now, these are different than contentHeight/contentWidth because th
ey still |
333 // include the scrollbar height/width. | 333 // include the scrollbar height/width. |
334 LayoutUnit overrideLogicalContentWidth() const; | 334 LayoutUnit overrideLogicalContentWidth() const; |
335 LayoutUnit overrideLogicalContentHeight() const; | 335 LayoutUnit overrideLogicalContentHeight() const; |
336 bool hasOverrideHeight() const; | 336 bool hasOverrideHeight() const; |
337 bool hasOverrideWidth() const; | 337 bool hasOverrideWidth() const; |
338 void setOverrideLogicalContentHeight(LayoutUnit); | 338 void setOverrideLogicalContentHeight(LayoutUnit); |
339 void setOverrideLogicalContentWidth(LayoutUnit); | 339 void setOverrideLogicalContentWidth(LayoutUnit); |
340 void clearOverrideSize(); | 340 void clearOverrideSize(); |
341 void clearOverrideLogicalContentHeight(); | 341 void clearOverrideLogicalContentHeight(); |
342 void clearOverrideLogicalContentWidth(); | 342 void clearOverrideLogicalContentWidth(); |
343 | 343 |
344 LayoutUnit overrideContainingBlockContentLogicalWidth() const; | 344 LayoutUnit overrideContainingBlockContentLogicalWidth() const; |
345 LayoutUnit overrideContainingBlockContentLogicalHeight() const; | 345 LayoutUnit overrideContainingBlockContentLogicalHeight() const; |
346 bool hasOverrideContainingBlockLogicalWidth() const; | 346 bool hasOverrideContainingBlockLogicalWidth() const; |
347 bool hasOverrideContainingBlockLogicalHeight() const; | 347 bool hasOverrideContainingBlockLogicalHeight() const; |
348 void setOverrideContainingBlockContentLogicalWidth(LayoutUnit); | 348 void setOverrideContainingBlockContentLogicalWidth(LayoutUnit); |
349 void setOverrideContainingBlockContentLogicalHeight(LayoutUnit); | 349 void setOverrideContainingBlockContentLogicalHeight(LayoutUnit); |
350 void clearContainingBlockOverrideSize(); | 350 void clearContainingBlockOverrideSize(); |
351 void clearOverrideContainingBlockContentLogicalHeight(); | 351 void clearOverrideContainingBlockContentLogicalHeight(); |
352 | 352 |
353 virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&, bo
ol* offsetDependsOnPoint = 0) const; | 353 virtual LayoutSize offsetFromContainer(RenderObject*, const LayoutPoint&, bo
ol* offsetDependsOnPoint = 0) const OVERRIDE; |
354 | 354 |
355 LayoutUnit adjustBorderBoxLogicalWidthForBoxSizing(LayoutUnit width) const; | 355 LayoutUnit adjustBorderBoxLogicalWidthForBoxSizing(LayoutUnit width) const; |
356 LayoutUnit adjustBorderBoxLogicalHeightForBoxSizing(LayoutUnit height) const
; | 356 LayoutUnit adjustBorderBoxLogicalHeightForBoxSizing(LayoutUnit height) const
; |
357 LayoutUnit adjustContentBoxLogicalWidthForBoxSizing(LayoutUnit width) const; | 357 LayoutUnit adjustContentBoxLogicalWidthForBoxSizing(LayoutUnit width) const; |
358 LayoutUnit adjustContentBoxLogicalHeightForBoxSizing(LayoutUnit height) cons
t; | 358 LayoutUnit adjustContentBoxLogicalHeightForBoxSizing(LayoutUnit height) cons
t; |
359 | 359 |
360 struct ComputedMarginValues { | 360 struct ComputedMarginValues { |
361 ComputedMarginValues() { } | 361 ComputedMarginValues() { } |
362 | 362 |
363 LayoutUnit m_before; | 363 LayoutUnit m_before; |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 virtual bool scrollsOverflowY() const { return hasOverflowClip() && (style()
->overflowY() == OSCROLL || hasAutoVerticalScrollbar()); } | 481 virtual bool scrollsOverflowY() const { return hasOverflowClip() && (style()
->overflowY() == OSCROLL || hasAutoVerticalScrollbar()); } |
482 bool usesCompositedScrolling() const; | 482 bool usesCompositedScrolling() const; |
483 | 483 |
484 // Elements such as the <input> field override this to specify that they are
scrollable | 484 // Elements such as the <input> field override this to specify that they are
scrollable |
485 // outside the context of the CSS overflow style | 485 // outside the context of the CSS overflow style |
486 virtual bool isIntristicallyScrollable(ScrollbarOrientation orientation) con
st { return false; } | 486 virtual bool isIntristicallyScrollable(ScrollbarOrientation orientation) con
st { return false; } |
487 | 487 |
488 bool hasUnsplittableScrollingOverflow() const; | 488 bool hasUnsplittableScrollingOverflow() const; |
489 bool isUnsplittableForPagination() const; | 489 bool isUnsplittableForPagination() const; |
490 | 490 |
491 virtual LayoutRect localCaretRect(InlineBox*, int caretOffset, LayoutUnit* e
xtraWidthToEndOfLine = 0); | 491 virtual LayoutRect localCaretRect(InlineBox*, int caretOffset, LayoutUnit* e
xtraWidthToEndOfLine = 0) OVERRIDE; |
492 | 492 |
493 virtual LayoutRect overflowClipRect(const LayoutPoint& location, RenderRegio
n*, OverlayScrollbarSizeRelevancy = IgnoreOverlayScrollbarSize); | 493 virtual LayoutRect overflowClipRect(const LayoutPoint& location, RenderRegio
n*, OverlayScrollbarSizeRelevancy = IgnoreOverlayScrollbarSize); |
494 LayoutRect clipRect(const LayoutPoint& location, RenderRegion*); | 494 LayoutRect clipRect(const LayoutPoint& location, RenderRegion*); |
495 virtual bool hasControlClip() const { return false; } | 495 virtual bool hasControlClip() const { return false; } |
496 virtual LayoutRect controlClipRect(const LayoutPoint&) const { return Layout
Rect(); } | 496 virtual LayoutRect controlClipRect(const LayoutPoint&) const { return Layout
Rect(); } |
497 bool pushContentsClip(PaintInfo&, const LayoutPoint& accumulatedOffset, Cont
entsClipBehavior); | 497 bool pushContentsClip(PaintInfo&, const LayoutPoint& accumulatedOffset, Cont
entsClipBehavior); |
498 void popContentsClip(PaintInfo&, PaintPhase originalPhase, const LayoutPoint
& accumulatedOffset); | 498 void popContentsClip(PaintInfo&, PaintPhase originalPhase, const LayoutPoint
& accumulatedOffset); |
499 | 499 |
500 virtual void paintObject(PaintInfo&, const LayoutPoint&) { ASSERT_NOT_REACHE
D(); } | 500 virtual void paintObject(PaintInfo&, const LayoutPoint&) { ASSERT_NOT_REACHE
D(); } |
501 virtual void paintBoxDecorations(PaintInfo&, const LayoutPoint&); | 501 virtual void paintBoxDecorations(PaintInfo&, const LayoutPoint&); |
502 virtual void paintMask(PaintInfo&, const LayoutPoint&); | 502 virtual void paintMask(PaintInfo&, const LayoutPoint&); |
503 virtual void paintClippingMask(PaintInfo&, const LayoutPoint&); | 503 virtual void paintClippingMask(PaintInfo&, const LayoutPoint&); |
504 virtual void imageChanged(WrappedImagePtr, const IntRect* = 0); | 504 virtual void imageChanged(WrappedImagePtr, const IntRect* = 0) OVERRIDE; |
505 | 505 |
506 // Called when a positioned object moves but doesn't necessarily change size
. A simplified layout is attempted | 506 // Called when a positioned object moves but doesn't necessarily change size
. A simplified layout is attempted |
507 // that just updates the object's position. If the size does change, the obj
ect remains dirty. | 507 // that just updates the object's position. If the size does change, the obj
ect remains dirty. |
508 bool tryLayoutDoingPositionedMovementOnly() | 508 bool tryLayoutDoingPositionedMovementOnly() |
509 { | 509 { |
510 LayoutUnit oldWidth = width(); | 510 LayoutUnit oldWidth = width(); |
511 updateLogicalWidth(); | 511 updateLogicalWidth(); |
512 // If we shrink to fit our width may have changed, so we still need full
layout. | 512 // If we shrink to fit our width may have changed, so we still need full
layout. |
513 if (oldWidth != width()) | 513 if (oldWidth != width()) |
514 return false; | 514 return false; |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
606 return ShapeOutsideInfo::isEnabledFor(this) ? ShapeOutsideInfo::info(thi
s) : 0; | 606 return ShapeOutsideInfo::isEnabledFor(this) ? ShapeOutsideInfo::info(thi
s) : 0; |
607 } | 607 } |
608 | 608 |
609 void markShapeOutsideDependentsForLayout() | 609 void markShapeOutsideDependentsForLayout() |
610 { | 610 { |
611 if (isFloating()) | 611 if (isFloating()) |
612 removeFloatingOrPositionedChildFromBlockLists(); | 612 removeFloatingOrPositionedChildFromBlockLists(); |
613 } | 613 } |
614 | 614 |
615 protected: | 615 protected: |
616 virtual void willBeDestroyed(); | 616 virtual void willBeDestroyed() OVERRIDE; |
617 | 617 |
618 virtual void styleWillChange(StyleDifference, const RenderStyle* newStyle); | 618 virtual void styleWillChange(StyleDifference, const RenderStyle* newStyle) O
VERRIDE; |
619 virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); | 619 virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle) OV
ERRIDE; |
620 virtual void updateFromStyle() OVERRIDE; | 620 virtual void updateFromStyle() OVERRIDE; |
621 | 621 |
622 LayoutRect backgroundPaintedExtent() const; | 622 LayoutRect backgroundPaintedExtent() const; |
623 virtual bool foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect,
unsigned maxDepthToTest) const; | 623 virtual bool foregroundIsKnownToBeOpaqueInRect(const LayoutRect& localRect,
unsigned maxDepthToTest) const; |
624 virtual bool computeBackgroundIsKnownToBeObscured() OVERRIDE; | 624 virtual bool computeBackgroundIsKnownToBeObscured() OVERRIDE; |
625 | 625 |
626 virtual void paintBackgroundWithBorderAndBoxShadow(PaintInfo&, const LayoutR
ect&, BackgroundBleedAvoidance); | 626 void paintBackgroundWithBorderAndBoxShadow(PaintInfo&, const LayoutRect&, Ba
ckgroundBleedAvoidance); |
627 void paintBackground(const PaintInfo&, const LayoutRect&, BackgroundBleedAvo
idance = BackgroundBleedNone); | 627 void paintBackground(const PaintInfo&, const LayoutRect&, BackgroundBleedAvo
idance = BackgroundBleedNone); |
628 | 628 |
629 void paintFillLayer(const PaintInfo&, const Color&, const FillLayer*, const
LayoutRect&, BackgroundBleedAvoidance, CompositeOperator, RenderObject* backgrou
ndObject); | 629 void paintFillLayer(const PaintInfo&, const Color&, const FillLayer*, const
LayoutRect&, BackgroundBleedAvoidance, CompositeOperator, RenderObject* backgrou
ndObject); |
630 void paintFillLayers(const PaintInfo&, const Color&, const FillLayer*, const
LayoutRect&, BackgroundBleedAvoidance = BackgroundBleedNone, CompositeOperator
= CompositeSourceOver, RenderObject* backgroundObject = 0); | 630 void paintFillLayers(const PaintInfo&, const Color&, const FillLayer*, const
LayoutRect&, BackgroundBleedAvoidance = BackgroundBleedNone, CompositeOperator
= CompositeSourceOver, RenderObject* backgroundObject = 0); |
631 | 631 |
632 void paintMaskImages(const PaintInfo&, const LayoutRect&); | 632 void paintMaskImages(const PaintInfo&, const LayoutRect&); |
633 void paintBoxDecorationsWithRect(PaintInfo&, const LayoutPoint&, const Layou
tRect&); | 633 void paintBoxDecorationsWithRect(PaintInfo&, const LayoutPoint&, const Layou
tRect&); |
634 | 634 |
635 BackgroundBleedAvoidance determineBackgroundBleedAvoidance(GraphicsContext*)
const; | 635 BackgroundBleedAvoidance determineBackgroundBleedAvoidance(GraphicsContext*)
const; |
636 bool backgroundHasOpaqueTopLayer() const; | 636 bool backgroundHasOpaqueTopLayer() const; |
637 | 637 |
638 void computePositionedLogicalWidth(LogicalExtentComputedValues&, RenderRegio
n* = 0) const; | 638 void computePositionedLogicalWidth(LogicalExtentComputedValues&, RenderRegio
n* = 0) const; |
639 | 639 |
640 LayoutUnit computeIntrinsicLogicalWidthUsing(Length logicalWidthLength, Layo
utUnit availableLogicalWidth, LayoutUnit borderAndPadding) const; | 640 LayoutUnit computeIntrinsicLogicalWidthUsing(Length logicalWidthLength, Layo
utUnit availableLogicalWidth, LayoutUnit borderAndPadding) const; |
641 LayoutUnit computeIntrinsicLogicalContentHeightUsing(Length logicalHeightLen
gth, LayoutUnit intrinsicContentHeight, LayoutUnit borderAndPadding) const; | 641 LayoutUnit computeIntrinsicLogicalContentHeightUsing(Length logicalHeightLen
gth, LayoutUnit intrinsicContentHeight, LayoutUnit borderAndPadding) const; |
642 | 642 |
643 virtual bool shouldComputeSizeAsReplaced() const { return isReplaced() && !i
sInlineBlockOrInlineTable(); } | 643 virtual bool shouldComputeSizeAsReplaced() const { return isReplaced() && !i
sInlineBlockOrInlineTable(); } |
644 | 644 |
645 virtual void mapLocalToContainer(const RenderLayerModelObject* repaintContai
ner, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed =
0) const OVERRIDE; | 645 virtual void mapLocalToContainer(const RenderLayerModelObject* repaintContai
ner, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed =
0) const OVERRIDE; |
646 virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) c
onst; | 646 virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) c
onst OVERRIDE; |
647 | 647 |
648 void paintRootBoxFillLayers(const PaintInfo&); | 648 void paintRootBoxFillLayers(const PaintInfo&); |
649 | 649 |
650 RenderObject* splitAnonymousBoxesAroundChild(RenderObject* beforeChild); | 650 RenderObject* splitAnonymousBoxesAroundChild(RenderObject* beforeChild); |
651 | 651 |
652 virtual void addLayerHitTestRects(LayerHitTestRects&, const RenderLayer* cur
rentCompositedLayer, const LayoutPoint& layerOffset, const LayoutRect& container
Rect) const OVERRIDE; | 652 virtual void addLayerHitTestRects(LayerHitTestRects&, const RenderLayer* cur
rentCompositedLayer, const LayoutPoint& layerOffset, const LayoutRect& container
Rect) const OVERRIDE; |
653 virtual void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint&
layerOffset) const OVERRIDE; | 653 virtual void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint&
layerOffset) const OVERRIDE; |
654 | 654 |
655 private: | 655 private: |
656 void updateShapeOutsideInfoAfterStyleChange(const RenderStyle&, const Render
Style* oldStyle); | 656 void updateShapeOutsideInfoAfterStyleChange(const RenderStyle&, const Render
Style* oldStyle); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
757 if (UNLIKELY(m_inlineBoxWrapper != 0)) | 757 if (UNLIKELY(m_inlineBoxWrapper != 0)) |
758 deleteLineBoxWrapper(); | 758 deleteLineBoxWrapper(); |
759 } | 759 } |
760 | 760 |
761 m_inlineBoxWrapper = boxWrapper; | 761 m_inlineBoxWrapper = boxWrapper; |
762 } | 762 } |
763 | 763 |
764 } // namespace WebCore | 764 } // namespace WebCore |
765 | 765 |
766 #endif // RenderBox_h | 766 #endif // RenderBox_h |
OLD | NEW |