From: Samuel Rødal Date: Tue, 3 May 2011 14:41:18 +0000 (+0200) Subject: Wheel event forwarding. X-Git-Tag: qt-v5.0.0-alpha1~3626^2~588 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ecd9c29a964186d079c569b74f4ca9cf12ae5901;p=profile%2Fivi%2Fqtbase.git Wheel event forwarding. --- diff --git a/src/gui/kernel/qwidgetwindow_qpa.cpp b/src/gui/kernel/qwidgetwindow_qpa.cpp index b5bc50c..fc49b30 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 37c9f38..0780af1 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;