diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/rendering/RenderButton.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/rendering/RenderButton.cpp')
-rw-r--r-- | Source/WebCore/rendering/RenderButton.cpp | 56 |
1 files changed, 14 insertions, 42 deletions
diff --git a/Source/WebCore/rendering/RenderButton.cpp b/Source/WebCore/rendering/RenderButton.cpp index 7756a41b7..484530f01 100644 --- a/Source/WebCore/rendering/RenderButton.cpp +++ b/Source/WebCore/rendering/RenderButton.cpp @@ -1,5 +1,5 @@ /** - * Copyright (C) 2005 Apple Computer, Inc. + * Copyright (C) 2005 Apple Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public @@ -37,11 +37,10 @@ namespace WebCore { using namespace HTMLNames; -RenderButton::RenderButton(HTMLFormControlElement& element, PassRef<RenderStyle> style) - : RenderFlexibleBox(element, std::move(style)) +RenderButton::RenderButton(HTMLFormControlElement& element, RenderStyle&& style) + : RenderFlexibleBox(element, WTFMove(style)) , m_buttonText(0) , m_inner(0) - , m_default(false) { } @@ -51,7 +50,7 @@ RenderButton::~RenderButton() HTMLFormControlElement& RenderButton::formControlElement() const { - return toHTMLFormControlElement(nodeForNonAnonymous()); + return downcast<HTMLFormControlElement>(nodeForNonAnonymous()); } bool RenderButton::canBeSelectionLeaf() const @@ -61,7 +60,7 @@ bool RenderButton::canBeSelectionLeaf() const bool RenderButton::hasLineIfEmpty() const { - return formControlElement().toInputElement(); + return is<HTMLInputElement>(formControlElement()); } void RenderButton::addChild(RenderObject* newChild, RenderObject* beforeChild) @@ -70,7 +69,7 @@ void RenderButton::addChild(RenderObject* newChild, RenderObject* beforeChild) // Create an anonymous block. ASSERT(!firstChild()); m_inner = createAnonymousBlock(style().display()); - setupInnerStyle(&m_inner->style()); + setupInnerStyle(&m_inner->mutableStyle()); RenderFlexibleBox::addChild(m_inner); } @@ -98,9 +97,9 @@ void RenderButton::styleWillChange(StyleDifference diff, const RenderStyle& newS // it right below. Here we change it back to 0 to avoid getting a spurious layout hint // because of the difference. Same goes for the other properties. // FIXME: Make this hack unnecessary. - m_inner->style().setFlexGrow(newStyle.initialFlexGrow()); - m_inner->style().setMarginTop(newStyle.initialMargin()); - m_inner->style().setMarginBottom(newStyle.initialMargin()); + m_inner->mutableStyle().setFlexGrow(newStyle.initialFlexGrow()); + m_inner->mutableStyle().setMarginTop(newStyle.initialMargin()); + m_inner->mutableStyle().setMarginBottom(newStyle.initialMargin()); } RenderBlock::styleWillChange(diff, newStyle); } @@ -110,26 +109,11 @@ void RenderButton::styleDidChange(StyleDifference diff, const RenderStyle* oldSt RenderBlock::styleDidChange(diff, oldStyle); if (m_inner) // RenderBlock handled updating the anonymous block's style. - setupInnerStyle(&m_inner->style()); - - if (!m_default && theme().isDefault(this)) { - if (!m_timer) - m_timer = adoptPtr(new Timer<RenderButton>(this, &RenderButton::timerFired)); - m_timer->startRepeating(0.03); - m_default = true; - } else if (m_default && !theme().isDefault(this)) { - m_default = false; - m_timer.clear(); - } + setupInnerStyle(&m_inner->mutableStyle()); } void RenderButton::setupInnerStyle(RenderStyle* innerStyle) { - ASSERT(innerStyle->refCount() == 1); - // RenderBlock::createAnonymousBlock creates a new RenderStyle, so this is - // safe to modify. - // FIXME: I don't see how the comment above is accurate when this is called - // from the RenderButton::styleDidChange function. innerStyle->setFlexGrow(1.0f); // Use margin:auto instead of align-items:center to get safe centering, i.e. // when the content overflows, treat it the same as align-items: flex-start. @@ -141,8 +125,8 @@ void RenderButton::setupInnerStyle(RenderStyle* innerStyle) void RenderButton::updateFromElement() { // If we're an input element, we may need to change our button text. - if (isHTMLInputElement(formControlElement())) { - HTMLInputElement& input = toHTMLInputElement(formControlElement()); + if (is<HTMLInputElement>(formControlElement())) { + HTMLInputElement& input = downcast<HTMLInputElement>(formControlElement()); String value = input.valueWithDefault(); setText(value); } @@ -175,7 +159,7 @@ bool RenderButton::canHaveGeneratedChildren() const // Input elements can't have generated children, but button elements can. We'll // write the code assuming any other button types that might emerge in the future // can also have children. - return !isHTMLInputElement(formControlElement()); + return !is<HTMLInputElement>(formControlElement()); } LayoutRect RenderButton::controlClipRect(const LayoutPoint& additionalOffset) const @@ -184,25 +168,13 @@ LayoutRect RenderButton::controlClipRect(const LayoutPoint& additionalOffset) co return LayoutRect(additionalOffset.x() + borderLeft(), additionalOffset.y() + borderTop(), width() - borderLeft() - borderRight(), height() - borderTop() - borderBottom()); } -void RenderButton::timerFired(Timer<RenderButton>&) -{ - // FIXME Bug 25110: Ideally we would stop our timer when our Document - // enters the page cache. But we currently have no way of being notified - // when that happens, so we'll just ignore the timer firing as long as - // we're in the cache. - if (document().inPageCache()) - return; - - repaint(); -} - #if PLATFORM(IOS) void RenderButton::layout() { RenderFlexibleBox::layout(); // FIXME: We should not be adjusting styles during layout. See <rdar://problem/7675493>. - RenderThemeIOS::adjustRoundBorderRadius(style(), this); + RenderThemeIOS::adjustRoundBorderRadius(mutableStyle(), *this); } #endif |