diff options
Diffstat (limited to 'Source/WebCore/rendering/RenderSlider.cpp')
| -rw-r--r-- | Source/WebCore/rendering/RenderSlider.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/Source/WebCore/rendering/RenderSlider.cpp b/Source/WebCore/rendering/RenderSlider.cpp index d5b90cad6..55df4fdea 100644 --- a/Source/WebCore/rendering/RenderSlider.cpp +++ b/Source/WebCore/rendering/RenderSlider.cpp @@ -41,6 +41,7 @@ #include "StepRange.h" #include "StyleResolver.h" #include <wtf/MathExtras.h> +#include <wtf/StackStats.h> using std::min; @@ -70,6 +71,13 @@ int RenderSlider::baselinePosition(FontBaseline, bool /*firstLine*/, LineDirecti return height() + marginTop(); } +void RenderSlider::computeIntrinsicLogicalWidths(LayoutUnit& minLogicalWidth, LayoutUnit& maxLogicalWidth) const +{ + maxLogicalWidth = defaultTrackLength * style()->effectiveZoom(); + if (!style()->width().isPercent()) + minLogicalWidth = maxLogicalWidth; +} + void RenderSlider::computePreferredLogicalWidths() { m_minPreferredLogicalWidth = 0; @@ -78,16 +86,13 @@ void RenderSlider::computePreferredLogicalWidths() if (style()->width().isFixed() && style()->width().value() > 0) m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth = adjustContentBoxLogicalWidthForBoxSizing(style()->width().value()); else - m_maxPreferredLogicalWidth = defaultTrackLength * style()->effectiveZoom(); + computeIntrinsicLogicalWidths(m_minPreferredLogicalWidth, m_maxPreferredLogicalWidth); if (style()->minWidth().isFixed() && style()->minWidth().value() > 0) { m_maxPreferredLogicalWidth = max(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style()->minWidth().value())); m_minPreferredLogicalWidth = max(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style()->minWidth().value())); - } else if (style()->width().isPercent() || (style()->width().isAuto() && style()->height().isPercent())) - m_minPreferredLogicalWidth = 0; - else - m_minPreferredLogicalWidth = m_maxPreferredLogicalWidth; - + } + if (style()->maxWidth().isFixed()) { m_maxPreferredLogicalWidth = min(m_maxPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style()->maxWidth().value())); m_minPreferredLogicalWidth = min(m_minPreferredLogicalWidth, adjustContentBoxLogicalWidthForBoxSizing(style()->maxWidth().value())); @@ -109,7 +114,7 @@ void RenderSlider::layout() if (thumbBox && thumbBox->isSliderThumb()) static_cast<RenderSliderThumb*>(thumbBox)->updateAppearance(style()); - RenderBlock::layout(); + RenderFlexibleBox::layout(); } bool RenderSlider::inDragMode() const |
