Unreviewed, rolling out r129086.
[WebKit-https.git] / Source / WebCore / rendering / RenderButton.cpp
index c59c822..7103e6e 100644 (file)
@@ -35,6 +35,7 @@ using namespace HTMLNames;
 
 RenderButton::RenderButton(Node* node)
     : RenderDeprecatedFlexibleBox(node)
+    , m_buttonText(0)
     , m_inner(0)
     , m_default(false)
 {
@@ -82,6 +83,8 @@ void RenderButton::styleDidChange(StyleDifference diff, const RenderStyle* oldSt
 {
     RenderBlock::styleDidChange(diff, oldStyle);
 
+    if (m_buttonText)
+        m_buttonText->setStyle(style());
     if (m_inner) // RenderBlock handled updating the anonymous block's style.
         setupInnerStyle(m_inner->style());
 
@@ -105,6 +108,39 @@ void RenderButton::setupInnerStyle(RenderStyle* innerStyle)
     innerStyle->setBoxOrient(style()->boxOrient());
 }
 
+void RenderButton::updateFromElement()
+{
+    // If we're an input element, we may need to change our button text.
+    if (node()->hasTagName(inputTag)) {
+        HTMLInputElement* input = static_cast<HTMLInputElement*>(node());
+        String value = input->valueWithDefault();
+        setText(value);
+    }
+}
+
+void RenderButton::setText(const String& str)
+{
+    if (str.isEmpty()) {
+        if (m_buttonText) {
+            m_buttonText->destroy();
+            m_buttonText = 0;
+        }
+    } else {
+        if (m_buttonText)
+            m_buttonText->setText(str.impl());
+        else {
+            m_buttonText = new (renderArena()) RenderTextFragment(document(), str.impl());
+            m_buttonText->setStyle(style());
+            addChild(m_buttonText);
+        }
+    }
+}
+
+String RenderButton::text() const
+{
+    return m_buttonText ? m_buttonText->text() : 0;
+}
+
 bool RenderButton::canHaveGeneratedChildren() const
 {
     // Input elements can't have generated children, but button elements can. We'll