void HTMLTextAreaElement::parseMappedAttribute(MappedAttribute* attr) { if (attr->name() == rowsAttr) { int rows = attr->value().toInt(); if (rows <= 0) rows = defaultRows; if (m_rows != rows) { m_rows = rows; if (renderer()) renderer()->setNeedsLayoutAndPrefWidthsRecalc(); } } else if (attr->name() == colsAttr) { int cols = attr->value().toInt(); if (cols <= 0) cols = defaultCols; if (m_cols != cols) { m_cols = cols; if (renderer()) renderer()->setNeedsLayoutAndPrefWidthsRecalc(); } } else if (attr->name() == wrapAttr) { // The virtual/physical values were a Netscape extension of HTML 3.0, now deprecated. // The soft/hard /off values are a recommendation for HTML 4 extension by IE and NS 4. WrapMethod wrap; if (equalIgnoringCase(attr->value(), "physical") || equalIgnoringCase(attr->value(), "hard") || equalIgnoringCase(attr->value(), "on")) wrap = HardWrap; else if (equalIgnoringCase(attr->value(), "off")) wrap = NoWrap; else wrap = SoftWrap; if (wrap != m_wrap) { m_wrap = wrap; if (shouldWrapText()) { addCSSProperty(attr, CSSPropertyWhiteSpace, CSSValuePreWrap); addCSSProperty(attr, CSSPropertyWordWrap, CSSValueBreakWord); } else { addCSSProperty(attr, CSSPropertyWhiteSpace, CSSValuePre); addCSSProperty(attr, CSSPropertyWordWrap, CSSValueNormal); } if (renderer()) renderer()->setNeedsLayoutAndPrefWidthsRecalc(); } } else if (attr->name() == accesskeyAttr) { // ignore for the moment } else if (attr->name() == alignAttr) { // Don't map 'align' attribute. This matches what Firefox, Opera and IE do. // See http://bugs.webkit.org/show_bug.cgi?id=7075 } else if (attr->name() == onfocusAttr) setAttributeEventListener(eventNames().focusEvent, createAttributeEventListener(this, attr)); else if (attr->name() == onblurAttr) setAttributeEventListener(eventNames().blurEvent, createAttributeEventListener(this, attr)); else if (attr->name() == onselectAttr) setAttributeEventListener(eventNames().selectEvent, createAttributeEventListener(this, attr)); else if (attr->name() == onchangeAttr) setAttributeEventListener(eventNames().changeEvent, createAttributeEventListener(this, attr)); else HTMLFormControlElementWithState::parseMappedAttribute(attr); }
void HTMLTextAreaElement::collectStyleForAttribute(const Attribute& attribute, StylePropertySet* style) { if (attribute.name() == wrapAttr) { if (shouldWrapText()) { addPropertyToAttributeStyle(style, CSSPropertyWhiteSpace, CSSValuePreWrap); addPropertyToAttributeStyle(style, CSSPropertyWordWrap, CSSValueBreakWord); } else { addPropertyToAttributeStyle(style, CSSPropertyWhiteSpace, CSSValuePre); addPropertyToAttributeStyle(style, CSSPropertyWordWrap, CSSValueNormal); } } else HTMLTextFormControlElement::collectStyleForAttribute(attribute, style); }
void HTMLTextAreaElement::collectStyleForPresentationAttribute(const QualifiedName& name, const AtomicString& value, MutableStyleProperties& style) { if (name == wrapAttr) { if (shouldWrapText()) { addPropertyToPresentationAttributeStyle(style, CSSPropertyWhiteSpace, CSSValuePreWrap); addPropertyToPresentationAttributeStyle(style, CSSPropertyWordWrap, CSSValueBreakWord); } else { addPropertyToPresentationAttributeStyle(style, CSSPropertyWhiteSpace, CSSValuePre); addPropertyToPresentationAttributeStyle(style, CSSPropertyWordWrap, CSSValueNormal); } } else HTMLTextFormControlElement::collectStyleForPresentationAttribute(name, value, style); }
void HTMLTextAreaElement::collectStyleForAttribute(Attribute* attr, StylePropertySet* style) { if (attr->name() == wrapAttr) { if (shouldWrapText()) { style->setProperty(CSSPropertyWhiteSpace, CSSValuePreWrap); style->setProperty(CSSPropertyWordWrap, CSSValueBreakWord); } else { style->setProperty(CSSPropertyWhiteSpace, CSSValuePre); style->setProperty(CSSPropertyWordWrap, CSSValueNormal); } } else HTMLTextFormControlElement::collectStyleForAttribute(attr, style); }