From 815f1ed417bd26fbe2abbdf20ac5d3423b30796c Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Mon, 23 Jul 2012 09:28:44 +0200 Subject: Imported WebKit commit e65cbc5b6ac32627c797e7fc7f46eb7794410c92 (http://svn.webkit.org/repository/webkit/trunk@123308) New snapshot with better configure tests --- Source/WebCore/html/shadow/SliderThumbElement.cpp | 48 ++++++++++++++++------- 1 file changed, 33 insertions(+), 15 deletions(-) (limited to 'Source/WebCore/html/shadow/SliderThumbElement.cpp') diff --git a/Source/WebCore/html/shadow/SliderThumbElement.cpp b/Source/WebCore/html/shadow/SliderThumbElement.cpp index 0186fa57d..bb5948690 100644 --- a/Source/WebCore/html/shadow/SliderThumbElement.cpp +++ b/Source/WebCore/html/shadow/SliderThumbElement.cpp @@ -74,7 +74,7 @@ inline static bool hasVerticalAppearance(HTMLInputElement* input) SliderThumbElement* sliderThumbElementOf(Node* node) { ASSERT(node); - ShadowRoot* shadow = node->toInputElement()->shadow()->oldestShadowRoot(); + ShadowRoot* shadow = node->toInputElement()->userAgentShadowRoot(); ASSERT(shadow); Node* thumb = shadow->firstChild()->firstChild()->firstChild(); ASSERT(thumb); @@ -148,19 +148,38 @@ void RenderSliderContainer::layout() // Sets the concrete height if the height of the is not fixed or a // percentage value because a percentage height value of this box won't be // based on the height in such case. - Length inputHeight = input->renderer()->style()->height(); - RenderObject* trackRenderer = node()->firstChild()->renderer(); - if (!isVertical && input->renderer()->isSlider() && !inputHeight.isFixed() && !inputHeight.isPercent()) { - RenderObject* thumbRenderer = input->shadow()->oldestShadowRoot()->firstChild()->firstChild()->firstChild()->renderer(); - if (thumbRenderer) { - style()->setHeight(thumbRenderer->style()->height()); - if (trackRenderer) - trackRenderer->style()->setHeight(thumbRenderer->style()->height()); + if (input->renderer()->isSlider()) { + if (!isVertical) { + RenderObject* trackRenderer = node()->firstChild()->renderer(); + Length inputHeight = input->renderer()->style()->height(); + if (!inputHeight.isSpecified()) { + RenderObject* thumbRenderer = input->sliderThumbElement()->renderer(); + if (thumbRenderer) { + Length height = thumbRenderer->style()->height(); +#if ENABLE(DATALIST_ELEMENT) + if (input && input->list()) { + int offsetFromCenter = theme()->sliderTickOffsetFromTrackCenter(); + int trackHeight = 0; + if (offsetFromCenter < 0) + trackHeight = -2 * offsetFromCenter; + else { + int tickLength = theme()->sliderTickSize().height(); + trackHeight = 2 * (offsetFromCenter + tickLength); + } + float zoomFactor = style()->effectiveZoom(); + if (zoomFactor != 1.0) + trackHeight *= zoomFactor; + height = Length(trackHeight, Fixed); + } +#endif + style()->setHeight(height); + } + } else { + style()->setHeight(Length(100, Percent)); + if (trackRenderer) + trackRenderer->style()->setHeight(Length()); + } } - } else { - style()->setHeight(Length(100, Percent)); - if (trackRenderer) - trackRenderer->style()->setHeight(Length()); } RenderDeprecatedFlexibleBox::layout(); @@ -405,8 +424,7 @@ const AtomicString& TrackLimiterElement::shadowPseudoId() const TrackLimiterElement* trackLimiterElementOf(Node* node) { ASSERT(node); - ASSERT(node->toInputElement()->shadow()); - ShadowRoot* shadow = node->toInputElement()->shadow()->oldestShadowRoot(); + ShadowRoot* shadow = node->toInputElement()->userAgentShadowRoot(); ASSERT(shadow); Node* limiter = shadow->firstChild()->lastChild(); ASSERT(limiter); -- cgit v1.2.1