diff options
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()); |
