[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.1/kdelibs/khtml/css
From:       Harri Porten <porten () kde ! org>
Date:       2008-10-19 15:29:55
Message-ID: 1224430195.795264.14142.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 873497 by porten:

Merged revision 873496:
Fixing width, height and padding unit and values for visible
as well as invisible elements. Fixes some jquery test suite failures.

Will commit tests to css/computed.html shortly.

 M  +29 -13    css_renderstyledeclarationimpl.cpp  


--- branches/KDE/4.1/kdelibs/khtml/css/css_renderstyledeclarationimpl.cpp #873496:873497
@@ -137,6 +137,16 @@
     }
 }
 
+static CSSValueImpl *valueForLength2(const Length &length)
+{
+    if (length.isPercent()) {
+        return new CSSPrimitiveValueImpl(length.value(), CSSPrimitiveValue::CSS_PERCENTAGE);
+    }
+    else {
+        return new CSSPrimitiveValueImpl(length.value(), CSSPrimitiveValue::CSS_PX);
+    }
+}
+
 static CSSValueImpl *valueForBorderStyle(EBorderStyle style)
 {
     switch (style) {
@@ -702,8 +712,9 @@
             return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
     }
     case CSS_PROP_HEIGHT:
-        RETURN_NULL_ON_NULL(renderer);
-        return new CSSPrimitiveValueImpl(renderer->contentHeight(), CSSPrimitiveValue::CSS_PX);
+        if (renderer)
+            return new CSSPrimitiveValueImpl(renderer->contentHeight(), CSSPrimitiveValue::CSS_PX);
+        return valueForLength2(style->height());
     case CSS_PROP_LEFT:
         RETURN_NULL_ON_NULL(renderer);
         return getPositionOffsetValue(renderer, CSS_PROP_LEFT);
@@ -868,17 +879,21 @@
         return 0;
     }
     case CSS_PROP_PADDING_TOP:
-        RETURN_NULL_ON_NULL(renderer);
-        return valueForLength(style->paddingTop(), renderer->contentHeight());
+        if (renderer)
+            return new CSSPrimitiveValueImpl(renderer->paddingTop(), CSSPrimitiveValue::CSS_PX);
+        return valueForLength2(style->paddingTop());
     case CSS_PROP_PADDING_RIGHT:
-        RETURN_NULL_ON_NULL(renderer);
-        return valueForLength(style->paddingRight(), renderer->contentWidth());
+        if (renderer)
+            return new CSSPrimitiveValueImpl(renderer->paddingRight(), CSSPrimitiveValue::CSS_PX);
+        return valueForLength2(style->paddingRight());
     case CSS_PROP_PADDING_BOTTOM:
-        RETURN_NULL_ON_NULL(renderer);
-        return valueForLength(style->paddingBottom(), renderer->contentHeight());
+        if (renderer)
+            return new CSSPrimitiveValueImpl(renderer->paddingBottom(), CSSPrimitiveValue::CSS_PX);
+        return valueForLength2(style->paddingBottom());
     case CSS_PROP_PADDING_LEFT:
-        RETURN_NULL_ON_NULL(renderer);
-        return valueForLength(style->paddingLeft(), renderer->contentWidth());
+        if (renderer)
+            return new CSSPrimitiveValueImpl(renderer->paddingLeft(), CSSPrimitiveValue::CSS_PX);
+        return valueForLength2(style->paddingLeft());
     case CSS_PROP_PAGE_BREAK_AFTER:
         switch (style->pageBreakAfter()) {
         case PBAUTO:
@@ -1064,9 +1079,10 @@
     case CSS_PROP_WIDOWS:
         return new CSSPrimitiveValueImpl(style->widows(), CSSPrimitiveValue::CSS_NUMBER);
     case CSS_PROP_WIDTH:
-        RETURN_NULL_ON_NULL(renderer);
-        return new CSSPrimitiveValueImpl( renderer->contentWidth(),
-                                         CSSPrimitiveValue::CSS_PX );
+        if (renderer)
+            return new CSSPrimitiveValueImpl(renderer->contentWidth(),
+                                             CSSPrimitiveValue::CSS_PX);
+        return valueForLength2(style->width());
     case CSS_PROP_WORD_SPACING:
         return new CSSPrimitiveValueImpl(style->wordSpacing(), CSSPrimitiveValue::CSS_PX);
     case CSS_PROP_Z_INDEX:
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic