blob: b6d2b2dcfbb8098af52a003b39473fc0431bbe6e [file] [log] [blame]
/**
* This file is part of the DOM implementation for KDE.
*
* 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 Apple Computer, Inc.
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "config.h"
#include "MouseEvent.h"
#include "EventNames.h"
namespace WebCore {
using namespace EventNames;
MouseEvent::MouseEvent()
: m_button(0)
{
}
MouseEvent::MouseEvent(const AtomicString& eventType, bool canBubble, bool cancelable, AbstractView* view,
int detail, int screenX, int screenY, int clientX, int clientY,
bool ctrlKey, bool altKey, bool shiftKey, bool metaKey, unsigned short button,
EventTargetNode* relatedTarget, Clipboard* clipboard, bool isSimulated)
: MouseRelatedEvent(eventType, canBubble, cancelable, view, detail, screenX, screenY,
clientX, clientY, ctrlKey, altKey, shiftKey, metaKey, isSimulated)
, m_button(button)
, m_relatedTarget(relatedTarget)
, m_clipboard(clipboard)
{
}
MouseEvent::~MouseEvent()
{
}
void MouseEvent::initMouseEvent(const AtomicString& type, bool canBubble, bool cancelable, AbstractView* view,
int detail, int screenX, int screenY, int clientX, int clientY,
bool ctrlKey, bool altKey, bool shiftKey, bool metaKey,
unsigned short button, EventTargetNode* relatedTarget)
{
if (dispatched())
return;
initUIEvent(type, canBubble, cancelable, view, detail);
m_screenX = screenX;
m_screenY = screenY;
m_clientX = clientX;
m_clientY = clientY;
m_ctrlKey = ctrlKey;
m_altKey = altKey;
m_shiftKey = shiftKey;
m_metaKey = metaKey;
m_button = button;
m_relatedTarget = relatedTarget;
initCoordinates();
}
bool MouseEvent::isMouseEvent() const
{
return true;
}
bool MouseEvent::isDragEvent() const
{
const AtomicString& t = type();
return t == dragenterEvent || t == dragoverEvent || t == dragleaveEvent || t == dropEvent
|| t == dragstartEvent|| t == dragEvent || t == dragendEvent;
}
int MouseEvent::which() const
{
// For KHTML, 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"
return (type() == mouseoutEvent) ? relatedTarget() : target();
}
Node* MouseEvent::fromElement() const
{
// MSIE extension - "object from which activation or the mouse pointer is exiting during the event" (huh?)
return (type() == mouseoutEvent) ? target() : relatedTarget();
}
} // namespace WebCore