diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2011-05-03 16:41:18 +0200 |
---|---|---|
committer | Samuel Rødal <samuel.rodal@nokia.com> | 2011-05-03 16:41:26 +0200 |
commit | ecd9c29a964186d079c569b74f4ca9cf12ae5901 (patch) | |
tree | d88f09475bc4d11521a177c53012ef0868a81a2c /src/gui | |
parent | 4c6a882e8653ba38da945be8d6ba1f38d8133256 (diff) |
Wheel event forwarding.
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/qwidgetwindow_qpa.cpp | 18 | ||||
-rw-r--r-- | src/gui/kernel/qwidgetwindow_qpa_p.h | 1 |
2 files changed, 19 insertions, 0 deletions
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<QResizeEvent *>(event)); return true; + case QEvent::Wheel: + handleWheelEvent(static_cast<QWheelEvent *>(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; |