diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2012-11-08 12:45:08 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-14 10:36:38 +0100 |
commit | 39a09526870e7cd0b27402aca817a71306dc5c41 (patch) | |
tree | 6b96028c6002a295f0550343bea0de5ce3be4bfc /src/widgets | |
parent | 4334e0fcc60497da73671063deb68fb1661f864c (diff) |
Send enter to the child at the position of the QEnterEvent.
This was apparently done so in each of the widget_<platform>.cpp
in Qt 4.8. This then causes the cursor to be updated in
dispatchEnterLeave() on Windows and Linux.
Task-number: QTBUG-27871
Task-number: QTBUG-27585
Task-number: QTBUG-26424
Change-Id: Idf14cd96ccb36f7c2607853ed8b0024c36a5413c
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/kernel/qwidgetwindow.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp index c11e36312f..056eabd2f4 100644 --- a/src/widgets/kernel/qwidgetwindow.cpp +++ b/src/widgets/kernel/qwidgetwindow.cpp @@ -261,8 +261,10 @@ void QWidgetWindow::handleEnterLeaveEvent(QEvent *event) } } else { const QEnterEvent *ee = static_cast<QEnterEvent *>(event); - QApplicationPrivate::dispatchEnterLeave(m_widget, 0, ee->screenPos()); - qt_last_mouse_receiver = m_widget; + QWidget *child = m_widget->childAt(ee->pos()); + QWidget *receiver = child ? child : m_widget; + QApplicationPrivate::dispatchEnterLeave(receiver, 0, ee->screenPos()); + qt_last_mouse_receiver = receiver; } } |