WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
WIP: Putting all pieces together for the slider.
bug-44907-20110111164142.patch (text/plain), 20.97 KB, created by
Dimitri Glazkov (Google)
on 2011-01-11 16:41:44 PST
(
hide
)
Description:
WIP: Putting all pieces together for the slider.
Filename:
MIME Type:
Creator:
Dimitri Glazkov (Google)
Created:
2011-01-11 16:41:44 PST
Size:
20.97 KB
patch
obsolete
>diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 3c34a83a3f6af918e754ea6d90ff583bb71aa7d4..a0bf3c7d332e58c2c7330c35b47cffa18e11ce9a 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,50 @@ >+2011-01-11 Dimitri Glazkov <dglazkov@chromium.org> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Refactor input[type=range] to use a more natural shadow DOM model. >+ https://bugs.webkit.org/show_bug.cgi?id=44907 >+ >+ No new tests. (OOPS!) >+ >+ * css/CSSStyleSelector.cpp: >+ (WebCore::CSSStyleSelector::initForStyleResolve): >+ * html/HTMLInputElement.cpp: >+ (WebCore::HTMLInputElement::updateType): >+ * html/InputType.cpp: >+ (WebCore::InputType::createShadowSubtree): >+ (WebCore::InputType::destroyShadowSubtree): >+ * html/InputType.h: >+ * html/RangeInputType.cpp: >+ (WebCore::RangeInputType::createShadowSubtree): >+ * html/RangeInputType.h: >+ * html/shadow/SliderThumbElement.cpp: >+ (WebCore::RenderSliderThumb::RenderSliderThumb): >+ (WebCore::RenderSliderThumb::layout): >+ (WebCore::SliderThumbElement::createRenderer): >+ (WebCore::SliderThumbElement::defaultEventHandler): >+ (WebCore::SliderThumbElement::detach): >+ * html/shadow/SliderThumbElement.h: >+ (WebCore::SliderThumbElement::SliderThumbElement): >+ (WebCore::SliderThumbElement::create): >+ (WebCore::toSliderThumbElement): >+ * rendering/MediaControlElements.cpp: >+ (WebCore::MediaControlInputElement::attach): >+ * rendering/RenderSlider.cpp: >+ (WebCore::RenderSlider::~RenderSlider): >+ (WebCore::RenderSlider::thumbRect): >+ (WebCore::RenderSlider::layout): >+ (WebCore::RenderSlider::sliderThumbElement): >+ (WebCore::RenderSlider::mouseEventIsInThumb): >+ (WebCore::RenderSlider::mouseEventOffsetToThumb): >+ (WebCore::RenderSlider::setValueForPosition): >+ (WebCore::RenderSlider::positionForOffset): >+ (WebCore::RenderSlider::currentPosition): >+ (WebCore::RenderSlider::trackSize): >+ (WebCore::RenderSlider::forwardEvent): >+ (WebCore::RenderSlider::inDragMode): >+ * rendering/RenderSlider.h: >+ > 2011-01-08 Dimitri Glazkov <dglazkov@chromium.org> > > Reviewed by David Hyatt. >diff --git a/Source/WebCore/css/CSSStyleSelector.cpp b/Source/WebCore/css/CSSStyleSelector.cpp >index e1e639344aa9b2197e4bc0149a2ed620f2d385e7..6363ca9b66abad4f974a16f7128f1a84d6eaa606 100644 >--- a/Source/WebCore/css/CSSStyleSelector.cpp >+++ b/Source/WebCore/css/CSSStyleSelector.cpp >@@ -822,12 +822,7 @@ inline void CSSStyleSelector::initForStyleResolve(Element* e, RenderStyle* paren > { > m_checker.m_pseudoStyle = pseudoID; > >- m_parentNode = e ? e->parentNode() : 0; >- >-#if ENABLE(SVG) >- if (!m_parentNode && e && e->isSVGElement() && e->isShadowRoot()) >- m_parentNode = e->shadowHost(); >-#endif >+ m_parentNode = e ? e->parentOrHostNode() : 0; > > if (parentStyle) > m_parentStyle = parentStyle; >diff --git a/Source/WebCore/html/HTMLInputElement.cpp b/Source/WebCore/html/HTMLInputElement.cpp >index 007639b21adde038050b72502b204a1017b1d44e..7d2a3c542927444e028e0c92312b4eb188fcd28e 100644 >--- a/Source/WebCore/html/HTMLInputElement.cpp >+++ b/Source/WebCore/html/HTMLInputElement.cpp >@@ -447,7 +447,9 @@ void HTMLInputElement::updateType() > bool neededActivationCallback = needsActivationCallback(); > bool didRespectHeightAndWidth = m_inputType->shouldRespectHeightAndWidthAttributes(); > >+ m_inputType->destroyShadowSubtree(); > m_inputType = newType.release(); >+ m_inputType->createShadowSubtree(); > > setNeedsWillValidateCheck(); > >diff --git a/Source/WebCore/html/InputType.cpp b/Source/WebCore/html/InputType.cpp >index be86399c04074f69776c9a712aa2256fafa0e2d6..729f204eb1a1ed0bfbb5756c3af4d1f0c1833e9a 100644 >--- a/Source/WebCore/html/InputType.cpp >+++ b/Source/WebCore/html/InputType.cpp >@@ -349,6 +349,15 @@ RenderObject* InputType::createRenderer(RenderArena*, RenderStyle* style) const > return RenderObject::createObject(element(), style); > } > >+void InputType::createShadowSubtree() >+{ >+} >+ >+void InputType::destroyShadowSubtree() >+{ >+ element()->setShadowRoot(0); >+} >+ > double InputType::parseToDouble(const String&, double defaultValue) const > { > return defaultValue; >diff --git a/Source/WebCore/html/InputType.h b/Source/WebCore/html/InputType.h >index 4d25a974c300c2878fba628824d07074fffc929a..c3537f624892016cc269d2fd2b3f2d86d018431f 100644 >--- a/Source/WebCore/html/InputType.h >+++ b/Source/WebCore/html/InputType.h >@@ -171,6 +171,11 @@ public: > virtual void accessKeyAction(bool sendToAnyElement); > virtual bool canBeSuccessfulSubmitButton(); > >+ >+ // Shadow tree handling >+ virtual void createShadowSubtree(); >+ void destroyShadowSubtree(); >+ > // Miscellaneous functions > > virtual bool rendererIsNeeded(); >diff --git a/Source/WebCore/html/RangeInputType.cpp b/Source/WebCore/html/RangeInputType.cpp >index 5d71da7878717c6bfd3e38ea14bc23f3970b5c29..3fcb6415d30b487bc3fecfe421c36c30735a8316 100644 >--- a/Source/WebCore/html/RangeInputType.cpp >+++ b/Source/WebCore/html/RangeInputType.cpp >@@ -37,6 +37,7 @@ > #include "HTMLParserIdioms.h" > #include "KeyboardEvent.h" > #include "RenderSlider.h" >+#include "SliderThumbElement.h" > #include "StepRange.h" > #include <limits> > #include <wtf/MathExtras.h> >@@ -186,6 +187,11 @@ void RangeInputType::forwardEvent(Event* event) > toRenderSlider(element()->renderer())->forwardEvent(event); > } > >+void RangeInputType::createShadowSubtree() >+{ >+ element()->setShadowRoot(SliderThumbElement::create(element()->document())); >+} >+ > RenderObject* RangeInputType::createRenderer(RenderArena* arena, RenderStyle*) const > { > return new (arena) RenderSlider(element()); >diff --git a/Source/WebCore/html/RangeInputType.h b/Source/WebCore/html/RangeInputType.h >index 7f341a765570ca19fba6dcff7e58a9e6d0623f0f..57eb2999cda59e5d24570ccc480c0f67ffed9116 100644 >--- a/Source/WebCore/html/RangeInputType.h >+++ b/Source/WebCore/html/RangeInputType.h >@@ -58,6 +58,7 @@ private: > virtual void handleKeydownEvent(KeyboardEvent*); > virtual void forwardEvent(Event*); > virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) const; >+ virtual void createShadowSubtree(); > virtual double parseToDouble(const String&, double) const; > virtual String serialize(double) const; > virtual void accessKeyAction(bool sendToAnyElement); >diff --git a/Source/WebCore/html/shadow/SliderThumbElement.cpp b/Source/WebCore/html/shadow/SliderThumbElement.cpp >index 55301c15ab06d4aba496a2784dc9be65a07017cc..d23feae9e126f69a65d92511ef3a614eb97c1ca5 100644 >--- a/Source/WebCore/html/shadow/SliderThumbElement.cpp >+++ b/Source/WebCore/html/shadow/SliderThumbElement.cpp >@@ -37,13 +37,51 @@ > #include "Frame.h" > #include "MouseEvent.h" > #include "RenderSlider.h" >+#include "RenderTheme.h" > > namespace WebCore { > >+// FIXME: Find a way to cascade appearance and get rid of this class. >+class RenderSliderThumb : public RenderBlock { >+public: >+ RenderSliderThumb(Node*); >+ virtual void layout(); >+}; >+ >+ >+RenderSliderThumb::RenderSliderThumb(Node* node) >+ : RenderBlock(node) >+{ >+} >+ >+void RenderSliderThumb::layout() >+{ >+ RenderStyle* parentStyle = parent()->style(); >+ if (parentStyle->appearance() == SliderVerticalPart) >+ style()->setAppearance(SliderThumbVerticalPart); >+ else if (parentStyle->appearance() == SliderHorizontalPart) >+ style()->setAppearance(SliderThumbHorizontalPart); >+ else if (parentStyle->appearance() == MediaSliderPart) >+ style()->setAppearance(MediaSliderThumbPart); >+ else if (parentStyle->appearance() == MediaVolumeSliderPart) >+ style()->setAppearance(MediaVolumeSliderThumbPart); >+ >+ if (style()->hasAppearance()) { >+ // FIXME: This should pass the style, not the renderer, to the theme. >+ theme()->adjustSliderThumbSize(this); >+ } >+ RenderBlock::layout(); >+} >+ >+RenderObject* SliderThumbElement::createRenderer(RenderArena* arena, RenderStyle*) >+{ >+ return new (arena) RenderSliderThumb(this); >+} >+ > void SliderThumbElement::defaultEventHandler(Event* event) > { > if (!event->isMouseEvent()) { >- ShadowBlockElement::defaultEventHandler(event); >+ HTMLDivElement::defaultEventHandler(event); > return; > } > >@@ -93,7 +131,7 @@ void SliderThumbElement::defaultEventHandler(Event* event) > } > } > >- ShadowBlockElement::defaultEventHandler(event); >+ HTMLDivElement::defaultEventHandler(event); > } > > void SliderThumbElement::detach() >@@ -102,7 +140,7 @@ void SliderThumbElement::detach() > if (Frame* frame = document()->frame()) > frame->eventHandler()->setCapturingMouseEventsNode(0); > } >- ShadowBlockElement::detach(); >+ HTMLDivElement::detach(); > } > > } >diff --git a/Source/WebCore/html/shadow/SliderThumbElement.h b/Source/WebCore/html/shadow/SliderThumbElement.h >index 5220f2bdaef0caa368e2b2eb00aeb6011ef7795c..7219186243fd8dbe94732f8444e2e8102ba4aa62 100644 >--- a/Source/WebCore/html/shadow/SliderThumbElement.h >+++ b/Source/WebCore/html/shadow/SliderThumbElement.h >@@ -33,8 +33,9 @@ > #define SliderThumbElement_h > > #include "FloatPoint.h" >+#include "HTMLDivElement.h" >+#include "HTMLNames.h" > #include "RenderStyleConstants.h" >-#include "ShadowElement.h" > #include <wtf/Forward.h> > > namespace WebCore { >@@ -43,9 +44,9 @@ class HTMLElement; > class Event; > class FloatPoint; > >-class SliderThumbElement : public ShadowBlockElement { >+class SliderThumbElement : public HTMLDivElement { > public: >- static PassRefPtr<SliderThumbElement> create(HTMLElement* shadowParent); >+ static PassRefPtr<SliderThumbElement> create(Document*); > > bool inDragMode() const { return m_inDragMode; } > >@@ -53,22 +54,23 @@ public: > virtual void detach(); > virtual AtomicString shadowPseudoId() const; > >-private: >- SliderThumbElement(HTMLElement* shadowParent); >+private: >+ SliderThumbElement(Document*); >+ virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); > > FloatPoint m_offsetToThumb; > bool m_inDragMode; > }; > >-inline SliderThumbElement::SliderThumbElement(HTMLElement* shadowParent) >- : ShadowBlockElement(shadowParent) >+inline SliderThumbElement::SliderThumbElement(Document* document) >+ : HTMLDivElement(HTMLNames::divTag, document) > , m_inDragMode(false) > { > } > >-inline PassRefPtr<SliderThumbElement> SliderThumbElement::create(HTMLElement* shadowParent) >+inline PassRefPtr<SliderThumbElement> SliderThumbElement::create(Document* document) > { >- return adoptRef(new SliderThumbElement(shadowParent)); >+ return adoptRef(new SliderThumbElement(document)); > } > > inline AtomicString SliderThumbElement::shadowPseudoId() const >@@ -77,7 +79,12 @@ inline AtomicString SliderThumbElement::shadowPseudoId() const > return sliderThumb; > } > >+inline SliderThumbElement* toSliderThumbElement(Node* node) >+{ >+ ASSERT(!node || node->isHTMLElement()); >+ return static_cast<SliderThumbElement*>(node); > } > >+} > > #endif >diff --git a/Source/WebCore/rendering/MediaControlElements.cpp b/Source/WebCore/rendering/MediaControlElements.cpp >index e5e5ae58b6c1ee74b9ab999b14e83cc6bc697474..73cab868f6dccef4e4bd8c9751d0f1ff41225de8 100644 >--- a/Source/WebCore/rendering/MediaControlElements.cpp >+++ b/Source/WebCore/rendering/MediaControlElements.cpp >@@ -449,6 +449,8 @@ void MediaControlInputElement::attach() > parentNode()->renderer()->addChild(renderer, sibling ? sibling->renderer() : 0); > } > ContainerNode::attach(); >+ if (Node* shadowNode = shadowRoot()) >+ shadowNode->attach(); > } > > void MediaControlInputElement::updateStyle() >diff --git a/Source/WebCore/rendering/RenderSlider.cpp b/Source/WebCore/rendering/RenderSlider.cpp >index 5eff8262270cc7e63256f7beceec4ce67000db63..b0dc0d9f98eb363e037961aed68e98f76e4a68d6 100644 >--- a/Source/WebCore/rendering/RenderSlider.cpp >+++ b/Source/WebCore/rendering/RenderSlider.cpp >@@ -61,8 +61,6 @@ RenderSlider::RenderSlider(HTMLInputElement* element) > > RenderSlider::~RenderSlider() > { >- if (m_thumb) >- m_thumb->detach(); > } > > int RenderSlider::baselinePosition(FontBaseline, bool /*firstLine*/, LineDirectionMode, LinePositionMode) const >@@ -101,37 +99,14 @@ void RenderSlider::computePreferredLogicalWidths() > setPreferredLogicalWidthsDirty(false); > } > >-void RenderSlider::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle) >-{ >- RenderBlock::styleDidChange(diff, oldStyle); >- >- if (m_thumb) >- m_thumb->renderer()->setStyle(createThumbStyle(style())); >-} >- >-PassRefPtr<RenderStyle> RenderSlider::createThumbStyle(const RenderStyle* parentStyle) >-{ >- RefPtr<RenderStyle> thumbStyle = document()->styleSelector()->styleForElement(m_thumb.get(), style(), false); >- >- if (parentStyle->appearance() == SliderVerticalPart) >- thumbStyle->setAppearance(SliderThumbVerticalPart); >- else if (parentStyle->appearance() == SliderHorizontalPart) >- thumbStyle->setAppearance(SliderThumbHorizontalPart); >- else if (parentStyle->appearance() == MediaSliderPart) >- thumbStyle->setAppearance(MediaSliderThumbPart); >- else if (parentStyle->appearance() == MediaVolumeSliderPart) >- thumbStyle->setAppearance(MediaVolumeSliderThumbPart); >- >- return thumbStyle.release(); >-} >- > IntRect RenderSlider::thumbRect() > { >- if (!m_thumb) >+ SliderThumbElement* thumbElement = sliderThumbElement(); >+ if (!thumbElement) > return IntRect(); > > IntRect thumbRect; >- RenderBox* thumb = toRenderBox(m_thumb->renderer()); >+ RenderBox* thumb = toRenderBox(thumbElement->renderer()); > > thumbRect.setWidth(thumb->style()->width().calcMinValue(contentWidth())); > thumbRect.setHeight(thumb->style()->height().calcMinValue(contentHeight())); >@@ -153,7 +128,8 @@ void RenderSlider::layout() > { > ASSERT(needsLayout()); > >- RenderBox* thumb = m_thumb ? toRenderBox(m_thumb->renderer()) : 0; >+ SliderThumbElement* thumbElement = sliderThumbElement(); >+ RenderBox* thumb = thumbElement ? toRenderBox(thumbElement->renderer()) : 0; > > IntSize baseSize(borderAndPaddingWidth(), borderAndPaddingHeight()); > >@@ -200,43 +176,35 @@ void RenderSlider::layout() > setNeedsLayout(false); > } > >-void RenderSlider::updateFromElement() >+SliderThumbElement* RenderSlider::sliderThumbElement() const > { >- // Layout will take care of the thumb's size and position. >- if (!m_thumb) { >- m_thumb = SliderThumbElement::create(static_cast<HTMLElement*>(node())); >- RefPtr<RenderStyle> thumbStyle = createThumbStyle(style()); >- m_thumb->setRenderer(m_thumb->createRenderer(renderArena(), thumbStyle.get())); >- m_thumb->renderer()->setStyle(thumbStyle.release()); >- m_thumb->setAttached(); >- m_thumb->setInDocument(); >- addChild(m_thumb->renderer()); >- } >- setNeedsLayout(true); >+ return toSliderThumbElement(static_cast<Element*>(node())->shadowRoot()); > } > > bool RenderSlider::mouseEventIsInThumb(MouseEvent* evt) > { >- if (!m_thumb || !m_thumb->renderer()) >+ SliderThumbElement* thumbElement = sliderThumbElement(); >+ if (!thumbElement || !thumbElement->renderer()) > return false; > > #if ENABLE(VIDEO) > if (style()->appearance() == MediaSliderPart || style()->appearance() == MediaVolumeSliderPart) { >- MediaControlInputElement *sliderThumb = static_cast<MediaControlInputElement*>(m_thumb->renderer()->node()); >+ MediaControlInputElement* sliderThumb = static_cast<MediaControlInputElement*>(thumbElement->renderer()->node()); > return sliderThumb->hitTest(evt->absoluteLocation()); > } > #endif > >- FloatPoint localPoint = m_thumb->renderBox()->absoluteToLocal(evt->absoluteLocation(), false, true); >- IntRect thumbBounds = m_thumb->renderBox()->borderBoxRect(); >+ FloatPoint localPoint = thumbElement->renderBox()->absoluteToLocal(evt->absoluteLocation(), false, true); >+ IntRect thumbBounds = thumbElement->renderBox()->borderBoxRect(); > return thumbBounds.contains(roundedIntPoint(localPoint)); > } > > FloatPoint RenderSlider::mouseEventOffsetToThumb(MouseEvent* evt) > { >- ASSERT(m_thumb && m_thumb->renderer()); >- FloatPoint localPoint = m_thumb->renderBox()->absoluteToLocal(evt->absoluteLocation(), false, true); >- IntRect thumbBounds = m_thumb->renderBox()->borderBoxRect(); >+ SliderThumbElement* thumbElement = sliderThumbElement(); >+ ASSERT(thumbElement && thumbElement->renderer()); >+ FloatPoint localPoint = thumbElement->renderBox()->absoluteToLocal(evt->absoluteLocation(), false, true); >+ IntRect thumbBounds = thumbElement->renderBox()->borderBoxRect(); > FloatPoint offset; > offset.setX(thumbBounds.x() + thumbBounds.width() / 2 - localPoint.x()); > offset.setY(thumbBounds.y() + thumbBounds.height() / 2 - localPoint.y()); >@@ -245,7 +213,8 @@ FloatPoint RenderSlider::mouseEventOffsetToThumb(MouseEvent* evt) > > void RenderSlider::setValueForPosition(int position) > { >- if (!m_thumb || !m_thumb->renderer()) >+ SliderThumbElement* thumbElement = sliderThumbElement(); >+ if (!thumbElement || !thumbElement->renderer()) > return; > > HTMLInputElement* element = static_cast<HTMLInputElement*>(node()); >@@ -270,40 +239,45 @@ void RenderSlider::setValueForPosition(int position) > > int RenderSlider::positionForOffset(const IntPoint& p) > { >- if (!m_thumb || !m_thumb->renderer()) >+ SliderThumbElement* thumbElement = sliderThumbElement(); >+ if (!thumbElement || !thumbElement->renderer()) > return 0; > > int position; > if (style()->appearance() == SliderVerticalPart || style()->appearance() == MediaVolumeSliderPart) >- position = p.y() - m_thumb->renderBox()->height() / 2; >+ position = p.y() - thumbElement->renderBox()->height() / 2; > else >- position = p.x() - m_thumb->renderBox()->width() / 2; >+ position = p.x() - thumbElement->renderBox()->width() / 2; > > return max(0, min(position, trackSize())); > } > > int RenderSlider::currentPosition() > { >- ASSERT(m_thumb); >- ASSERT(m_thumb->renderer()); >+ SliderThumbElement* thumbElement = sliderThumbElement(); >+ ASSERT(thumbElement && thumbElement->renderer()); > > if (style()->appearance() == SliderVerticalPart || style()->appearance() == MediaVolumeSliderPart) >- return toRenderBox(m_thumb->renderer())->y() - contentBoxRect().y(); >- return toRenderBox(m_thumb->renderer())->x() - contentBoxRect().x(); >+ return toRenderBox(thumbElement->renderer())->y() - contentBoxRect().y(); >+ return toRenderBox(thumbElement->renderer())->x() - contentBoxRect().x(); > } > > int RenderSlider::trackSize() > { >- ASSERT(m_thumb); >- ASSERT(m_thumb->renderer()); >+ SliderThumbElement* thumbElement = sliderThumbElement(); >+ ASSERT(thumbElement && thumbElement->renderer()); > > if (style()->appearance() == SliderVerticalPart || style()->appearance() == MediaVolumeSliderPart) >- return contentHeight() - m_thumb->renderBox()->height(); >- return contentWidth() - m_thumb->renderBox()->width(); >+ return contentHeight() - thumbElement->renderBox()->height(); >+ return contentWidth() - thumbElement->renderBox()->width(); > } > > void RenderSlider::forwardEvent(Event* event) > { >+ SliderThumbElement* thumbElement = sliderThumbElement(); >+ if (!thumbElement) >+ return; >+ > if (event->isMouseEvent()) { > MouseEvent* mouseEvent = static_cast<MouseEvent*>(event); > if (event->type() == eventNames().mousedownEvent && mouseEvent->button() == LeftButton) { >@@ -314,12 +288,13 @@ void RenderSlider::forwardEvent(Event* event) > } > } > >- m_thumb->defaultEventHandler(event); >+ thumbElement->defaultEventHandler(event); > } > > bool RenderSlider::inDragMode() const > { >- return m_thumb && m_thumb->inDragMode(); >+ SliderThumbElement* thumbElement = sliderThumbElement(); >+ return thumbElement && thumbElement->inDragMode(); > } > > } // namespace WebCore >diff --git a/Source/WebCore/rendering/RenderSlider.h b/Source/WebCore/rendering/RenderSlider.h >index 03779a39da66fafd5c6c8f4dcde5182093fad390..ba8ef69fea618308cc204db00b17f3c72322b171 100644 >--- a/Source/WebCore/rendering/RenderSlider.h >+++ b/Source/WebCore/rendering/RenderSlider.h >@@ -45,8 +45,9 @@ namespace WebCore { > virtual int baselinePosition(FontBaseline, bool firstLine, LineDirectionMode, LinePositionMode = PositionOnContainingLine) const; > virtual void computePreferredLogicalWidths(); > virtual void layout(); >- virtual void updateFromElement(); > >+ // FIXME: Eventually, accessing sliderThumbElement should not be necessary in this class. >+ SliderThumbElement* sliderThumbElement() const; > bool mouseEventIsInThumb(MouseEvent*); > FloatPoint mouseEventOffsetToThumb(MouseEvent*); > >@@ -56,16 +57,10 @@ namespace WebCore { > > int currentPosition(); > >- virtual void styleDidChange(StyleDifference, const RenderStyle* oldStyle); >- > virtual bool requiresForcedStyleRecalcPropagation() const { return true; } > >- PassRefPtr<RenderStyle> createThumbStyle(const RenderStyle* parentStyle); >- > int trackSize(); > >- RefPtr<SliderThumbElement> m_thumb; >- > friend class SliderThumbElement; > }; >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 44907
:
65974
|
66508
|
67262
|
67571
|
76266
| 78623