summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohannes Zellner <johannes.zellner@nokia.com>2012-06-09 18:40:33 -0700
committerQt by Nokia <qt-info@nokia.com>2012-06-10 09:39:36 +0200
commit16548ce85ee29ad57f6948b262ce0dbcc99ab46d (patch)
tree85271340a3d36a7a02d8a6ca9cf565d1da06827d /src
parent612fae1ae6299d9614b2af7efd122830c431240f (diff)
evdevmouse: send correct event position for wheel events
The current position for mouse events is synchronized in the mousemanager, thus the wheel event needs to pick the event position from there. Change-Id: I1e73a0154b596885c7092f0a74e6dd448deb428c Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp12
-rw-r--r--src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h1
-rw-r--r--src/platformsupport/input/evdevmouse/qevdevmousemanager.cpp11
-rw-r--r--src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h1
4 files changed, 17 insertions, 8 deletions
diff --git a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp
index 554e70bc44..fde378ce02 100644
--- a/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp
+++ b/src/platformsupport/input/evdevmouse/qevdevmousehandler.cpp
@@ -172,16 +172,12 @@ void QEvdevMouseHandler::readMouseData()
posChanged = true;
} else if (data->code == ABS_WHEEL) { // vertical scroll
// data->value: 1 == up, -1 == down
- int delta = 120 * data->value;
- QWindowSystemInterface::handleWheelEvent(0, QPoint(m_x, m_y),
- QPoint(m_x, m_y),
- delta, Qt::Vertical);
+ const int delta = 120 * data->value;
+ emit handleWheelEvent(delta, Qt::Vertical);
} else if (data->code == ABS_THROTTLE) { // horizontal scroll
// data->value: 1 == right, -1 == left
- int delta = 120 * -data->value;
- QWindowSystemInterface::handleWheelEvent(0, QPoint(m_x, m_y),
- QPoint(m_x, m_y),
- delta, Qt::Horizontal);
+ const int delta = 120 * -data->value;
+ emit handleWheelEvent(delta, Qt::Horizontal);
}
} else if (data->type == EV_KEY && data->code == BTN_TOUCH) {
// We care about touchpads only, not touchscreens -> don't map to button press.
diff --git a/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h b/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h
index 4b6ec1bb94..127bdedc78 100644
--- a/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h
+++ b/src/platformsupport/input/evdevmouse/qevdevmousehandler_p.h
@@ -60,6 +60,7 @@ public:
signals:
void handleMouseEvent(int x, int y, Qt::MouseButtons buttons);
+ void handleWheelEvent(int delta, Qt::Orientation orientation);
private slots:
void readMouseData();
diff --git a/src/platformsupport/input/evdevmouse/qevdevmousemanager.cpp b/src/platformsupport/input/evdevmouse/qevdevmousemanager.cpp
index f1a86cb15a..d8e9586736 100644
--- a/src/platformsupport/input/evdevmouse/qevdevmousemanager.cpp
+++ b/src/platformsupport/input/evdevmouse/qevdevmousemanager.cpp
@@ -132,6 +132,16 @@ void QEvdevMouseManager::handleMouseEvent(int x, int y, Qt::MouseButtons buttons
#endif
}
+void QEvdevMouseManager::handleWheelEvent(int delta, Qt::Orientation orientation)
+{
+ QPoint pos(m_x + m_xoffset, m_y + m_yoffset);
+ QWindowSystemInterface::handleWheelEvent(0, pos, pos, delta, orientation);
+
+#ifdef QT_QPA_MOUSEMANAGER_DEBUG
+ qDebug("mouse wheel event %dx%d %d %d", pos.x(), pos.y(), delta, int(orientation));
+#endif
+}
+
void QEvdevMouseManager::addMouse(const QString &deviceNode)
{
#ifdef QT_QPA_MOUSEMANAGER_DEBUG
@@ -142,6 +152,7 @@ void QEvdevMouseManager::addMouse(const QString &deviceNode)
handler = QEvdevMouseHandler::create(deviceNode, m_spec);
if (handler) {
connect(handler, SIGNAL(handleMouseEvent(int, int, Qt::MouseButtons)), this, SLOT(handleMouseEvent(int, int, Qt::MouseButtons)));
+ connect(handler, SIGNAL(handleWheelEvent(int, Qt::Orientation)), this, SLOT(handleWheelEvent(int, Qt::Orientation)));
m_mice.insert(deviceNode, handler);
} else {
qWarning("Failed to open mouse");
diff --git a/src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h b/src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h
index 2bc3fa798d..1055137c22 100644
--- a/src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h
+++ b/src/platformsupport/input/evdevmouse/qevdevmousemanager_p.h
@@ -63,6 +63,7 @@ public:
public slots:
void handleMouseEvent(int x, int y, Qt::MouseButtons buttons);
+ void handleWheelEvent(int delta, Qt::Orientation orientation);
private slots:
void addMouse(const QString &deviceNode = QString());