summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/shadow/SliderThumbElement.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-07-23 09:28:44 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-07-23 09:28:44 +0200
commit815f1ed417bd26fbe2abbdf20ac5d3423b30796c (patch)
tree923c9a9e2834ccab60f5caecfb8f0ac410c1dd9e /Source/WebCore/html/shadow/SliderThumbElement.cpp
parentb4ad5d9d2b96baacd0180ead50de5195ca78af2d (diff)
downloadqtwebkit-815f1ed417bd26fbe2abbdf20ac5d3423b30796c.tar.gz
Imported WebKit commit e65cbc5b6ac32627c797e7fc7f46eb7794410c92 (http://svn.webkit.org/repository/webkit/trunk@123308)
New snapshot with better configure tests
Diffstat (limited to 'Source/WebCore/html/shadow/SliderThumbElement.cpp')
-rw-r--r--Source/WebCore/html/shadow/SliderThumbElement.cpp48
1 files changed, 33 insertions, 15 deletions
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 <input> is not fixed or a
// percentage value because a percentage height value of this box won't be
// based on the <input> 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);