summaryrefslogtreecommitdiffstats
path: root/src/gui
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@nokia.com>2011-05-03 16:41:18 +0200
committerSamuel Rødal <samuel.rodal@nokia.com>2011-05-03 16:41:26 +0200
commitecd9c29a964186d079c569b74f4ca9cf12ae5901 (patch)
treed88f09475bc4d11521a177c53012ef0868a81a2c /src/gui
parent4c6a882e8653ba38da945be8d6ba1f38d8133256 (diff)
Wheel event forwarding.
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/kernel/qwidgetwindow_qpa.cpp18
-rw-r--r--src/gui/kernel/qwidgetwindow_qpa_p.h1
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;