Changeset 172641 in webkit


Ignore:
Timestamp:
Aug 15, 2014 12:38:10 PM (10 years ago)
Author:
krit@webkit.org
Message:

Turn cx/cy to presentation attributes
https://bugs.webkit.org/show_bug.cgi?id=135975

Reviewed by Dean Jackson.

This follows the patch for width and height presentation attributes and
Source/WebCore:

turns x and y to presentation attributes as well:

http://trac.webkit.org/changeset/171341

Extended existing tests.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSParser.cpp:

(WebCore::isSimpleLengthPropertyID):

  • css/DeprecatedStyleBuilder.cpp:

(WebCore::DeprecatedStyleBuilder::DeprecatedStyleBuilder):

  • css/SVGCSSParser.cpp:

(WebCore::CSSParser::parseSVGValue):

  • css/SVGCSSPropertyNames.in:
  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • rendering/style/RenderStyle.h:
  • rendering/style/SVGRenderStyle.h:

(WebCore::SVGRenderStyle::setCx):
(WebCore::SVGRenderStyle::setCy):
(WebCore::SVGRenderStyle::cx):
(WebCore::SVGRenderStyle::cy):

  • rendering/style/SVGRenderStyleDefs.cpp:

(WebCore::StyleLayoutData::StyleLayoutData):
(WebCore::StyleLayoutData::operator==):

  • rendering/style/SVGRenderStyleDefs.h:
  • rendering/svg/RenderSVGEllipse.cpp:

(WebCore::RenderSVGEllipse::calculateRadiiAndCenter):

  • rendering/svg/SVGPathData.cpp:

(WebCore::updatePathFromCircleElement):
(WebCore::updatePathFromEllipseElement):

  • svg/SVGCircleElement.cpp:

(WebCore::SVGCircleElement::svgAttributeChanged):
(WebCore::SVGCircleElement::selfHasRelativeLengths): Deleted.

  • svg/SVGCircleElement.h:
  • svg/SVGElement.cpp:

(WebCore::populateAttributeNameToCSSPropertyIDMap):
(WebCore::populateCSSPropertyWithSVGDOMNameToAnimatedPropertyTypeMap):

  • svg/SVGEllipseElement.cpp:

(WebCore::SVGEllipseElement::svgAttributeChanged):
(WebCore::SVGEllipseElement::selfHasRelativeLengths): Deleted.

  • svg/SVGEllipseElement.h:

LayoutTests:

turns cx and cy to presentation attributes as well:

http://trac.webkit.org/changeset/171341

  • svg/css/parse-length-expected.txt:
  • svg/css/parse-length.html:
  • transitions/svg-layout-transition-expected.txt:
  • transitions/svg-layout-transition.html:
Location:
trunk
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r172619 r172641  
     12014-08-15  Dirk Schulze  <krit@webkit.org>
     2
     3        Turn cx/cy to presentation attributes
     4        https://bugs.webkit.org/show_bug.cgi?id=135975
     5
     6        Reviewed by Dean Jackson.
     7
     8        This follows the patch for width and height presentation attributes and
     9        turns cx and cy to presentation attributes as well:
     10
     11        ​http://trac.webkit.org/changeset/171341
     12
     13        * svg/css/parse-length-expected.txt:
     14        * svg/css/parse-length.html:
     15        * transitions/svg-layout-transition-expected.txt:
     16        * transitions/svg-layout-transition.html:
     17
    1182014-08-14  Benjamin Poulain  <benjamin@webkit.org>
    219
  • trunk/LayoutTests/svg/css/parse-length-expected.txt

    r171592 r172641  
    2626
    2727
     28PASS computedStyle("cx", "  100") is "100px"
     29PASS computedStyle("cx", "100   ") is "100px"
     30PASS computedStyle("cx", "100px") is "100px"
     31PASS computedStyle("cx", "1em") is "16px"
     32PASS computedStyle("cx", "1ex") is "12.800000190734863px"
     33PASS computedStyle("cx", "20%") is "20%"
     34PASS computedStyle("cx", "-200px") is "-200px"
     35PASS computedStyle("cy", "  100") is "100px"
     36PASS computedStyle("cy", "100   ") is "100px"
     37PASS computedStyle("cy", "100px") is "100px"
     38PASS computedStyle("cy", "1em") is "16px"
     39PASS computedStyle("cy", "1ex") is "12.800000190734863px"
     40PASS computedStyle("cy", "20%") is "20%"
     41PASS computedStyle("cy", "-200px") is "-200px"
    2842PASS computedStyle("width", "auto") is "auto"
    2943PASS computedStyle("width", "  100") is "100px"
     
    4761PASS computedStyle("y", "20%") is "20%"
    4862PASS computedStyle("y", "-200px") is "-200px"
     63PASS computedStyle("cx", "auto") is "0px"
     64PASS computedStyle("cx", "100   px") is "0px"
     65PASS computedStyle("cx", "100px;") is "0px"
     66PASS computedStyle("cx", "100px !important") is "0px"
     67PASS computedStyle("cx", "{ 100px }") is "0px"
     68PASS computedStyle("cy", "auto") is "0px"
     69PASS computedStyle("cy", "100   px") is "0px"
     70PASS computedStyle("cy", "100px;") is "0px"
     71PASS computedStyle("cy", "100px !important") is "0px"
     72PASS computedStyle("cy", "{ 100px }") is "0px"
    4973PASS computedStyle("width", "100   px") is "auto"
    5074PASS computedStyle("width", "100px;") is "auto"
  • trunk/LayoutTests/svg/css/parse-length.html

    r171591 r172641  
    3333}
    3434
     35// Test 'cx'.
     36testComputed("cx", "  100", "100px");
     37testComputed("cx", "100   ", "100px");
     38testComputed("cx", "100px", "100px");
     39testComputed("cx", "1em", "16px");
     40testComputed("cx", "1ex", "12.800000190734863px");
     41testComputed("cx", "20%", "20%");
     42testComputed("cx", "-200px", "-200px");
     43
     44// Test 'cx'.
     45testComputed("cy", "  100", "100px");
     46testComputed("cy", "100   ", "100px");
     47testComputed("cy", "100px", "100px");
     48testComputed("cy", "1em", "16px");
     49testComputed("cy", "1ex", "12.800000190734863px");
     50testComputed("cy", "20%", "20%");
     51testComputed("cy", "-200px", "-200px");
     52
    3553// Test 'width'.
    3654testComputed("width", "auto", "auto");
     
    6381testComputed("y", "-200px", "-200px");
    6482
     83// Negative tests for 'cx'.
     84negativeTestZero("cx", "auto", "auto");
     85negativeTestZero("cx", "100   px");
     86negativeTestZero("cx", "100px;");
     87negativeTestZero("cx", "100px !important");
     88negativeTestZero("cx", "{ 100px }");
     89
     90// Negative tests for 'cy'.
     91negativeTestZero("cy", "auto");
     92negativeTestZero("cy", "100   px");
     93negativeTestZero("cy", "100px;");
     94negativeTestZero("cy", "100px !important");
     95negativeTestZero("cy", "{ 100px }");
     96
    6597// Negative tests for 'width'.
    6698negativeTest("width", "100   px");
  • trunk/LayoutTests/transitions/svg-layout-transition-expected.txt

    r171591 r172641  
     1PASS - "cx" property for "cx" element at 0.5s saw something close to: 150
     2PASS - "cy" property for "cy" element at 0.5s saw something close to: 150
    13PASS - "x" property for "x" element at 0.5s saw something close to: 150
    24PASS - "y" property for "y" element at 0.5s saw something close to: 150
  • trunk/LayoutTests/transitions/svg-layout-transition.html

    r171591 r172641  
    77      -webkit-transition-duration: 1s;
    88      -webkit-transition-timing-function: linear;
     9    }
     10   
     11    #cx {
     12      -webkit-transition-property: cx;
     13    }
     14    #cx.final {
     15      cx: 200px;
     16    }
     17
     18    #cy {
     19      -webkit-transition-property: cy;
     20    }
     21    #cy.final {
     22      cy: 200px;
    923    }
    1024   
     
    4357    const expectedValues = [
    4458      // [time, element-id, property, expected-value, tolerance]
     59      [0.5, 'cx', 'cx', 150, 20],
     60      [0.5, 'cy', 'cy', 150, 20],
    4561      [0.5, 'x', 'x', 150, 20],
    4662      [0.5, 'y', 'y', 150, 20],
     
    5167    function setupTest()
    5268    {
     69      document.getElementById('cx').setAttribute('class', 'init final');
     70      document.getElementById('cy').setAttribute('class', 'init final');
    5371      document.getElementById('x').setAttribute('class', 'init final');
    5472      document.getElementById('y').setAttribute('class', 'init final');
     
    6280<body>
    6381  <svg>
     82    <circle cx="100" cy="100" r="100" class="init" id="cx"/>
     83    <circle cx="100" cy="100" r="100" class="init" id="cy"/>
    6484    <rect x="100" y="100" width="100" height="100" class="init" id="x"/>
    6585    <rect x="100" y="100" width="100" height="100" class="init" id="y"/>
  • trunk/Source/WebCore/ChangeLog

    r172626 r172641  
     12014-08-15  Dirk Schulze  <krit@webkit.org>
     2
     3        Turn cx/cy to presentation attributes
     4        https://bugs.webkit.org/show_bug.cgi?id=135975
     5
     6        Reviewed by Dean Jackson.
     7
     8        This follows the patch for width and height presentation attributes and
     9        turns x and y to presentation attributes as well:
     10
     11        ​http://trac.webkit.org/changeset/171341
     12
     13        Extended existing tests.
     14
     15        * css/CSSComputedStyleDeclaration.cpp:
     16        (WebCore::ComputedStyleExtractor::propertyValue):
     17        * css/CSSParser.cpp:
     18        (WebCore::isSimpleLengthPropertyID):
     19        * css/DeprecatedStyleBuilder.cpp:
     20        (WebCore::DeprecatedStyleBuilder::DeprecatedStyleBuilder):
     21        * css/SVGCSSParser.cpp:
     22        (WebCore::CSSParser::parseSVGValue):
     23        * css/SVGCSSPropertyNames.in:
     24        * page/animation/CSSPropertyAnimation.cpp:
     25        (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):
     26        * rendering/style/RenderStyle.h:
     27        * rendering/style/SVGRenderStyle.h:
     28        (WebCore::SVGRenderStyle::setCx):
     29        (WebCore::SVGRenderStyle::setCy):
     30        (WebCore::SVGRenderStyle::cx):
     31        (WebCore::SVGRenderStyle::cy):
     32        * rendering/style/SVGRenderStyleDefs.cpp:
     33        (WebCore::StyleLayoutData::StyleLayoutData):
     34        (WebCore::StyleLayoutData::operator==):
     35        * rendering/style/SVGRenderStyleDefs.h:
     36        * rendering/svg/RenderSVGEllipse.cpp:
     37        (WebCore::RenderSVGEllipse::calculateRadiiAndCenter):
     38        * rendering/svg/SVGPathData.cpp:
     39        (WebCore::updatePathFromCircleElement):
     40        (WebCore::updatePathFromEllipseElement):
     41        * svg/SVGCircleElement.cpp:
     42        (WebCore::SVGCircleElement::svgAttributeChanged):
     43        (WebCore::SVGCircleElement::selfHasRelativeLengths): Deleted.
     44        * svg/SVGCircleElement.h:
     45        * svg/SVGElement.cpp:
     46        (WebCore::populateAttributeNameToCSSPropertyIDMap):
     47        (WebCore::populateCSSPropertyWithSVGDOMNameToAnimatedPropertyTypeMap):
     48        * svg/SVGEllipseElement.cpp:
     49        (WebCore::SVGEllipseElement::svgAttributeChanged):
     50        (WebCore::SVGEllipseElement::selfHasRelativeLengths): Deleted.
     51        * svg/SVGEllipseElement.h:
     52
    1532014-08-15  Adenilson Cavalcanti  <cavalcantii@gmail.com>
    254
  • trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp

    r172536 r172641  
    405405    CSSPropertyClipPath,
    406406    CSSPropertyClipRule,
     407    CSSPropertyCx,
     408    CSSPropertyCy,
    407409    CSSPropertyMask,
    408410    CSSPropertyFilter,
     
    29672969
    29682970        // New positioning properties for SVG.
     2971        case CSSPropertyCx:
     2972            return zoomAdjustedPixelValueForLength(style->svgStyle().cx(), style.get());
     2973        case CSSPropertyCy:
     2974            return zoomAdjustedPixelValueForLength(style->svgStyle().cy(), style.get());
    29692975        case CSSPropertyX:
    29702976            return zoomAdjustedPixelValueForLength(style->svgStyle().x(), style.get());
  • trunk/Source/WebCore/css/CSSParser.cpp

    r172536 r172641  
    563563#endif
    564564    case CSSPropertyBottom:
     565    case CSSPropertyCx:
     566    case CSSPropertyCy:
    565567    case CSSPropertyLeft:
    566568    case CSSPropertyMarginBottom:
  • trunk/Source/WebCore/css/DeprecatedStyleBuilder.cpp

    r171871 r172641  
    25952595    setPropertyHandler(CSSPropertyWordWrap, ApplyPropertyDefault<EOverflowWrap, &RenderStyle::overflowWrap, EOverflowWrap, &RenderStyle::setOverflowWrap, EOverflowWrap, &RenderStyle::initialOverflowWrap>::createHandler());
    25962596
     2597    setPropertyHandler(CSSPropertyCx, ApplyPropertyLength<&RenderStyle::cx, &RenderStyle::setCx, &RenderStyle::initialZeroLength>::createHandler());
     2598    setPropertyHandler(CSSPropertyCy, ApplyPropertyLength<&RenderStyle::cy, &RenderStyle::setCy, &RenderStyle::initialZeroLength>::createHandler());
    25972599    setPropertyHandler(CSSPropertyX, ApplyPropertyLength<&RenderStyle::x, &RenderStyle::setX, &RenderStyle::initialZeroLength>::createHandler());
    25982600    setPropertyHandler(CSSPropertyY, ApplyPropertyLength<&RenderStyle::y, &RenderStyle::setY, &RenderStyle::initialZeroLength>::createHandler());
  • trunk/Source/WebCore/css/SVGCSSParser.cpp

    r172536 r172641  
    300300        return true;
    301301    }
     302    case CSSPropertyCx:
     303    case CSSPropertyCy:
    302304    case CSSPropertyX:
    303305    case CSSPropertyY:
  • trunk/Source/WebCore/css/SVGCSSPropertyNames.in

    r171591 r172641  
    5353-webkit-svg-shadow
    5454
     55cx
     56cy
    5557x
    5658y
  • trunk/Source/WebCore/page/animation/CSSPropertyAnimation.cpp

    r171960 r172641  
    12571257        new PropertyWrapper<float>(CSSPropertyStrokeMiterlimit, &RenderStyle::strokeMiterLimit, &RenderStyle::setStrokeMiterLimit),
    12581258
     1259        new LengthPropertyWrapper<Length>(CSSPropertyCx, &RenderStyle::cx, &RenderStyle::setCx),
     1260        new LengthPropertyWrapper<Length>(CSSPropertyCy, &RenderStyle::cy, &RenderStyle::setCy),
    12591261        new LengthPropertyWrapper<Length>(CSSPropertyX, &RenderStyle::x, &RenderStyle::setX),
    12601262        new LengthPropertyWrapper<Length>(CSSPropertyY, &RenderStyle::y, &RenderStyle::setY),
  • trunk/Source/WebCore/rendering/style/RenderStyle.h

    r172192 r172641  
    16661666    void setStrokeMiterLimit(float f) { accessSVGStyle().setStrokeMiterLimit(f); }
    16671667
     1668    const Length& cx() const { return svgStyle().cx(); }
     1669    void setCx(Length cx) { accessSVGStyle().setCx(cx); }
     1670    const Length& cy() const { return svgStyle().cy(); }
     1671    void setCy(Length cy) { accessSVGStyle().setCy(cy); }
    16681672    const Length& x() const { return svgStyle().x(); }
    16691673    void setX(Length x) { accessSVGStyle().setX(x); }
  • trunk/Source/WebCore/rendering/style/SVGRenderStyle.h

    r171591 r172641  
    147147    void setMaskType(EMaskType val) { svg_noninherited_flags.f.maskType = val; }
    148148    void setPaintOrder(PaintOrder val) { svg_inherited_flags.paintOrder = val; }
     149    void setCx(const Length& obj)
     150    {
     151        if (!(layout->cx == obj))
     152            layout.access()->cx = obj;
     153    }
     154    void setCy(const Length& obj)
     155    {
     156        if (!(layout->cy == obj))
     157            layout.access()->cy = obj;
     158    }
    149159    void setX(const Length& obj)
    150160    {
     
    354364    SVGLength baselineShiftValue() const { return misc->baselineShiftValue; }
    355365    ShadowData* shadow() const { return shadowSVG->shadow.get(); }
     366    const Length& cx() const { return layout->cx; }
     367    const Length& cy() const { return layout->cy; }
    356368    const Length& x() const { return layout->x; }
    357369    const Length& y() const { return layout->y; }
  • trunk/Source/WebCore/rendering/style/SVGRenderStyleDefs.cpp

    r171591 r172641  
    279279
    280280StyleLayoutData::StyleLayoutData()
    281     : x(RenderStyle::initialZeroLength())
     281    : cx(RenderStyle::initialZeroLength())
     282    , cy(RenderStyle::initialZeroLength())
     283    , x(RenderStyle::initialZeroLength())
    282284    , y(RenderStyle::initialZeroLength())
    283285{
     
    286288inline StyleLayoutData::StyleLayoutData(const StyleLayoutData& other)
    287289    : RefCounted<StyleLayoutData>()
     290    , cx(other.cx)
     291    , cy(other.cy)
    288292    , x(other.x)
    289293    , y(other.y)
     
    298302bool StyleLayoutData::operator==(const StyleLayoutData& other) const
    299303{
    300     return x == other.x
     304    return cx == other.cx
     305        && cy == other.cy
     306        && x == other.x
    301307        && y == other.y;
    302308}
  • trunk/Source/WebCore/rendering/style/SVGRenderStyleDefs.h

    r171591 r172641  
    303303        }
    304304
     305        Length cx;
     306        Length cy;
    305307        Length x;
    306308        Length y;
  • trunk/Source/WebCore/rendering/svg/RenderSVGEllipse.cpp

    r171046 r172641  
    7878void RenderSVGEllipse::calculateRadiiAndCenter()
    7979{
     80    SVGLengthContext lengthContext(&graphicsElement());
     81    m_center = FloatPoint(
     82        lengthContext.valueForLength(style().svgStyle().cx(), LengthModeWidth),
     83        lengthContext.valueForLength(style().svgStyle().cy(), LengthModeHeight));
    8084    if (isSVGCircleElement(graphicsElement())) {
    8185        SVGCircleElement& circle = toSVGCircleElement(graphicsElement());
     
    8387        float radius = circle.r().value(lengthContext);
    8488        m_radii = FloatSize(radius, radius);
    85         m_center = FloatPoint(circle.cx().value(lengthContext), circle.cy().value(lengthContext));
    8689        return;
    8790    }
     
    8992    ASSERT(isSVGEllipseElement(graphicsElement()));
    9093    SVGEllipseElement& ellipse = toSVGEllipseElement(graphicsElement());
    91 
    92     SVGLengthContext lengthContext(&ellipse);
    9394    m_radii = FloatSize(ellipse.rx().value(lengthContext), ellipse.ry().value(lengthContext));
    94     m_center = FloatPoint(ellipse.cx().value(lengthContext), ellipse.cy().value(lengthContext));
    9595}
    9696
  • trunk/Source/WebCore/rendering/svg/SVGPathData.cpp

    r171591 r172641  
    4545    SVGLengthContext lengthContext(element);
    4646    float r = circle->r().value(lengthContext);
    47     if (r > 0)
    48         path.addEllipse(FloatRect(circle->cx().value(lengthContext) - r, circle->cy().value(lengthContext) - r, r * 2, r * 2));
     47    if (r > 0) {
     48        RenderElement* renderer = circle->renderer();
     49        if (!renderer)
     50            return;
     51        RenderStyle& style = renderer->style();
     52        float cx = lengthContext.valueForLength(style.svgStyle().cx(), LengthModeWidth);
     53        float cy = lengthContext.valueForLength(style.svgStyle().cy(), LengthModeHeight);
     54        path.addEllipse(FloatRect(cx - r, cy - r, r * 2, r * 2));
     55    }
    4956}
    5057
     
    6067    if (ry <= 0)
    6168        return;
    62     path.addEllipse(FloatRect(ellipse->cx().value(lengthContext) - rx, ellipse->cy().value(lengthContext) - ry, rx * 2, ry * 2));
     69    RenderElement* renderer = ellipse->renderer();
     70    if (!renderer)
     71        return;
     72    RenderStyle& style = renderer->style();
     73    float cx = lengthContext.valueForLength(style.svgStyle().cx(), LengthModeWidth);
     74    float cy = lengthContext.valueForLength(style.svgStyle().cy(), LengthModeHeight);
     75    path.addEllipse(FloatRect(cx - rx, cy - ry, rx * 2, ry * 2));
    6376}
    6477
  • trunk/Source/WebCore/svg/SVGCircleElement.cpp

    r170774 r172641  
    107107    SVGElementInstance::InvalidationGuard invalidationGuard(this);
    108108
    109     bool isLengthAttribute = attrName == SVGNames::cxAttr
    110                           || attrName == SVGNames::cyAttr
    111                           || attrName == SVGNames::rAttr;
     109    if (attrName == SVGNames::cxAttr
     110        || attrName == SVGNames::cyAttr) {
     111        invalidateSVGPresentationAttributeStyle();
     112        return;
     113    }
    112114
    113     if (isLengthAttribute)
     115    if (attrName == SVGNames::rAttr)
    114116        updateRelativeLengthsInformation();
    115117
     
    118120        return;
    119121
    120     if (isLengthAttribute) {
     122    if (attrName == SVGNames::rAttr) {
    121123        renderer->setNeedsShapeUpdate();
    122124        RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
     
    132134}
    133135
    134 bool SVGCircleElement::selfHasRelativeLengths() const
    135 {
    136     return cx().isRelative()
    137         || cy().isRelative()
    138         || r().isRelative();
    139 }
    140 
    141136RenderPtr<RenderElement> SVGCircleElement::createElementRenderer(PassRef<RenderStyle> style)
    142137{
  • trunk/Source/WebCore/svg/SVGCircleElement.h

    r168313 r172641  
    4343    virtual void svgAttributeChanged(const QualifiedName&) override;
    4444
    45     virtual bool selfHasRelativeLengths() const override;
     45    virtual bool selfHasRelativeLengths() const override { return true; }
    4646
    4747    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) override;
  • trunk/Source/WebCore/svg/SVGElement.cpp

    r171591 r172641  
    9393        &color_renderingAttr,
    9494        &cursorAttr,
     95        &cxAttr,
     96        &cyAttr,
    9597        &SVGNames::directionAttr,
    9698        &displayAttr,
     
    245247
    246248    static const TableEntry table[] = {
     249        { cxAttr, AnimatedLength },
     250        { cyAttr, AnimatedLength },
    247251        { SVGNames::heightAttr, AnimatedLength },
    248252        { SVGNames::widthAttr, AnimatedLength },
  • trunk/Source/WebCore/svg/SVGEllipseElement.cpp

    r170774 r172641  
    111111    SVGElementInstance::InvalidationGuard invalidationGuard(this);
    112112
    113     bool isLengthAttribute = attrName == SVGNames::cxAttr
    114                           || attrName == SVGNames::cyAttr
    115                           || attrName == SVGNames::rxAttr
     113    if (attrName == SVGNames::cxAttr
     114        || attrName == SVGNames::cyAttr) {
     115        invalidateSVGPresentationAttributeStyle();
     116        return;
     117    }
     118
     119    bool isLengthAttribute = attrName == SVGNames::rxAttr
    116120                          || attrName == SVGNames::ryAttr;
    117121
     
    136140    ASSERT_NOT_REACHED();
    137141}
    138  
    139 bool SVGEllipseElement::selfHasRelativeLengths() const
    140 {
    141     return cx().isRelative()
    142         || cy().isRelative()
    143         || rx().isRelative()
    144         || ry().isRelative();
    145 }
    146142
    147143RenderPtr<RenderElement> SVGEllipseElement::createElementRenderer(PassRef<RenderStyle> style)
  • trunk/Source/WebCore/svg/SVGEllipseElement.h

    r168313 r172641  
    4343    virtual void svgAttributeChanged(const QualifiedName&) override;
    4444
    45     virtual bool selfHasRelativeLengths() const override;
     45    virtual bool selfHasRelativeLengths() const override { return true; };
    4646
    4747    virtual RenderPtr<RenderElement> createElementRenderer(PassRef<RenderStyle>) override;
Note: See TracChangeset for help on using the changeset viewer.