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>
bb10
Shawn Rutledge 2013-05-16 16:13:09 +02:00 committed by The Qt Project
parent 2cde2fca6f
commit 381c0050c1
1 changed files with 2 additions and 1 deletions

View File

@ -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());
}
}
}