summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa/qmacmime.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/cocoa/qmacmime.mm')
-rw-r--r--src/plugins/platforms/cocoa/qmacmime.mm32
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;
}
}