summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qcocoaintegration.mm
diff options
context:
space:
mode:
authorMorten Johan Sorvig <morten.sorvig@nokia.com>2012-03-12 12:07:51 +0100
committerQt by Nokia <qt-info@nokia.com>2012-03-15 11:40:50 +0100
commit99b8b647e3623325a8bfe39bea66c71c5467cdbc (patch)
tree1007876b6ed26c1d45794d70bf42ef72eee56cac /src/plugins/platforms/cocoa/qcocoaintegration.mm
parent65a2613e3e4fd341c2be35cb4eaf03d0918c2661 (diff)
Implement cocoa clipboard support.
Add QCoccoaClipboard which wraps the existing QMacPasteboard implementation. Remove unused QClipboard integration code from qmacclipboard.mm Change mime type cleanup from using qAddPostRoutine to using an explicit call to destroyMimieTypes in the cocoa platform integration destructor. This is necessary to ensure cleanup happens in the correct order on app shutdown. Change-Id: Ief0e0d996b04c8e84e9fd2cd3a17fb5bd73bb761 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Diffstat (limited to 'src/plugins/platforms/cocoa/qcocoaintegration.mm')
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.mm14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm
index 96027e0925..f5febd4a16 100644
--- a/src/plugins/platforms/cocoa/qcocoaintegration.mm
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm
@@ -93,6 +93,7 @@ QCocoaIntegration::QCocoaIntegration()
, mEventDispatcher(new QCocoaEventDispatcher())
, mInputContext(new QCocoaInputContext)
, mAccessibility(new QPlatformAccessibility)
+ , mCocoaClipboard(new QCocoaClipboard)
, mCocoaDrag(new QCocoaDrag)
{
QCocoaAutoReleasePool pool;
@@ -140,13 +141,19 @@ QCocoaIntegration::QCocoaIntegration()
screenAdded(screen);
}
- QMacPasteboardMime::initialize();
+ QMacPasteboardMime::initializeMimeTypes();
}
QCocoaIntegration::~QCocoaIntegration()
{
[[NSApplication sharedApplication] setDelegate: 0];
+ // Delete the clipboard integration and destroy mime type converters.
+ // Deleting the clipboard integration flushes promised pastes using
+ // the mime converters - the ordering here is important.
+ delete mCocoaClipboard;
+ QMacPasteboardMime::destroyMimeTypes();
+
// Delete screens in reverse order to avoid crash in case of multiple screens
while (!mScreens.isEmpty()) {
delete mScreens.takeLast();
@@ -206,6 +213,11 @@ QPlatformAccessibility *QCocoaIntegration::accessibility() const
return mAccessibility.data();
}
+QPlatformClipboard *QCocoaIntegration::clipboard() const
+{
+ return mCocoaClipboard;
+}
+
QPlatformDrag *QCocoaIntegration::drag() const
{
return mCocoaDrag.data();