From cf2317c7876564b5f0e7386454b294024c3bbd68 Mon Sep 17 00:00:00 2001 From: Andrea Iacovitti Date: Sun, 16 Nov 2014 01:32:45 +0100 Subject: [PATCH] getComputedStyle for background-size, some site ask for it --- khtml/css/css_renderstyledeclarationimpl.cpp | 38 ++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/khtml/css/css_renderstyledeclarationimpl.cpp b/khtml/css/css_renderstyledeclarationimpl.cpp index 52eaf4c15b..e9ab23ce3f 100644 --- a/khtml/css/css_renderstyledeclarationimpl.cpp +++ b/khtml/css/css_renderstyledeclarationimpl.cpp @@ -42,6 +42,7 @@ static const int computedProperties[] = { CSS_PROP_BACKGROUND_POSITION, CSS_PROP_BACKGROUND_POSITION_X, CSS_PROP_BACKGROUND_POSITION_Y, + CSS_PROP_BACKGROUND_SIZE, CSS_PROP_BORDER_COLLAPSE, CSS_PROP_BORDER_SPACING, CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING, @@ -481,6 +482,43 @@ CSSValueImpl *RenderStyleDeclarationImpl::getPropertyCSSValue( int propertyID ) case CSS_PROP_BACKGROUND_POSITION_Y: RETURN_NULL_ON_NULL(renderer); return valueForLength(style->backgroundYPosition(), renderer->contentHeight()); + case CSS_PROP_BACKGROUND_SIZE: { + const EBackgroundSizeType backgroundSizeType = style->backgroundLayers()->backgroundSizeType(); + switch (backgroundSizeType) { + case BGSCONTAIN: + return new CSSPrimitiveValueImpl(CSS_VAL_CONTAIN); + case BGSCOVER: + return new CSSPrimitiveValueImpl(CSS_VAL_COVER); + case BGSLENGTH: { + const LengthSize bgLengthSize = style->backgroundLayers()->backgroundSize(); + CSSValueListImpl *values = new CSSValueListImpl(CSSValueListImpl::Space); + switch (bgLengthSize.width.type()) { + case Auto: + values->append(new CSSPrimitiveValueImpl(CSS_VAL_AUTO)); + break; + case Percent: + values->append(new CSSPrimitiveValueImpl(bgLengthSize.width.percent(), CSSPrimitiveValue::CSS_PERCENTAGE)); + break; + default: + values->append(new CSSPrimitiveValueImpl(bgLengthSize.width.value(), CSSPrimitiveValue::CSS_PX)); + } + switch (bgLengthSize.height.type()) { + case Auto: + values->append(new CSSPrimitiveValueImpl(CSS_VAL_AUTO)); + break; + case Percent: + values->append(new CSSPrimitiveValueImpl(bgLengthSize.height.percent(), CSSPrimitiveValue::CSS_PERCENTAGE)); + break; + default: + values->append(new CSSPrimitiveValueImpl(bgLengthSize.height.value(), CSSPrimitiveValue::CSS_PX)); + } + return values; + } + default: + Q_ASSERT(0); + } + break; + } case CSS_PROP_BORDER_COLLAPSE: if (style->borderCollapse()) return new CSSPrimitiveValueImpl(CSS_VAL_COLLAPSE); -- GitLab