diff options
author | Lars Knoll <lars.knoll@nokia.com> | 2009-03-23 09:34:13 (GMT) |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2009-03-23 09:34:13 (GMT) |
commit | 67ad0519fd165acee4a4d2a94fa502e9e4847bd0 (patch) | |
tree | 1dbf50b3dff8d5ca7e9344733968c72704eb15ff /src/3rdparty/webkit/WebCore/dom/MouseEvent.cpp | |
download | Qt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.zip Qt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.tar.gz Qt-67ad0519fd165acee4a4d2a94fa502e9e4847bd0.tar.bz2 |
Long live Qt!
Diffstat (limited to 'src/3rdparty/webkit/WebCore/dom/MouseEvent.cpp')
-rw-r--r-- | src/3rdparty/webkit/WebCore/dom/MouseEvent.cpp | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/src/3rdparty/webkit/WebCore/dom/MouseEvent.cpp b/src/3rdparty/webkit/WebCore/dom/MouseEvent.cpp new file mode 100644 index 0000000..1c97522 --- /dev/null +++ b/src/3rdparty/webkit/WebCore/dom/MouseEvent.cpp @@ -0,0 +1,118 @@ +/* + * Copyright (C) 2001 Peter Kelly (pmk@post.com) + * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) + * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) + * Copyright (C) 2003, 2005, 2006, 2008 Apple Inc. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#include "config.h" +#include "MouseEvent.h" + +#include "EventNames.h" + +namespace WebCore { + +MouseEvent::MouseEvent() + : m_button(0) + , m_buttonDown(false) +{ +} + +MouseEvent::MouseEvent(const AtomicString& eventType, bool canBubble, bool cancelable, PassRefPtr<AbstractView> view, + int detail, int screenX, int screenY, int pageX, int pageY, + bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, + unsigned short button, PassRefPtr<EventTargetNode> relatedTarget, + PassRefPtr<Clipboard> clipboard, bool isSimulated) + : MouseRelatedEvent(eventType, canBubble, cancelable, view, detail, screenX, screenY, + pageX, pageY, ctrlKey, altKey, shiftKey, metaKey, isSimulated) + , m_button(button == (unsigned short)-1 ? 0 : button) + , m_buttonDown(button != (unsigned short)-1) + , m_relatedTarget(relatedTarget) + , m_clipboard(clipboard) +{ +} + +MouseEvent::~MouseEvent() +{ +} + +void MouseEvent::initMouseEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<AbstractView> view, + int detail, int screenX, int screenY, int clientX, int clientY, + bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, + unsigned short button, PassRefPtr<EventTargetNode> relatedTarget) +{ + if (dispatched()) + return; + + initUIEvent(type, canBubble, cancelable, view, detail); + + m_screenX = screenX; + m_screenY = screenY; + m_ctrlKey = ctrlKey; + m_altKey = altKey; + m_shiftKey = shiftKey; + m_metaKey = metaKey; + m_button = button == (unsigned short)-1 ? 0 : button; + m_buttonDown = button != (unsigned short)-1; + m_relatedTarget = relatedTarget; + + initCoordinates(clientX, clientY); + + // FIXME: m_isSimulated is not set to false here. + // FIXME: m_clipboard is not set to 0 here. +} + +bool MouseEvent::isMouseEvent() const +{ + return true; +} + +bool MouseEvent::isDragEvent() const +{ + const AtomicString& t = type(); + return t == eventNames().dragenterEvent || t == eventNames().dragoverEvent || t == eventNames().dragleaveEvent || t == eventNames().dropEvent + || t == eventNames().dragstartEvent|| t == eventNames().dragEvent || t == eventNames().dragendEvent; +} + +int MouseEvent::which() const +{ + // For the DOM, the return values for left, middle and right mouse buttons are 0, 1, 2, respectively. + // For the Netscape "which" property, the return values for left, middle and right mouse buttons are 1, 2, 3, respectively. + // So we must add 1. + return m_button + 1; +} + +Node* MouseEvent::toElement() const +{ + // MSIE extension - "the object toward which the user is moving the mouse pointer" + if (type() == eventNames().mouseoutEvent) + return relatedTarget(); + + 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) + return relatedTarget(); + + return target() ? target()->toNode() : 0; +} + +} // namespace WebCore |