diff options
Diffstat (limited to 'WebCore/rendering/RenderSlider.cpp')
-rw-r--r-- | WebCore/rendering/RenderSlider.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/WebCore/rendering/RenderSlider.cpp b/WebCore/rendering/RenderSlider.cpp index ed5fe76..aed8a8c 100644 --- a/WebCore/rendering/RenderSlider.cpp +++ b/WebCore/rendering/RenderSlider.cpp @@ -58,16 +58,19 @@ static double sliderPosition(HTMLInputElement* element) return range.proportionFromValue(range.valueFromElement(element)); } +// FIXME: Could share code with the SliderDivElement class in RenderProgress. class SliderThumbElement : public HTMLDivElement { public: - SliderThumbElement(Document*, Node* shadowParent); - + static PassRefPtr<SliderThumbElement> create(Node* shadowParent); + bool inDragMode() const { return m_inDragMode; } virtual void defaultEventHandler(Event*); virtual void detach(); private: + SliderThumbElement(Node* shadowParent); + virtual bool isShadowNode() const { return true; } virtual Node* shadowParentNode() { return m_shadowParent; } @@ -76,13 +79,18 @@ private: bool m_inDragMode; }; -SliderThumbElement::SliderThumbElement(Document* document, Node* shadowParent) - : HTMLDivElement(divTag, document) +inline SliderThumbElement::SliderThumbElement(Node* shadowParent) + : HTMLDivElement(divTag, shadowParent->document()) , m_shadowParent(shadowParent) , m_inDragMode(false) { } +inline PassRefPtr<SliderThumbElement> SliderThumbElement::create(Node* shadowParent) +{ + return new SliderThumbElement(shadowParent); +} + void SliderThumbElement::defaultEventHandler(Event* event) { if (!event->isMouseEvent()) { @@ -309,7 +317,7 @@ void RenderSlider::updateFromElement() { // Layout will take care of the thumb's size and position. if (!m_thumb) { - m_thumb = new SliderThumbElement(document(), node()); + m_thumb = SliderThumbElement::create(node()); RefPtr<RenderStyle> thumbStyle = createThumbStyle(style()); m_thumb->setRenderer(m_thumb->createRenderer(renderArena(), thumbStyle.get())); m_thumb->renderer()->setStyle(thumbStyle.release()); |