summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 554e70bc443..fde378ce02c 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 4b6ec1bb941..127bdedc78a 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 f1a86cb15a3..d8e95867367 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 2bc3fa798df..1055137c22e 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());