diff --git a/khtml/css/css_valueimpl.cpp b/khtml/css/css_valueimpl.cpp index d0da9346eedcba992546affe5498f9843332a0c6..2c40f70977e9bca3bb49be0c45e8dc644f56e9d7 100644 --- a/khtml/css/css_valueimpl.cpp +++ b/khtml/css/css_valueimpl.cpp @@ -197,7 +197,8 @@ DOMString CSSStyleDeclarationImpl::removeProperty(const DOMString &propertyName) DOMString CSSStyleDeclarationImpl::getPropertyValue( int propertyID ) const { - if(!m_lstValues) return DOMString(); + if (!m_lstValues || m_lstValues->isEmpty()) return DOMString(); + CSSValueImpl* value = getPropertyCSSValue( propertyID ); if ( value ) return value->cssText(); @@ -427,7 +428,7 @@ DOMString CSSStyleDeclarationImpl::getShortHandValue( const int* properties, int CSSValueImpl *CSSStyleDeclarationImpl::getPropertyCSSValue( int propertyID ) const { - if(!m_lstValues) return 0; + if (!m_lstValues || m_lstValues->isEmpty()) return 0; QListIterator lstValuesIt(*m_lstValues); CSSProperty *current; @@ -644,7 +645,7 @@ static void initShorthandMap(QHash& shorthandMap) void CSSStyleDeclarationImpl::removeProperty(int propertyID, DOM::DOMString* old) { - if(!m_lstValues) + if (!m_lstValues || m_lstValues->isEmpty()) return; bool changed = false; @@ -731,7 +732,7 @@ void CSSStyleDeclarationImpl::clear() bool CSSStyleDeclarationImpl::getPropertyPriority( int propertyID ) const { - if ( m_lstValues) { + if (m_lstValues && !m_lstValues->isEmpty()) { QListIterator lstValuesIt(*m_lstValues); CSSProperty *current; while (lstValuesIt.hasNext()) { @@ -833,24 +834,26 @@ CSSRuleImpl *CSSStyleDeclarationImpl::parentRule() const DOM::DOMString CSSStyleDeclarationImpl::cssText() const { - DOMString result; + if (!m_lstValues || m_lstValues->isEmpty()) { + return DOMString(); + } + DOMString result; const CSSProperty* positionXProp = 0; const CSSProperty* positionYProp = 0; - if ( m_lstValues) { - QListIterator lstValuesIt(*m_lstValues); - while (lstValuesIt.hasNext()) { - const CSSProperty* cur = lstValuesIt.next(); - if (cur->id() == CSS_PROP_BACKGROUND_POSITION_X) - positionXProp = cur; - else if (cur->id() == CSS_PROP_BACKGROUND_POSITION_Y) - positionYProp = cur; - else - result += cur->cssText(); - } + QListIterator lstValuesIt(*m_lstValues); + while (lstValuesIt.hasNext()) { + const CSSProperty* cur = lstValuesIt.next(); + if (cur->id() == CSS_PROP_BACKGROUND_POSITION_X) + positionXProp = cur; + else if (cur->id() == CSS_PROP_BACKGROUND_POSITION_Y) + positionYProp = cur; + else + result += cur->cssText(); } + // FIXME: This is a not-so-nice way to turn x/y positions into single background-position in output. // It is required because background-position-x/y are non-standard properties and generated output // would not work in Firefox