Lomiri
MouseEventGenerator.cpp
1 /*
2  * Copyright (C) 2015-2016 Canonical Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #include "MouseEventGenerator.h"
18 
19 #include <QCoreApplication>
20 #include <QMouseEvent>
21 #include <QQuickItem>
22 
23 MouseEventGenerator::MouseEventGenerator(QObject *parent)
24  : QObject(parent)
25 {
26 }
27 
28 void MouseEventGenerator::move(const QPointF position)
29 {
30  if (!m_mousePressed || !m_targetItem) {
31  return;
32  }
33 
34  QMouseEvent mouseEvent(QEvent::MouseMove,
35  QPointF(position.x(), position.y()), Qt::NoButton, Qt::LeftButton, Qt::NoModifier);
36 
37  QCoreApplication::sendEvent(m_targetItem, &mouseEvent);
38 }
39 
40 void MouseEventGenerator::press(const QPointF position)
41 {
42  if (m_mousePressed || !m_targetItem) {
43  return;
44  }
45 
46  QMouseEvent mouseEvent(QEvent::MouseButtonPress,
47  QPointF(position.x(), position.y()), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
48 
49  QCoreApplication::sendEvent(m_targetItem, &mouseEvent);
50  m_mousePressed = true;
51 }
52 
53 void MouseEventGenerator::release(const QPointF position)
54 {
55  if (!m_mousePressed || !m_targetItem) {
56  return;
57  }
58 
59  QMouseEvent mouseEvent(QEvent::MouseButtonRelease,
60  QPointF(position.x(), position.y()), Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);
61 
62  QCoreApplication::sendEvent(m_targetItem, &mouseEvent);
63  m_mousePressed = false;
64 }