Reviewed by Hyatt
authorkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 18 Oct 2004 21:52:36 +0000 (21:52 +0000)
committerkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 18 Oct 2004 21:52:36 +0000 (21:52 +0000)
        Fix for this bug:

        <rdar://problem/3840907> textedit doesn't render italic or bold text in html documents

        * khtml/css/css_valueimpl.cpp:
        (CSSPrimitiveValueImpl::getStringValue): This function did not return string values for idents.
        Also changed the return value to be DOMString, rather than DOMStringImpl, to deal with the
        lifecycle issues associated with creating a string to be returned in the ident case.
        * khtml/css/css_valueimpl.h: Change getStringValue to return DOMString rather than DOMStringImpl.
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyProperty): Two calls of getStringValue needed updating.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7852 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/khtml/css/css_valueimpl.cpp
WebCore/khtml/css/css_valueimpl.h
WebCore/khtml/css/cssstyleselector.cpp

index ef80f76ca7e496b2cb2e72e95a0658be1ead2fd4..e66797b114f2ad72dec68041106d7c54f5c7bd36 100644 (file)
@@ -1,3 +1,19 @@
+2004-10-18  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Hyatt
+
+        Fix for this bug:
+        
+        <rdar://problem/3840907> textedit doesn't render italic or bold text in html documents
+
+        * khtml/css/css_valueimpl.cpp:
+        (CSSPrimitiveValueImpl::getStringValue): This function did not return string values for idents.
+        Also changed the return value to be DOMString, rather than DOMStringImpl, to deal with the 
+        lifecycle issues associated with creating a string to be returned in the ident case.
+        * khtml/css/css_valueimpl.h: Change getStringValue to return DOMString rather than DOMStringImpl.
+        * khtml/css/cssstyleselector.cpp:
+        (khtml::CSSStyleSelector::applyProperty): Two calls of getStringValue needed updating.
+
 2004-10-18  Chris Blumenberg  <cblu@apple.com>
 
        Fixed: <rdar://problem/3770135> hang loading page with EMBED tag pointing to same page (tridentantennas.co.uk)
index 151b136c35d8af099f40142cc954757e5fd04748..4681cf1996c7fcd5e310aa8df99742e652908a90 100644 (file)
@@ -697,6 +697,23 @@ void CSSPrimitiveValueImpl::setStringValue( unsigned short stringType, const DOM
     // ### parse ident
 }
 
+DOMString CSSPrimitiveValueImpl::getStringValue() const
+{
+    switch (m_type) {
+        case CSSPrimitiveValue::CSS_STRING:
+        case CSSPrimitiveValue::CSS_ATTR:
+        case CSSPrimitiveValue::CSS_URI:
+            return m_value.string;
+        case CSSPrimitiveValue::CSS_IDENT:
+            return getValueName(m_value.ident);
+        default:
+            // FIXME: The CSS 2.1 spec says you should throw an exception here.
+            break;
+    }
+    
+    return DOMString();
+}
+
 unsigned short CSSPrimitiveValueImpl::cssValueType() const
 {
     return CSSValue::CSS_PRIMITIVE_VALUE;
index e4869b5a0e9bf824f7b62fa68197261b90294d9b..c8ee9e48f67203f476e4769a0a06267b25699536 100644 (file)
@@ -203,12 +203,8 @@ public:
     }
 
     void setStringValue ( unsigned short stringType, const DOM::DOMString &stringValue, int &exceptioncode );
-    DOM::DOMStringImpl *getStringValue () const {
-       return ( ( m_type < CSSPrimitiveValue::CSS_STRING ||
-                  m_type > CSSPrimitiveValue::CSS_ATTR ||
-                  m_type == CSSPrimitiveValue::CSS_IDENT ) ? // fix IDENT
-                0 : m_value.string );
-    }
+    DOM::DOMString getStringValue() const;
+    
     CounterImpl *getCounterValue () const {
         return ( m_type != CSSPrimitiveValue::CSS_COUNTER ? 0 : m_value.counter );
     }
index b8bccfbe678f0c7d20d9e3e1825381a50b48cda8..5c2e70e18b0bd164c4fc146fb2b35b4a4242af8d 100644 (file)
@@ -3033,14 +3033,14 @@ void CSSStyleSelector::applyProperty( int id, DOM::CSSValueImpl *value )
             CSSPrimitiveValueImpl *val = static_cast<CSSPrimitiveValueImpl *>(item);
             if(val->primitiveType()==CSSPrimitiveValue::CSS_STRING)
             {
-                style->setContent(val->getStringValue(), i != 0);
+                style->setContent(val->getStringValue().implementation(), i != 0);
             }
             else if (val->primitiveType()==CSSPrimitiveValue::CSS_ATTR)
             {
                 // FIXME: Should work with generic XML attributes also, and not
                 // just the hardcoded HTML set.  Can a namespace be specified for
                 // an attr(foo)?
-                int attrID = element->getDocument()->attrId(0, val->getStringValue(), false);
+                int attrID = element->getDocument()->attrId(0, val->getStringValue().implementation(), false);
                 if (attrID)
                     style->setContent(element->getAttribute(attrID).implementation(), i != 0);
             }