diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-09-24 13:09:44 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-09-24 13:09:44 +0200 |
commit | dc6262b587c71c14e30d93e57ed812e36a79a33e (patch) | |
tree | 03ff986e7aa38bba0c0ef374f44fda52aff93f01 /Source/WebCore/rendering/RenderButton.cpp | |
parent | 02e1fbbefd49229b102ef107bd70ce974a2d85fb (diff) | |
download | qtwebkit-dc6262b587c71c14e30d93e57ed812e36a79a33e.tar.gz |
Imported WebKit commit 6339232fec7f5d9984a33388aecfd2cbc7832053 (http://svn.webkit.org/repository/webkit/trunk@129343)
New snapshot with build fixes for latest qtbase
Diffstat (limited to 'Source/WebCore/rendering/RenderButton.cpp')
-rw-r--r-- | Source/WebCore/rendering/RenderButton.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Source/WebCore/rendering/RenderButton.cpp b/Source/WebCore/rendering/RenderButton.cpp index c59c82216..7103e6e50 100644 --- a/Source/WebCore/rendering/RenderButton.cpp +++ b/Source/WebCore/rendering/RenderButton.cpp @@ -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 |