Changeset 142527 in webkit
- Timestamp:
- Feb 11, 2013 3:17:12 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r142526 r142527 1 2013-02-11 Bem Jones-Bey <bjonesbe@adobe.com> 2 3 [CSS Exclusions] Handle shape-outside changing a float's overhang behavior 4 https://bugs.webkit.org/show_bug.cgi?id=106927 5 6 Reviewed by Julien Chaffraix. 7 8 This is also tested by the existing tests for shape outside on floats positioning. 9 10 * fast/exclusions/shape-outside-floats/shape-outside-floats-overhang-expected.html: Added. 11 * fast/exclusions/shape-outside-floats/shape-outside-floats-overhang.html: Added. 12 1 13 2013-02-11 Tim Horton <timothy_horton@apple.com> 2 14 -
trunk/Source/WebCore/ChangeLog
r142526 r142527 1 2013-02-11 Bem Jones-Bey <bjonesbe@adobe.com> 2 3 [CSS Exclusions] Handle shape-outside changing a float's overhang behavior 4 https://bugs.webkit.org/show_bug.cgi?id=106927 5 6 Reviewed by Julien Chaffraix. 7 8 When the position on a shape outside causes a float to spill out into 9 another block than it's container, it was not being drawn correctly. It 10 became apparent that in order to fix this properly, the approach to 11 positioning shape outsides and floats needed to be changed. The new 12 approach also fixes some other outstanding issues, like hit detection. 13 14 When a float has a shape outside, inline and float layout happens 15 using the exclusion shape bounds instead of the float's box. The 16 effect of this is that the float itself no longer has any effect on 17 layout, both with respect to positioning of the float's siblings as 18 well as positioning the float's box. This means that when the float is 19 positioned, it is the shape's box that must obey the positioning rules 20 for floats. When the shape is given a position relative to the float's 21 box, the rules for float positioning determine where the shape sits 22 in the parent, causing the float's box to be offset by the position of 23 the shape. Since the float's box does not affect layout (due to the 24 shape), this is similar to relative positioning in that the offset is 25 a paint time occurrence. 26 27 So the new approach is to implement positioning of shape outside on 28 floats similar to how relative positioning is implemented, using a 29 RenderLayer. 30 31 This is also tested by the existing tests for shape outside on floats positioning. 32 33 Test: fast/exclusions/shape-outside-floats/shape-outside-floats-overhang.html 34 35 * rendering/ExclusionShapeOutsideInfo.h: 36 (WebCore::ExclusionShapeOutsideInfo::shapeLogicalOffset): Utility method to create a LayoutSize for computing the layer offset. 37 (ExclusionShapeOutsideInfo): 38 * rendering/LayoutState.cpp: 39 (WebCore::LayoutState::LayoutState): Check for floats with shape outside as well as in flow positioning. 40 * rendering/RenderBlock.cpp: 41 (WebCore::RenderBlock::flipFloatForWritingModeForChild): Remove old positioning implementation. 42 (WebCore::RenderBlock::paintFloats): Remove old positioning implementation. 43 (WebCore::RenderBlock::blockSelectionGaps): Check for floats with shape outside as well as in flow positioning. 44 (WebCore::RenderBlock::positionNewFloats): Remove old positioning implementation. 45 (WebCore::RenderBlock::addOverhangingFloats): Remove FIXME. 46 (WebCore::positionForPointRespectingEditingBoundaries): Check for floats with shape outside as well as in flow positioning. 47 * rendering/RenderBlock.h: 48 (RenderBlock): Remove old positioning implementation. 49 (WebCore::RenderBlock::xPositionForFloatIncludingMargin): Remove old positioning implementation. 50 (WebCore::RenderBlock::yPositionForFloatIncludingMargin): Remove old positioning implementation. 51 * rendering/RenderBox.cpp: 52 (WebCore::RenderBox::mapLocalToContainer): Check for floats with shape outside as well as in flow positioning. 53 (WebCore::RenderBox::offsetFromContainer): Check for floats with shape outside as well as in flow positioning. 54 (WebCore::RenderBox::computeRectForRepaint): Check for floats with shape outside as well as in flow positioning. 55 (WebCore::RenderBox::layoutOverflowRectForPropagation): Check for floats with shape outside as well as in flow positioning. 56 * rendering/RenderBox.h: Make floats with shape outside get a layer. 57 * rendering/RenderBoxModelObject.cpp: 58 (WebCore::RenderBoxModelObject::paintOffset): Method to return in flow 59 positioning offset + offset from shape outside on floats. 60 * rendering/RenderBoxModelObject.h: 61 (RenderBoxModelObject): Add paintOffset method. 62 * rendering/RenderInline.cpp: 63 (WebCore::RenderInline::clippedOverflowRectForRepaint): Check for floats with shape outside as well as in flow positioning. 64 (WebCore::RenderInline::computeRectForRepaint): Check for floats with shape outside as well as in flow positioning. 65 (WebCore::RenderInline::mapLocalToContainer): Check for floats with shape outside as well as in flow positioning. 66 * rendering/RenderLayer.cpp: 67 (WebCore::RenderLayer::updateLayerPosition): Check for floats with shape outside as well as in flow positioning. 68 (WebCore::RenderLayer::calculateClipRects): Check for floats with shape outside as well as in flow positioning. 69 * rendering/RenderLayer.h: 70 (WebCore::RenderLayer::paintOffset): Rename offsetForInFlowPosition to reflect that it's not just for 71 in flow positioning, it also reflects shape outside position on floats. 72 (RenderLayer): 73 * rendering/RenderObject.h: 74 (WebCore::RenderObject::hasPaintOffset): Determines if this object is in flow positioined or is a float with shape outside. 75 * rendering/style/RenderStyle.h: Add hasPaintOffset method, analagous to method with same name on RenderObject. 76 1 77 2013-02-11 Tim Horton <timothy_horton@apple.com> 2 78 -
trunk/Source/WebCore/rendering/ExclusionShapeOutsideInfo.h
r140978 r142527 34 34 35 35 #include "ExclusionShapeInfo.h" 36 #include "LayoutSize.h" 36 37 37 38 namespace WebCore { … … 41 42 class ExclusionShapeOutsideInfo : public ExclusionShapeInfo<RenderBox, &RenderStyle::shapeOutside>, public MappedInfo<RenderBox, ExclusionShapeOutsideInfo> { 42 43 public: 44 LayoutSize shapeLogicalOffset() const 45 { 46 return LayoutSize(shapeLogicalLeft(), shapeLogicalTop()); 47 } 48 43 49 static PassOwnPtr<ExclusionShapeOutsideInfo> createInfo(const RenderBox* renderer) { return adoptPtr(new ExclusionShapeOutsideInfo(renderer)); } 44 50 static bool isEnabledFor(const RenderBox*); -
trunk/Source/WebCore/rendering/LayoutState.cpp
r138040 r142527 66 66 m_layoutOffset = m_paintOffset; 67 67 68 if (renderer-> isInFlowPositioned() && renderer->hasLayer())69 m_paintOffset += renderer->layer()-> offsetForInFlowPosition();68 if (renderer->hasPaintOffset() && renderer->hasLayer()) 69 m_paintOffset += renderer->layer()->paintOffset(); 70 70 71 71 m_clipped = !fixed && prev->m_clipped; -
trunk/Source/WebCore/rendering/RenderBlock.cpp
r142042 r142527 3128 3128 } 3129 3129 3130 LayoutPoint RenderBlock::flipFloatForWritingModeForChild(const FloatingObject* child, const LayoutPoint& point , FloatRenderingState renderingState) const3130 LayoutPoint RenderBlock::flipFloatForWritingModeForChild(const FloatingObject* child, const LayoutPoint& point) const 3131 3131 { 3132 3132 if (!style()->isFlippedBlocksWritingMode()) … … 3137 3137 // case. 3138 3138 if (isHorizontalWritingMode()) 3139 return LayoutPoint(point.x(), point.y() + height() - child->renderer()->height() - 2 * yPositionForFloatIncludingMargin(child , renderingState));3140 return LayoutPoint(point.x() + width() - child->renderer()->width() - 2 * xPositionForFloatIncludingMargin(child , renderingState), point.y());3139 return LayoutPoint(point.x(), point.y() + height() - child->renderer()->height() - 2 * yPositionForFloatIncludingMargin(child)); 3140 return LayoutPoint(point.x() + width() - child->renderer()->width() - 2 * xPositionForFloatIncludingMargin(child), point.y()); 3141 3141 } 3142 3142 … … 3154 3154 PaintInfo currentPaintInfo(paintInfo); 3155 3155 currentPaintInfo.phase = preservePhase ? paintInfo.phase : PaintPhaseBlockBackground; 3156 LayoutPoint childPoint = flipFloatForWritingModeForChild(r, LayoutPoint(paintOffset.x() + xPositionForFloatIncludingMargin(r , FloatPaint) - r->m_renderer->x(), paintOffset.y() + yPositionForFloatIncludingMargin(r, FloatPaint) - r->m_renderer->y()), FloatPaint);3156 LayoutPoint childPoint = flipFloatForWritingModeForChild(r, LayoutPoint(paintOffset.x() + xPositionForFloatIncludingMargin(r) - r->m_renderer->x(), paintOffset.y() + yPositionForFloatIncludingMargin(r) - r->m_renderer->y())); 3157 3157 r->m_renderer->paint(currentPaintInfo, childPoint); 3158 3158 if (!preservePhase) { … … 3485 3485 continue; // We must be a normal flow object in order to even be considered. 3486 3486 3487 if (curr-> isInFlowPositioned() && curr->hasLayer()) {3487 if (curr->hasPaintOffset() && curr->hasLayer()) { 3488 3488 // If the relposition offset is anything other than 0, then treat this just like an absolute positioned element. 3489 3489 // Just disregard it completely. 3490 LayoutSize relOffset = curr->layer()-> offsetForInFlowPosition();3490 LayoutSize relOffset = curr->layer()->paintOffset(); 3491 3491 if (relOffset.width() || relOffset.height()) 3492 3492 continue; … … 4014 4014 setLogicalLeftForFloat(floatingObject, floatLogicalLocation.x()); 4015 4015 4016 #if ENABLE(CSS_EXCLUSIONS) 4017 if (childBox->exclusionShapeOutsideInfo()) { 4018 // The CSS Exclusions specification says that the margins are ignored when a float has a shape outside. 4019 setLogicalLeftForChild(childBox, floatLogicalLocation.x() - childBox->exclusionShapeOutsideInfo()->shapeLogicalLeft()); 4020 setLogicalTopForChild(childBox, floatLogicalLocation.y() - childBox->exclusionShapeOutsideInfo()->shapeLogicalTop()); 4021 } else { 4022 #endif 4023 setLogicalLeftForChild(childBox, floatLogicalLocation.x() + childLogicalLeftMargin); 4024 setLogicalTopForChild(childBox, floatLogicalLocation.y() + marginBeforeForChild(childBox)); 4025 #if ENABLE(CSS_EXCLUSIONS) 4026 } 4027 #endif 4016 setLogicalLeftForChild(childBox, floatLogicalLocation.x() + childLogicalLeftMargin); 4017 setLogicalTopForChild(childBox, floatLogicalLocation.y() + marginBeforeForChild(childBox)); 4028 4018 4029 4019 LayoutState* layoutState = view()->layoutState(); … … 4054 4044 setLogicalLeftForFloat(floatingObject, floatLogicalLocation.x()); 4055 4045 4056 #if ENABLE(CSS_EXCLUSIONS) 4057 if (childBox->exclusionShapeOutsideInfo()) { 4058 // The CSS Exclusions specification says that the margins are ignored when a float has a shape outside. 4059 setLogicalLeftForChild(childBox, floatLogicalLocation.x() - childBox->exclusionShapeOutsideInfo()->shapeLogicalLeft()); 4060 setLogicalTopForChild(childBox, floatLogicalLocation.y() - childBox->exclusionShapeOutsideInfo()->shapeLogicalTop()); 4061 } else { 4062 #endif 4063 setLogicalLeftForChild(childBox, floatLogicalLocation.x() + childLogicalLeftMargin); 4064 setLogicalTopForChild(childBox, floatLogicalLocation.y() + marginBeforeForChild(childBox)); 4065 #if ENABLE(CSS_EXCLUSIONS) 4066 } 4067 #endif 4068 4046 setLogicalLeftForChild(childBox, floatLogicalLocation.x() + childLogicalLeftMargin); 4047 setLogicalTopForChild(childBox, floatLogicalLocation.y() + marginBeforeForChild(childBox)); 4069 4048 4070 4049 if (childBlock) … … 4559 4538 lowestFloatLogicalBottom = max(lowestFloatLogicalBottom, logicalBottom); 4560 4539 4561 // FIXME: Bug 106927 Handle situations where float and shape-outside overflow differently.4562 4540 if (logicalBottom > logicalHeight()) { 4563 4541 // If the object is not in the list, we add it now. … … 5038 5016 { 5039 5017 LayoutPoint childLocation = child->location(); 5040 if (child-> isInFlowPositioned())5041 childLocation += child-> offsetForInFlowPosition();5018 if (child->hasPaintOffset()) 5019 childLocation += child->paintOffset(); 5042 5020 5043 5021 // FIXME: This is wrong if the child's writing-mode is different from the parent's. -
trunk/Source/WebCore/rendering/RenderBlock.h
r142015 r142527 690 690 }; 691 691 692 // When a float has shape outside, it needs to be handled differently at 693 // paint time and at layout time, since the coordinates of the shape 694 // (affecting layout) and the coordinates of the float itself (affecting 695 // where the content of the float is) can be in different places. This enum 696 // is used to change behavior based on that state. 697 enum FloatRenderingState { FloatLayout, FloatPaint }; 698 699 LayoutPoint flipFloatForWritingModeForChild(const FloatingObject*, const LayoutPoint&, FloatRenderingState = FloatLayout) const; 692 LayoutPoint flipFloatForWritingModeForChild(const FloatingObject*, const LayoutPoint&) const; 700 693 701 694 LayoutUnit logicalTopForFloat(const FloatingObject* child) const { return isHorizontalWritingMode() ? child->y() : child->x(); } … … 739 732 } 740 733 741 LayoutUnit xPositionForFloatIncludingMargin(const FloatingObject* child , FloatRenderingState renderingState = FloatLayout) const734 LayoutUnit xPositionForFloatIncludingMargin(const FloatingObject* child) const 742 735 { 743 736 #if ENABLE(CSS_EXCLUSIONS) 744 737 ExclusionShapeOutsideInfo *shapeOutside = child->renderer()->exclusionShapeOutsideInfo(); 745 if (renderingState == FloatPaint && shapeOutside) 746 return child->x() - (isHorizontalWritingMode() ? shapeOutside->shapeLogicalLeft() : shapeOutside->shapeLogicalTop()); 747 // FIXME: Bug 106928 This needs to properly handle the margin for floats with shape-outside for non-paint time. 738 if (shapeOutside) 739 return child->x(); 748 740 #endif 749 741 … … 754 746 } 755 747 756 LayoutUnit yPositionForFloatIncludingMargin(const FloatingObject* child , FloatRenderingState renderingState = FloatLayout) const748 LayoutUnit yPositionForFloatIncludingMargin(const FloatingObject* child) const 757 749 { 758 750 #if ENABLE(CSS_EXCLUSIONS) 759 751 ExclusionShapeOutsideInfo *shapeOutside = child->renderer()->exclusionShapeOutsideInfo(); 760 if (renderingState == FloatPaint && shapeOutside) 761 return child->y() - (isHorizontalWritingMode() ? shapeOutside->shapeLogicalTop() : shapeOutside->shapeLogicalLeft()); 762 // FIXME: Bug 106928 This needs to properly handle the margin for floats with shape-outside. 752 if (shapeOutside) 753 return child->y(); 763 754 #endif 764 755 -
trunk/Source/WebCore/rendering/RenderBox.cpp
r142021 r142527 1606 1606 LayoutState* layoutState = v->layoutState(); 1607 1607 LayoutSize offset = layoutState->m_paintOffset + locationOffset(); 1608 if (style()->has InFlowPosition() && layer())1609 offset += layer()-> offsetForInFlowPosition();1608 if (style()->hasPaintOffset() && layer()) 1609 offset += layer()->paintOffset(); 1610 1610 transformState.move(offset); 1611 1611 return; … … 1719 1719 1720 1720 LayoutSize offset; 1721 if ( isInFlowPositioned())1722 offset += offsetForInFlowPosition();1721 if (hasPaintOffset()) 1722 offset += paintOffset(); 1723 1723 1724 1724 if (!isInline() || isReplaced()) { … … 1857 1857 1858 1858 // We can't trust the bits on RenderObject, because this might be called while re-resolving style. 1859 if (styleToUse->has InFlowPosition() && layer())1860 rect.move(layer()-> offsetForInFlowPosition());1859 if (styleToUse->hasPaintOffset() && layer()) 1860 rect.move(layer()->paintOffset()); 1861 1861 1862 1862 rect.moveBy(location()); … … 1902 1902 if (position == AbsolutePosition && o->isInFlowPositioned() && o->isRenderInline()) 1903 1903 topLeft += toRenderInline(o)->offsetForInFlowPositionedInline(this); 1904 else if ( (position == RelativePosition || position == StickyPosition) && layer()) {1904 else if (styleToUse->hasPaintOffset() && layer()) { 1905 1905 // Apply the relative position offset when invalidating a rectangle. The layer 1906 1906 // is translated, but the render box isn't, so we need to do this to get the 1907 1907 // right dirty rect. Since this is called from RenderObject::setStyle, the relative position 1908 1908 // flag on the RenderObject has been cleared, so use the one on the style(). 1909 topLeft += layer()-> offsetForInFlowPosition();1909 topLeft += layer()->paintOffset(); 1910 1910 } 1911 1911 … … 4264 4264 4265 4265 bool hasTransform = hasLayer() && layer()->transform(); 4266 if ( isInFlowPositioned() || hasTransform) {4266 if (hasPaintOffset() || hasTransform) { 4267 4267 // If we are relatively positioned or if we have a transform, then we have to convert 4268 4268 // this rectangle into physical coordinates, apply relative positioning and transforms … … 4273 4273 rect = layer()->currentTransform().mapRect(rect); 4274 4274 4275 if ( isInFlowPositioned())4276 rect.move( offsetForInFlowPosition());4275 if (hasPaintOffset()) 4276 rect.move(paintOffset()); 4277 4277 4278 4278 // Now we need to flip back. -
trunk/Source/WebCore/rendering/RenderBox.h
r141963 r142527 50 50 // hasAutoZIndex only returns true if the element is positioned or a flex-item since 51 51 // position:static elements that are not flex-items get their z-index coerced to auto. 52 virtual bool requiresLayer() const OVERRIDE { return isRoot() || isPositioned() || createsGroup() || hasClipPath() || hasOverflowClip() || hasTransform() || hasHiddenBackface() || hasReflection() || style()->specifiesColumns() || !style()->hasAutoZIndex() ; }52 virtual bool requiresLayer() const OVERRIDE { return isRoot() || isPositioned() || createsGroup() || hasClipPath() || hasOverflowClip() || hasTransform() || hasHiddenBackface() || hasReflection() || style()->specifiesColumns() || !style()->hasAutoZIndex() || (style()->shapeOutside() && isFloating()); } 53 53 54 54 // Use this with caution! No type checking is done! -
trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp
r141775 r142527 533 533 534 534 return LayoutSize(); 535 } 536 537 LayoutSize RenderBoxModelObject::paintOffset() const 538 { 539 LayoutSize offset = offsetForInFlowPosition(); 540 541 #if ENABLE(CSS_EXCLUSIONS) 542 if (isBox() && isFloating()) 543 if (ExclusionShapeOutsideInfo* shapeOutside = toRenderBox(this)->exclusionShapeOutsideInfo()) 544 offset -= shapeOutside->shapeLogicalOffset(); 545 #endif 546 547 return offset; 535 548 } 536 549 -
trunk/Source/WebCore/rendering/RenderBoxModelObject.h
r142015 r142527 71 71 72 72 LayoutSize offsetForInFlowPosition() const; 73 LayoutSize paintOffset() const; 73 74 74 75 // IE extensions. Used to calculate offsetWidth/Height. Overridden by inlines (RenderFlow) -
trunk/Source/WebCore/rendering/RenderInline.cpp
r142015 r142527 1013 1013 } 1014 1014 if (inlineFlow->style()->hasInFlowPosition() && inlineFlow->hasLayer()) 1015 repaintRect.move(toRenderInline(inlineFlow)->layer()-> offsetForInFlowPosition());1015 repaintRect.move(toRenderInline(inlineFlow)->layer()->paintOffset()); 1016 1016 } 1017 1017 … … 1060 1060 LayoutState* layoutState = v->layoutState(); 1061 1061 if (style()->hasInFlowPosition() && layer()) 1062 rect.move(layer()-> offsetForInFlowPosition());1062 rect.move(layer()->paintOffset()); 1063 1063 rect.move(layoutState->m_paintOffset); 1064 1064 if (layoutState->m_clipped) … … 1093 1093 // right dirty rect. Since this is called from RenderObject::setStyle, the relative or sticky position 1094 1094 // flag on the RenderObject has been cleared, so use the one on the style(). 1095 topLeft += layer()-> offsetForInFlowPosition();1095 topLeft += layer()->paintOffset(); 1096 1096 } 1097 1097 … … 1145 1145 LayoutSize offset = layoutState->m_paintOffset; 1146 1146 if (style()->hasInFlowPosition() && layer()) 1147 offset += layer()-> offsetForInFlowPosition();1147 offset += layer()->paintOffset(); 1148 1148 transformState.move(offset); 1149 1149 return; -
trunk/Source/WebCore/rendering/RenderLayer.cpp
r142195 r142527 1186 1186 1187 1187 bool positionOrOffsetChanged = false; 1188 if (renderer()-> isInFlowPositioned()) {1189 LayoutSize newOffset = toRenderBoxModelObject(renderer())-> offsetForInFlowPosition();1190 positionOrOffsetChanged = newOffset != m_ offsetForInFlowPosition;1191 m_ offsetForInFlowPosition= newOffset;1192 localPoint.move(m_ offsetForInFlowPosition);1188 if (renderer()->hasPaintOffset()) { 1189 LayoutSize newOffset = toRenderBoxModelObject(renderer())->paintOffset(); 1190 positionOrOffsetChanged = newOffset != m_paintOffset; 1191 m_paintOffset = newOffset; 1192 localPoint.move(m_paintOffset); 1193 1193 } else { 1194 m_ offsetForInFlowPosition= LayoutSize();1194 m_paintOffset = LayoutSize(); 1195 1195 } 1196 1196 … … 4600 4600 clipRects.setOverflowClipRect(clipRects.fixedClipRect()); 4601 4601 clipRects.setFixed(true); 4602 } else if (renderer()->style()->has InFlowPosition())4602 } else if (renderer()->style()->hasPaintOffset()) 4603 4603 clipRects.setPosClipRect(clipRects.overflowClipRect()); 4604 4604 else if (renderer()->style()->position() == AbsolutePosition) -
trunk/Source/WebCore/rendering/RenderLayer.h
r142057 r142527 426 426 #endif 427 427 428 const LayoutSize& offsetForInFlowPosition() const { return m_offsetForInFlowPosition; }428 const LayoutSize& paintOffset() const { return m_paintOffset; } 429 429 430 430 void clearClipRectsIncludingDescendants(ClipRectsType typeToClear = AllClipRectTypes); … … 1125 1125 LayoutRect m_outlineBox; 1126 1126 1127 // Our current relative position offset.1128 LayoutSize m_ offsetForInFlowPosition;1127 // Paint time offset only, it is used for properly paint relative / sticky positioned elements and exclusion boxes on floats. 1128 LayoutSize m_paintOffset; 1129 1129 1130 1130 // Our (x,y) coordinates are in our parent layer's coordinate space. -
trunk/Source/WebCore/rendering/RenderObject.h
r142056 r142527 526 526 bool isOutOfFlowPositioned() const { return m_bitfields.isOutOfFlowPositioned(); } // absolute or fixed positioning 527 527 bool isInFlowPositioned() const { return m_bitfields.isRelPositioned() || m_bitfields.isStickyPositioned(); } // relative or sticky positioning 528 bool hasPaintOffset() const 529 { 530 bool positioned = isInFlowPositioned(); 531 #if ENABLE(CSS_EXCLUSIONS) 532 // Shape outside on a float can reposition the float in much the 533 // same way as relative positioning, so treat it as such. 534 positioned = positioned || (m_bitfields.floating() && m_bitfields.isBox() && style()->shapeOutside()); 535 #endif 536 return positioned; 537 } 528 538 bool isRelPositioned() const { return m_bitfields.isRelPositioned(); } // relative positioning 529 539 bool isStickyPositioned() const { return m_bitfields.isStickyPositioned(); } -
trunk/Source/WebCore/rendering/style/RenderStyle.h
r142404 r142527 461 461 bool hasOutOfFlowPosition() const { return position() == AbsolutePosition || position() == FixedPosition; } 462 462 bool hasInFlowPosition() const { return position() == RelativePosition || position() == StickyPosition; } 463 bool hasPaintOffset() const 464 { 465 bool paintOffset = hasInFlowPosition(); 466 #if ENABLE(CSS_EXCLUSIONS) 467 paintOffset = paintOffset || (isFloating() && shapeOutside()); 468 #endif 469 return paintOffset; 470 } 463 471 bool hasViewportConstrainedPosition() const { return position() == FixedPosition || position() == StickyPosition; } 464 472 EFloat floating() const { return static_cast<EFloat>(noninherited_flags._floating); }
Note: See TracChangeset
for help on using the changeset viewer.