From ecd9c29a964186d079c569b74f4ca9cf12ae5901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20R=C3=B8dal?= Date: Tue, 3 May 2011 16:41:18 +0200 Subject: [PATCH] Wheel event forwarding. --- src/gui/kernel/qwidgetwindow_qpa.cpp | 18 ++++++++++++++++++ src/gui/kernel/qwidgetwindow_qpa_p.h | 1 + 2 files changed, 19 insertions(+) diff --git a/src/gui/kernel/qwidgetwindow_qpa.cpp b/src/gui/kernel/qwidgetwindow_qpa.cpp index b5bc50c76d..fc49b30417 100644 --- a/src/gui/kernel/qwidgetwindow_qpa.cpp +++ b/src/gui/kernel/qwidgetwindow_qpa.cpp @@ -77,6 +77,10 @@ bool QWidgetWindow::event(QEvent *event) handleResizeEvent(static_cast(event)); return true; + case QEvent::Wheel: + handleWheelEvent(static_cast(event)); + return true; + default: break; } @@ -127,4 +131,18 @@ void QWidgetWindow::handleCloseEvent(QCloseEvent *) m_widget->d_func()->close_helper(QWidgetPrivate::CloseWithSpontaneousEvent); } +void QWidgetWindow::handleWheelEvent(QWheelEvent *event) +{ + // which child should have it? + QWidget *widget = m_widget->childAt(event->pos()); + + if (!widget) + widget = m_widget; + + QPoint mapped = widget->mapFrom(m_widget, event->pos()); + + QWheelEvent translated(mapped, event->globalPos(), event->delta(), event->buttons(), event->modifiers(), event->orientation()); + QGuiApplication::sendSpontaneousEvent(widget, &translated); +} + QT_END_NAMESPACE diff --git a/src/gui/kernel/qwidgetwindow_qpa_p.h b/src/gui/kernel/qwidgetwindow_qpa_p.h index 37c9f383ea..0780af1c72 100644 --- a/src/gui/kernel/qwidgetwindow_qpa_p.h +++ b/src/gui/kernel/qwidgetwindow_qpa_p.h @@ -68,6 +68,7 @@ protected: void handleMouseEvent(QMouseEvent *); void handleMoveEvent(QMoveEvent *); void handleResizeEvent(QResizeEvent *); + void handleWheelEvent(QWheelEvent *); private: QWidget *m_widget;