--- src/gui/kernel/orig.qt_cocoa_helpers_mac.mm 2015-01-17 15:43:32.000000000 +0100 +++ src/gui/kernel/qt_cocoa_helpers_mac.mm 2015-02-10 19:19:43.000000000 +0100 @@ -91,6 +91,8 @@ #include #include +#include + QT_BEGIN_NAMESPACE #ifdef QT_MAC_USE_COCOA @@ -1257,7 +1259,8 @@ bool qt_mac_handleMouseEvent(NSEvent *event, QEvent::Type eventType, Qt::MouseBu break; } - qt_mac_updateCursorWithWidgetUnderMouse(widgetUnderMouse); + if ([[NSApplication sharedApplication] isActive]) + qt_mac_updateCursorWithWidgetUnderMouse(widgetUnderMouse); DnDParams *dndParams = currentDnDParameters(); dndParams->view = view; @@ -1280,8 +1283,19 @@ bool qt_mac_handleMouseEvent(NSEvent *event, QEvent::Type eventType, Qt::MouseBu // released. We therefore need to re-check if should send (delayed) enter leave events: // qt_button_down has now become NULL since the call at the top of the function. Also, since // the relase might have closed a window, we dont give the nativeWidget hint - qt_mac_getTargetForMouseEvent(0, QEvent::None, localPoint, globalPoint, nativeWidget, &widgetUnderMouse); - qt_mac_checkEnterLeaveForNativeWidgets(widgetUnderMouse); + //qt_mac_getTargetForMouseEvent(0, QEvent::None, localPoint, globalPoint, nativeWidget, &widgetUnderMouse); + //RJVB: +// ProcessSerialNumber current, front; +// GetCurrentProcess(¤t); +// GetFrontProcess(&front); + qt_mac_getTargetForMouseEvent(0, QEvent::None, localPoint, globalPoint, NULL, &widgetUnderMouse); + if ( [[NSApplication sharedApplication] isActive] /*memcmp(¤t, &front, sizeof(ProcessSerialNumber)) == 0*/) { + qt_mac_checkEnterLeaveForNativeWidgets(widgetUnderMouse); + } + else if (widgetUnderMouse) { + qDebug() << "Background application does not deliver mouse button release event to" << widgetUnderMouse + << "at" << globalPoint; + } } previousButton = button;