diff options
Diffstat (limited to 'Source/WebCore/rendering/RenderProgress.cpp')
-rw-r--r-- | Source/WebCore/rendering/RenderProgress.cpp | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/Source/WebCore/rendering/RenderProgress.cpp b/Source/WebCore/rendering/RenderProgress.cpp index 4194e2b..2a8e6f3 100644 --- a/Source/WebCore/rendering/RenderProgress.cpp +++ b/Source/WebCore/rendering/RenderProgress.cpp @@ -36,6 +36,16 @@ using namespace std; namespace WebCore { +IntRect RenderProgressBarValuePart::preferredFrameRect() +{ + return toRenderProgress(parent())->valuePartRect(); +} + +bool RenderProgressBarValuePart::shouldBeHidden() +{ + return !toRenderProgress(parent())->shouldHaveParts(); +} + RenderProgress::RenderProgress(HTMLProgressElement* element) : RenderIndicator(element) , m_position(-1) @@ -49,23 +59,10 @@ RenderProgress::RenderProgress(HTMLProgressElement* element) RenderProgress::~RenderProgress() { - if (m_valuePart) - m_valuePart->detach(); } void RenderProgress::updateFromElement() { - if (!m_valuePart) { - m_valuePart = ShadowBlockElement::createForPart(static_cast<HTMLElement*>(node()), PROGRESS_BAR_VALUE); - if (m_valuePart->renderer()) - addChild(m_valuePart->renderer()); - } - - if (shouldHaveParts()) - style()->setAppearance(NoControlPart); - else if (m_valuePart->renderer()) - m_valuePart->renderer()->style()->setVisibility(HIDDEN); - HTMLProgressElement* element = progressElement(); if (m_position == element->position()) return; @@ -102,7 +99,8 @@ void RenderProgress::paint(PaintInfo& paintInfo, int tx, int ty) void RenderProgress::layoutParts() { - m_valuePart->layoutAsPart(valuePartRect()); + for (RenderObject* child = firstChild(); child; child = child->nextSibling()) + child->layout(); updateAnimationState(); } @@ -110,8 +108,6 @@ bool RenderProgress::shouldHaveParts() const { if (!style()->hasAppearance()) return true; - if (ShadowBlockElement::partShouldHaveStyle(this, PROGRESS_BAR_VALUE)) - return true; return false; } |