diff options
Diffstat (limited to 'src/plugins/platforms/cocoa/qmacmime.mm')
-rw-r--r-- | src/plugins/platforms/cocoa/qmacmime.mm | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/src/plugins/platforms/cocoa/qmacmime.mm b/src/plugins/platforms/cocoa/qmacmime.mm index 8f39aee910..89539de331 100644 --- a/src/plugins/platforms/cocoa/qmacmime.mm +++ b/src/plugins/platforms/cocoa/qmacmime.mm @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the plugins of the Qt Toolkit. @@ -66,6 +66,20 @@ typedef QList<QMacPasteboardMime*> MimeList; Q_GLOBAL_STATIC(MimeList, globalMimeList) Q_GLOBAL_STATIC(QStringList, globalDraggedTypesList) +void qt_mac_addToGlobalMimeList(QMacPasteboardMime *macMime) +{ + // globalMimeList is in decreasing priority order. Recently added + // converters take prioity over previously added converters: prepend + // to the list. + globalMimeList()->prepend(macMime); +} + +void qt_mac_removeFromGlobalMimeList(QMacPasteboardMime *macMime) +{ + if (!QGuiApplication::closingDown()) + globalMimeList()->removeAll(macMime); +} + /*! \fn void qRegisterDraggedTypes(const QStringList &types) \relates QMacPasteboardMime @@ -79,17 +93,16 @@ Q_GLOBAL_STATIC(QStringList, globalDraggedTypesList) \sa QMacPasteboardMime */ -Q_WIDGETS_EXPORT void qRegisterDraggedTypes(const QStringList &types) +void qt_mac_registerDraggedTypes(const QStringList &types) { (*globalDraggedTypesList()) += types; } -const QStringList& qEnabledDraggedTypes() +const QStringList& qt_mac_enabledDraggedTypes() { return (*globalDraggedTypesList()); } - /***************************************************************************** QDnD debug facilities *****************************************************************************/ @@ -155,7 +168,7 @@ CFStringRef qt_mac_mime_typeUTI = CFSTR("com.pasteboard.trolltech.marker"); */ QMacPasteboardMime::QMacPasteboardMime(char t) : type(t) { - globalMimeList()->append(this); + qt_mac_addToGlobalMimeList(this); } /*! @@ -164,8 +177,7 @@ QMacPasteboardMime::QMacPasteboardMime(char t) : type(t) */ QMacPasteboardMime::~QMacPasteboardMime() { - if (!QGuiApplication::closingDown()) - globalMimeList()->removeAll(this); + qt_mac_removeFromGlobalMimeList(this); } /*! @@ -801,6 +813,10 @@ QList<QByteArray> QMacPasteboardMimeVCard::convertFromMime(const QString &mime, void QMacPasteboardMime::initializeMimeTypes() { if (globalMimeList()->isEmpty()) { + // Create QMacPasteboardMimeAny first to put it at the end of globalMimeList + // with lowest priority. (the constructor prepends to the list) + new QMacPasteboardMimeAny; + //standard types that we wrap new QMacPasteboardMimeTiff; new QMacPasteboardMimeUnicodeText; @@ -810,8 +826,6 @@ void QMacPasteboardMime::initializeMimeTypes() new QMacPasteboardMimeUrl; new QMacPasteboardMimeTypeName; new QMacPasteboardMimeVCard; - //make sure our "non-standard" types are always last! --Sam - new QMacPasteboardMimeAny; } } |