summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/html/shadow
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-05-13 16:23:25 +0100
committerBen Murdoch <benm@google.com>2011-05-16 11:35:02 +0100
commit65f03d4f644ce73618e5f4f50dd694b26f55ae12 (patch)
treef478babb801e720de7bfaee23443ffe029f58731 /Source/WebCore/html/shadow
parent47de4a2fb7262c7ebdb9cd133ad2c54c187454d0 (diff)
downloadexternal_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.zip
external_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.tar.gz
external_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.tar.bz2
Merge WebKit at r75993: Initial merge by git.
Change-Id: I602bbdc3974787a3b0450456a30a7868286921c3
Diffstat (limited to 'Source/WebCore/html/shadow')
-rw-r--r--Source/WebCore/html/shadow/SliderThumbElement.cpp49
-rw-r--r--Source/WebCore/html/shadow/SliderThumbElement.h33
2 files changed, 71 insertions, 11 deletions
diff --git a/Source/WebCore/html/shadow/SliderThumbElement.cpp b/Source/WebCore/html/shadow/SliderThumbElement.cpp
index d29d257..0402e89 100644
--- a/Source/WebCore/html/shadow/SliderThumbElement.cpp
+++ b/Source/WebCore/html/shadow/SliderThumbElement.cpp
@@ -37,6 +37,7 @@
#include "Frame.h"
#include "MouseEvent.h"
#include "RenderSlider.h"
+#include "RenderTheme.h"
#if PLATFORM(ANDROID) && ENABLE(TOUCH_EVENTS)
#include "TouchEvent.h"
@@ -44,14 +45,58 @@
namespace WebCore {
+// FIXME: Find a way to cascade appearance (see the layout method) 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()
+{
+ // FIXME: Hard-coding this cascade of appearance is bad, because it's something
+ // that CSS usually does. We need to find a way to express this in CSS.
+ 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)
{
+<<<<<<< HEAD
if (!event->isMouseEvent()
#if PLATFORM(ANDROID) && ENABLE(TOUCH_EVENTS)
&& !event->isTouchEvent()
#endif
) {
ShadowBlockElement::defaultEventHandler(event);
+=======
+ if (!event->isMouseEvent()) {
+ HTMLDivElement::defaultEventHandler(event);
+>>>>>>> WebKit.org @ r75993
return;
}
@@ -126,7 +171,7 @@ void SliderThumbElement::defaultEventHandler(Event* event)
}
}
- ShadowBlockElement::defaultEventHandler(event);
+ HTMLDivElement::defaultEventHandler(event);
}
void SliderThumbElement::detach()
@@ -135,7 +180,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 8205746..7219186 100644
--- a/Source/WebCore/html/shadow/SliderThumbElement.h
+++ b/Source/WebCore/html/shadow/SliderThumbElement.h
@@ -33,7 +33,9 @@
#define SliderThumbElement_h
#include "FloatPoint.h"
-#include "ShadowElement.h"
+#include "HTMLDivElement.h"
+#include "HTMLNames.h"
+#include "RenderStyleConstants.h"
#include <wtf/Forward.h>
namespace WebCore {
@@ -42,34 +44,47 @@ 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; }
virtual void defaultEventHandler(Event*);
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
+{
+ DEFINE_STATIC_LOCAL(AtomicString, sliderThumb, ("-webkit-slider-thumb"));
+ return sliderThumb;
}
+inline SliderThumbElement* toSliderThumbElement(Node* node)
+{
+ ASSERT(!node || node->isHTMLElement());
+ return static_cast<SliderThumbElement*>(node);
+}
+
+}
#endif