diff options
author | Shawn Rutledge <shawn.rutledge@digia.com> | 2013-05-16 16:13:09 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-22 10:31:03 +0200 |
commit | 381c0050c12965edc0a44ef7eae0bf6d7388a15a (patch) | |
tree | ce57736ec90abf00a050fb0551f0b11f87961b70 /src/plugins/platforms | |
parent | 2cde2fca6f7b584fd01c0e3eec0209447963b665 (diff) |
Ignore mouse enter/leave on non-exposed windows
If you put two OpenGL widgets in two tabs, you will have several
QNSViews on the Mac (because using OpenGL forces a lot of the widgets
to be non-alien). The GL widget on the non-visible tab will not be
exposed, but QCocoaWindow::childWindowAt is recursive and was returning
the last window found which contained the mouse location; but the
children are not reordered when switching tabs. It should ignore
the invisible windows and report that the mouse entered the
one which is visible.
Task-number: QTBUG-30934
Change-Id: Iae28db56e15815671bf39e1b1f382c8c285532bd
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoawindow.mm | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index d4aa32b821..17bc8b5ca1 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -998,7 +998,8 @@ QWindow *QCocoaWindow::childWindowAt(QPoint windowPoint) if (QWindow *childWindow = qobject_cast<QWindow *>(child)) { if (childWindow->geometry().contains(windowPoint)) { QCocoaWindow* platformWindow = static_cast<QCocoaWindow*>(childWindow->handle()); - targetWindow = platformWindow->childWindowAt(windowPoint - childWindow->position()); + if (platformWindow->isExposed()) + targetWindow = platformWindow->childWindowAt(windowPoint - childWindow->position()); } } } |