| Index: Source/core/dom/MouseEvent.cpp
|
| diff --git a/Source/core/dom/MouseEvent.cpp b/Source/core/dom/MouseEvent.cpp
|
| index c0a6cbedeb3bfba19dca9035e822726865cbd148..e11d1d85bae1ca5cfb61a95c02f29761b1b9b914 100644
|
| --- a/Source/core/dom/MouseEvent.cpp
|
| +++ b/Source/core/dom/MouseEvent.cpp
|
| @@ -57,9 +57,11 @@ PassRefPtr<MouseEvent> MouseEvent::create(const AtomicString& eventType, PassRef
|
| {
|
| ASSERT(event.type() == PlatformEvent::MouseMoved || event.button() != NoButton);
|
|
|
| - bool isCancelable = eventType != eventNames().mousemoveEvent;
|
| + bool isMouseEnterOrLeave = eventType == eventNames().mouseenterEvent || eventType == eventNames().mouseleaveEvent;
|
| + bool isCancelable = eventType != eventNames().mousemoveEvent && !isMouseEnterOrLeave;
|
| + bool isBubbling = !isMouseEnterOrLeave;
|
|
|
| - return MouseEvent::create(eventType, true, isCancelable, view,
|
| + return MouseEvent::create(eventType, isBubbling, isCancelable, view,
|
| detail, event.globalPosition().x(), event.globalPosition().y(), event.position().x(), event.position().y(),
|
| event.movementDelta().x(), event.movementDelta().y(),
|
| event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey(), event.button(),
|
| @@ -189,18 +191,18 @@ int MouseEvent::which() const
|
| Node* MouseEvent::toElement() const
|
| {
|
| // MSIE extension - "the object toward which the user is moving the mouse pointer"
|
| - if (type() == eventNames().mouseoutEvent)
|
| + if (type() == eventNames().mouseoutEvent || type() == eventNames().mouseleaveEvent)
|
| return relatedTarget() ? relatedTarget()->toNode() : 0;
|
| -
|
| +
|
| return target() ? target()->toNode() : 0;
|
| }
|
|
|
| Node* MouseEvent::fromElement() const
|
| {
|
| // MSIE extension - "object from which activation or the mouse pointer is exiting during the event" (huh?)
|
| - if (type() != eventNames().mouseoutEvent)
|
| + if (type() != eventNames().mouseoutEvent && type() != eventNames().mouseleaveEvent)
|
| return relatedTarget() ? relatedTarget()->toNode() : 0;
|
| -
|
| +
|
| return target() ? target()->toNode() : 0;
|
| }
|
|
|
|
|