1/*
2 * Copyright (C) 2006 Zack Rusin <zack@kde.org>
3 * Copyright (C) 2008, 2009 INdT - Instituto Nokia de Tecnologia
4 * Copyright (C) 2009-2010 ProFUSION embedded systems
5 * Copyright (C) 2009-2010 Samsung Electronics
6 *
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 *    notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 *    notice, this list of conditions and the following disclaimer in the
16 *    documentation and/or other materials provided with the distribution.
17 *
18 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
19 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#include "config.h"
32
33#include "PlatformMouseEvent.h"
34
35#include <Evas.h>
36#include <wtf/CurrentTime.h>
37
38namespace WebCore {
39
40void PlatformMouseEvent::setClickCount(unsigned int flags)
41{
42    if (flags & EVAS_BUTTON_TRIPLE_CLICK)
43        m_clickCount = 3;
44    else if (flags & EVAS_BUTTON_DOUBLE_CLICK)
45        m_clickCount = 2;
46    else
47        m_clickCount = 1;
48}
49
50PlatformMouseEvent::PlatformMouseEvent(const Evas_Event_Mouse_Down* event, IntPoint position)
51    : PlatformEvent(PlatformEvent::MousePressed, evas_key_modifier_is_set(event->modifiers, "Shift"), evas_key_modifier_is_set(event->modifiers, "Control"), evas_key_modifier_is_set(event->modifiers, "Alt"), evas_key_modifier_is_set(event->modifiers, "Meta"), currentTime())
52    , m_position(IntPoint(event->canvas.x - position.x(), event->canvas.y - position.y()))
53    , m_globalPosition(IntPoint(event->canvas.x, event->canvas.y))
54    , m_button(MouseButton(event->button - 1))
55{
56    setClickCount(event->flags);
57}
58
59PlatformMouseEvent::PlatformMouseEvent(const Evas_Event_Mouse_Up* event, IntPoint position)
60    : PlatformEvent(PlatformEvent::MouseReleased, evas_key_modifier_is_set(event->modifiers, "Shift"), evas_key_modifier_is_set(event->modifiers, "Control"), evas_key_modifier_is_set(event->modifiers, "Alt"), evas_key_modifier_is_set(event->modifiers, "Meta"), currentTime())
61    , m_position(IntPoint(event->canvas.x - position.x(), event->canvas.y - position.y()))
62    , m_globalPosition(IntPoint(event->canvas.x, event->canvas.y))
63    , m_button(MouseButton(event->button - 1))
64{
65    setClickCount(event->flags);
66}
67
68PlatformMouseEvent::PlatformMouseEvent(const Evas_Event_Mouse_Move* event, IntPoint position)
69    : PlatformEvent(PlatformEvent::MouseMoved, evas_key_modifier_is_set(event->modifiers, "Shift"), evas_key_modifier_is_set(event->modifiers, "Control"), evas_key_modifier_is_set(event->modifiers, "Alt"), evas_key_modifier_is_set(event->modifiers, "Meta"), currentTime())
70    , m_position(IntPoint(event->cur.canvas.x - position.x(), event->cur.canvas.y - position.y()))
71    , m_globalPosition(IntPoint(event->cur.canvas.x, event->cur.canvas.y))
72    , m_button(MouseButton(event->buttons - 1))
73    , m_clickCount(0)
74{
75}
76
77}
78