From 5032ca8cde5ed6fa39acfde650d373fcb4ea7807 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Mon, 13 Feb 2012 14:45:11 +0100 Subject: Ensure that QApplication is cleaned up after itself on Mac If the sendEvent function is replaced on the NSApplication, then QApplication should ensure that it undoes that if it is destroyed while the NSApplication is still running. Task-number: QTBUG-24248 Change-Id: I087ae575b7d670fa8dacfb80636d813c7bceb41d Reviewed-by: Richard Moe Gustavsen --- src/gui/kernel/qapplication_mac.mm | 5 +++++ src/gui/kernel/qcocoaapplication_mac.mm | 7 +++++++ src/gui/kernel/qcocoaapplication_mac_p.h | 1 + 3 files changed, 13 insertions(+) diff --git a/src/gui/kernel/qapplication_mac.mm b/src/gui/kernel/qapplication_mac.mm index d01f296..141f390 100644 --- a/src/gui/kernel/qapplication_mac.mm +++ b/src/gui/kernel/qapplication_mac.mm @@ -1311,6 +1311,11 @@ void qt_cleanup() } #endif qt_release_apple_event_handler(); + +#ifdef QT_MAC_USE_COCOA + qt_resetNSApplicationSendEvent(); +#endif + qt_release_tablet_proximity_handler(); if (tablet_proximity_UPP) DisposeEventHandlerUPP(tablet_proximity_UPP); diff --git a/src/gui/kernel/qcocoaapplication_mac.mm b/src/gui/kernel/qcocoaapplication_mac.mm index 5168ae5..f595d78 100644 --- a/src/gui/kernel/qcocoaapplication_mac.mm +++ b/src/gui/kernel/qcocoaapplication_mac.mm @@ -218,5 +218,12 @@ void qt_redirectNSApplicationSendEvent() @selector(qt_sendEvent_original:)); } +void qt_resetNSApplicationSendEvent() +{ + qt_cocoa_change_back_implementation([NSApplication class], + @selector(sendEvent:), + @selector(qt_sendEvent_original:)); +} + QT_END_NAMESPACE #endif diff --git a/src/gui/kernel/qcocoaapplication_mac_p.h b/src/gui/kernel/qcocoaapplication_mac_p.h index 60e3062..12ea783 100644 --- a/src/gui/kernel/qcocoaapplication_mac_p.h +++ b/src/gui/kernel/qcocoaapplication_mac_p.h @@ -111,6 +111,7 @@ QT_FORWARD_DECLARE_CLASS(QApplicationPrivate) QT_BEGIN_NAMESPACE void qt_redirectNSApplicationSendEvent(); +void qt_resetNSApplicationSendEvent(); QT_END_NAMESPACE -- cgit v0.12