summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@digia.com>2013-01-23 13:29:02 (GMT)
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-01-27 11:19:34 (GMT)
commit23cda4768990e7a0ed13544930d7a02deb9757ae (patch)
treecf491bc59fc2417c4155836fa46603635e06c68f /src
parentb05b9a4c7def41488d8cc29ee4c977de29b1416b (diff)
downloadQt-23cda4768990e7a0ed13544930d7a02deb9757ae.zip
Qt-23cda4768990e7a0ed13544930d7a02deb9757ae.tar.gz
Qt-23cda4768990e7a0ed13544930d7a02deb9757ae.tar.bz2
Only send the enter/leave event when it makes sense to do so
When show/hide is called on a widget on Mac then it needs to send an enter/leave event. But it should only do that if the widget under the mouse is actually the one that is being shown/hidden. Change-Id: I53c782f5deee740cbc34e1fcc7b551a108230081 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/gui/kernel/qwidget_mac.mm20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm
index 01150aa..702a56b 100644
--- a/src/gui/kernel/qwidget_mac.mm
+++ b/src/gui/kernel/qwidget_mac.mm
@@ -3556,10 +3556,12 @@ void QWidgetPrivate::show_sys()
QPoint qlocal, qglobal;
QWidget *widgetUnderMouse = 0;
qt_mac_getTargetForMouseEvent(0, QEvent::Enter, qlocal, qglobal, 0, &widgetUnderMouse);
- QApplicationPrivate::dispatchEnterLeave(widgetUnderMouse, qt_last_mouse_receiver);
- qt_last_mouse_receiver = widgetUnderMouse;
- qt_last_native_mouse_receiver = widgetUnderMouse ?
- (widgetUnderMouse->internalWinId() ? widgetUnderMouse : widgetUnderMouse->nativeParentWidget()) : 0;
+ if (q == widgetUnderMouse) {
+ QApplicationPrivate::dispatchEnterLeave(widgetUnderMouse, qt_last_mouse_receiver);
+ qt_last_mouse_receiver = widgetUnderMouse;
+ qt_last_native_mouse_receiver = widgetUnderMouse ?
+ (widgetUnderMouse->internalWinId() ? widgetUnderMouse : widgetUnderMouse->nativeParentWidget()) : 0;
+ }
}
#endif
@@ -3716,10 +3718,12 @@ void QWidgetPrivate::hide_sys()
QPoint qlocal, qglobal;
QWidget *widgetUnderMouse = 0;
qt_mac_getTargetForMouseEvent(0, QEvent::Leave, qlocal, qglobal, 0, &widgetUnderMouse);
- QApplicationPrivate::dispatchEnterLeave(widgetUnderMouse, qt_last_native_mouse_receiver);
- qt_last_mouse_receiver = widgetUnderMouse;
- qt_last_native_mouse_receiver = widgetUnderMouse ?
- (widgetUnderMouse->internalWinId() ? widgetUnderMouse : widgetUnderMouse->nativeParentWidget()) : 0;
+ if (q == widgetUnderMouse) {
+ QApplicationPrivate::dispatchEnterLeave(widgetUnderMouse, qt_last_native_mouse_receiver);
+ qt_last_mouse_receiver = widgetUnderMouse;
+ qt_last_native_mouse_receiver = widgetUnderMouse ?
+ (widgetUnderMouse->internalWinId() ? widgetUnderMouse : widgetUnderMouse->nativeParentWidget()) : 0;
+ }
}
#endif