diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-11-01 17:08:12 +0100 |
---|---|---|
committer | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-11-07 09:30:55 +0100 |
commit | 76fcd436c1af8a60b82105f24ecdcf7689612cea (patch) | |
tree | 3a0bdfac24210329a7822814b7ca23356519e201 /src/plugins/platforms | |
parent | fe1075332cf0066d47432a98e3a4b68386d6523a (diff) |
Rename QMacInternalPasteboardMime to QMacMime
We want to make it public, and there is no need for "pasteboard" since
it also coveres drag'n'drop. Add a default constructor that defaults to
supporting both clipboard and drag'n'drop, and clean up the code by
using that constructor where applicable.
Historical note: the converter interface was called QMacMime up to
Qt 4.2, when due to macOS changes it had to be replaced by
QMacPasteboardMime.
Task-number: QTBUG-93632
Change-Id: Id9712300039375aa6394598b104827e6f5d6c948
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoaclipboard.mm | 4 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoadrag.mm | 8 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qcocoamimetypes.mm | 18 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qmacclipboard.h | 10 | ||||
-rw-r--r-- | src/plugins/platforms/cocoa/qmacclipboard.mm | 24 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qiosclipboard.mm | 10 | ||||
-rw-r--r-- | src/plugins/platforms/ios/qiosintegration.mm | 1 |
7 files changed, 36 insertions, 39 deletions
diff --git a/src/plugins/platforms/cocoa/qcocoaclipboard.mm b/src/plugins/platforms/cocoa/qcocoaclipboard.mm index 8c48f282c9..f37e4eaeb5 100644 --- a/src/plugins/platforms/cocoa/qcocoaclipboard.mm +++ b/src/plugins/platforms/cocoa/qcocoaclipboard.mm @@ -10,8 +10,8 @@ QT_BEGIN_NAMESPACE QCocoaClipboard::QCocoaClipboard() - :m_clipboard(new QMacPasteboard(kPasteboardClipboard, QMacInternalPasteboardMime::MIME_CLIP)) - ,m_find(new QMacPasteboard(kPasteboardFind, QMacInternalPasteboardMime::MIME_CLIP)) + :m_clipboard(new QMacPasteboard(kPasteboardClipboard, QMacMime::MIME_CLIP)) + ,m_find(new QMacPasteboard(kPasteboardFind, QMacMime::MIME_CLIP)) { connect(qGuiApp, &QGuiApplication::applicationStateChanged, this, &QCocoaClipboard::handleApplicationStateChanged); } diff --git a/src/plugins/platforms/cocoa/qcocoadrag.mm b/src/plugins/platforms/cocoa/qcocoadrag.mm index dc1f68bd23..ef2eaa391e 100644 --- a/src/plugins/platforms/cocoa/qcocoadrag.mm +++ b/src/plugins/platforms/cocoa/qcocoadrag.mm @@ -98,7 +98,7 @@ Qt::DropAction QCocoaDrag::drag(QDrag *o) m_drag = o; m_executed_drop_action = Qt::IgnoreAction; - QMacPasteboard dragBoard(CFStringRef(NSPasteboardNameDrag), QMacInternalPasteboardMime::MIME_DND); + QMacPasteboard dragBoard(CFStringRef(NSPasteboardNameDrag), QMacMime::MIME_DND); m_drag->mimeData()->setData("application/x-qt-mime-type-name"_L1, QByteArray("dummy")); dragBoard.setMimeData(m_drag->mimeData(), QMacPasteboard::LazyRequest); @@ -305,7 +305,7 @@ QStringList QCocoaDropData::formats_sys() const qDebug("DnD: Cannot get PasteBoard!"); return formats; } - formats = QMacPasteboard(board, QMacInternalPasteboardMime::MIME_DND).formats(); + formats = QMacPasteboard(board, QMacMime::MIME_DND).formats(); return formats; } @@ -317,7 +317,7 @@ QVariant QCocoaDropData::retrieveData_sys(const QString &mimeType, QMetaType typ qDebug("DnD: Cannot get PasteBoard!"); return data; } - data = QMacPasteboard(board, QMacInternalPasteboardMime::MIME_DND).retrieveData(mimeType, type); + data = QMacPasteboard(board, QMacMime::MIME_DND).retrieveData(mimeType, type); CFRelease(board); return data; } @@ -330,7 +330,7 @@ bool QCocoaDropData::hasFormat_sys(const QString &mimeType) const qDebug("DnD: Cannot get PasteBoard!"); return has; } - has = QMacPasteboard(board, QMacInternalPasteboardMime::MIME_DND).hasFormat(mimeType); + has = QMacPasteboard(board, QMacMime::MIME_DND).hasFormat(mimeType); CFRelease(board); return has; } diff --git a/src/plugins/platforms/cocoa/qcocoamimetypes.mm b/src/plugins/platforms/cocoa/qcocoamimetypes.mm index 0e8190236f..2c5fd50661 100644 --- a/src/plugins/platforms/cocoa/qcocoamimetypes.mm +++ b/src/plugins/platforms/cocoa/qcocoamimetypes.mm @@ -12,10 +12,8 @@ QT_BEGIN_NAMESPACE using namespace Qt::StringLiterals; -class QMacPasteboardMimeTraditionalMacPlainText : public QMacInternalPasteboardMime { +class QMacMimeTraditionalMacPlainText : public QMacMime { public: - QMacPasteboardMimeTraditionalMacPlainText() : QMacInternalPasteboardMime(MIME_ALL) { } - QString flavorFor(const QString &mime) const override; QString mimeFor(const QString &flav) const override; bool canConvert(const QString &mime, const QString &flav) const override; @@ -25,33 +23,33 @@ public: const QString &flav) const override; }; -QString QMacPasteboardMimeTraditionalMacPlainText::flavorFor(const QString &mime) const +QString QMacMimeTraditionalMacPlainText::flavorFor(const QString &mime) const { if (mime == "text/plain"_L1) return "com.apple.traditional-mac-plain-text"_L1; return QString(); } -QString QMacPasteboardMimeTraditionalMacPlainText::mimeFor(const QString &flav) const +QString QMacMimeTraditionalMacPlainText::mimeFor(const QString &flav) const { if (flav == "com.apple.traditional-mac-plain-text"_L1) return "text/plain"_L1; return QString(); } -bool QMacPasteboardMimeTraditionalMacPlainText::canConvert(const QString &mime, +bool QMacMimeTraditionalMacPlainText::canConvert(const QString &mime, const QString &flav) const { return flavorFor(mime) == flav; } QVariant -QMacPasteboardMimeTraditionalMacPlainText::convertToMime(const QString &mimetype, +QMacMimeTraditionalMacPlainText::convertToMime(const QString &mimetype, const QList<QByteArray> &data, const QString &flavor) const { if (data.count() > 1) - qWarning("QMacPasteboardMimeTraditionalMacPlainText: Cannot handle multiple member data"); + qWarning("QMacMimeTraditionalMacPlainText: Cannot handle multiple member data"); const QByteArray &firstData = data.first(); QVariant ret; if (flavor == "com.apple.traditional-mac-plain-text"_L1) { @@ -65,7 +63,7 @@ QMacPasteboardMimeTraditionalMacPlainText::convertToMime(const QString &mimetype } QList<QByteArray> -QMacPasteboardMimeTraditionalMacPlainText::convertFromMime(const QString &, +QMacMimeTraditionalMacPlainText::convertFromMime(const QString &, const QVariant &data, const QString &flavor) const { @@ -78,7 +76,7 @@ QMacPasteboardMimeTraditionalMacPlainText::convertFromMime(const QString &, void QCocoaMimeTypes::initializeMimeTypes() { - new QMacPasteboardMimeTraditionalMacPlainText; + new QMacMimeTraditionalMacPlainText; } QT_END_NAMESPACE diff --git a/src/plugins/platforms/cocoa/qmacclipboard.h b/src/plugins/platforms/cocoa/qmacclipboard.h index 6413cfbe8b..c17b8f6dd8 100644 --- a/src/plugins/platforms/cocoa/qmacclipboard.h +++ b/src/plugins/platforms/cocoa/qmacclipboard.h @@ -11,7 +11,7 @@ QT_BEGIN_NAMESPACE class QMacMimeData; -class QMacInternalPasteboardMime; +class QMacMime; class QMacPasteboard { @@ -21,12 +21,12 @@ private: struct Promise { Promise() : itemId(0), converter(nullptr) { } - static Promise eagerPromise(int itemId, QMacInternalPasteboardMime *c, QString m, QMacMimeData *d, int o = 0); - static Promise lazyPromise(int itemId, QMacInternalPasteboardMime *c, QString m, QMacMimeData *d, int o = 0); - Promise(int itemId, QMacInternalPasteboardMime *c, QString m, QMacMimeData *md, int o, DataRequestType drt); + static Promise eagerPromise(int itemId, QMacMime *c, QString m, QMacMimeData *d, int o = 0); + static Promise lazyPromise(int itemId, QMacMime *c, QString m, QMacMimeData *d, int o = 0); + Promise(int itemId, QMacMime *c, QString m, QMacMimeData *md, int o, DataRequestType drt); int itemId, offset; - QMacInternalPasteboardMime *converter; + QMacMime *converter; QString mime; QPointer<QMacMimeData> mimeData; QVariant variantData; diff --git a/src/plugins/platforms/cocoa/qmacclipboard.mm b/src/plugins/platforms/cocoa/qmacclipboard.mm index 46af5f1efe..ff8425ea08 100644 --- a/src/plugins/platforms/cocoa/qmacclipboard.mm +++ b/src/plugins/platforms/cocoa/qmacclipboard.mm @@ -54,7 +54,7 @@ private: QMacMimeData(); }; -QMacPasteboard::Promise::Promise(int itemId, QMacInternalPasteboardMime *c, QString m, QMacMimeData *md, int o, DataRequestType drt) +QMacPasteboard::Promise::Promise(int itemId, QMacMime *c, QString m, QMacMimeData *md, int o, DataRequestType drt) : itemId(itemId), offset(o), converter(c), mime(m), dataRequestType(drt) { // Request the data from the application immediately for eager requests. @@ -72,7 +72,7 @@ QMacPasteboard::Promise::Promise(int itemId, QMacInternalPasteboardMime *c, QStr QMacPasteboard::QMacPasteboard(PasteboardRef p, uchar mt) { mac_mime_source = false; - mime_type = mt ? mt : uchar(QMacInternalPasteboardMime::MIME_ALL); + mime_type = mt ? mt : uchar(QMacMime::MIME_ALL); paste = p; CFRetain(paste); resolvingBeforeDestruction = false; @@ -81,7 +81,7 @@ QMacPasteboard::QMacPasteboard(PasteboardRef p, uchar mt) QMacPasteboard::QMacPasteboard(uchar mt) { mac_mime_source = false; - mime_type = mt ? mt : uchar(QMacInternalPasteboardMime::MIME_ALL); + mime_type = mt ? mt : uchar(QMacMime::MIME_ALL); paste = nullptr; OSStatus err = PasteboardCreate(nullptr, &paste); if (err == noErr) { @@ -95,7 +95,7 @@ QMacPasteboard::QMacPasteboard(uchar mt) QMacPasteboard::QMacPasteboard(CFStringRef name, uchar mt) { mac_mime_source = false; - mime_type = mt ? mt : uchar(QMacInternalPasteboardMime::MIME_ALL); + mime_type = mt ? mt : uchar(QMacMime::MIME_ALL); paste = nullptr; OSStatus err = PasteboardCreate(name, &paste); if (err == noErr) { @@ -112,7 +112,7 @@ QMacPasteboard::~QMacPasteboard() Commit all promises for paste when shutting down, unless we are the stack-allocated clipboard used by QCocoaDrag. */ - if (mime_type == QMacInternalPasteboardMime::MIME_DND) + if (mime_type == QMacMime::MIME_DND) resolvingBeforeDestruction = true; PasteboardResolvePromises(paste); if (paste) @@ -131,17 +131,17 @@ OSStatus QMacPasteboard::promiseKeeper(PasteboardRef paste, PasteboardItemID id, const long promise_id = (long)id; // Find the kept promise - QList<QMacInternalPasteboardMime*> availableConverters - = QMacMimeRegistry::all(QMacInternalPasteboardMime::MIME_ALL); + QList<QMacMime*> availableConverters + = QMacMimeRegistry::all(QMacMime::MIME_ALL); const QString flavorAsQString = QString::fromCFString(flavor); QMacPasteboard::Promise promise; for (int i = 0; i < qpaste->promises.size(); i++){ QMacPasteboard::Promise tmp = qpaste->promises[i]; if (!availableConverters.contains(tmp.converter)) { // promise.converter is a pointer initialized by the value found - // in QMacInternalPasteboardMime's global list of QMacInternalPasteboardMimes. - // We add pointers to this list in QMacInternalPasteboardMime's ctor; - // we remove these pointers in QMacInternalPasteboardMime's dtor. + // in QMacMime's global list of QMacMimes. + // We add pointers to this list in QMacMime's ctor; + // we remove these pointers in QMacMime's dtor. // If tmp.converter was not found in this list, we probably have a // dangling pointer so let's skip it. continue; @@ -299,7 +299,7 @@ QMacPasteboard::setMimeData(QMimeData *mime_src, DataRequestType dataRequestType delete mime; mime = mime_src; - const QList<QMacInternalPasteboardMime*> availableConverters = QMacMimeRegistry::all(mime_type); + const QList<QMacMime*> availableConverters = QMacMimeRegistry::all(mime_type); if (mime != nullptr) { clear_helper(); QStringList formats = mime_src->formats(); @@ -433,7 +433,7 @@ QMacPasteboard::retrieveData(const QString &format, QMetaType) const return QByteArray(); qCDebug(lcQpaClipboard, "Pasteboard: retrieveData [%s]", qPrintable(format)); - const QList<QMacInternalPasteboardMime *> availableConverters = QMacMimeRegistry::all(mime_type); + const QList<QMacMime *> availableConverters = QMacMimeRegistry::all(mime_type); for (const auto *c : availableConverters) { QString c_flavor = c->flavorFor(format); if (!c_flavor.isEmpty()) { diff --git a/src/plugins/platforms/ios/qiosclipboard.mm b/src/plugins/platforms/ios/qiosclipboard.mm index 62a9061086..2f8f0287f1 100644 --- a/src/plugins/platforms/ios/qiosclipboard.mm +++ b/src/plugins/platforms/ios/qiosclipboard.mm @@ -116,8 +116,8 @@ QStringList QIOSMimeData::formats() const NSArray<NSString *> *pasteboardTypes = [pb pasteboardTypes]; for (NSUInteger i = 0; i < [pasteboardTypes count]; ++i) { - QString uti = QString::fromNSString([pasteboardTypes objectAtIndex:i]); - QString mimeType = QMacMimeRegistry::flavorToMime(QMacInternalPasteboardMime::MIME_ALL, uti); + const QString uti = QString::fromNSString([pasteboardTypes objectAtIndex:i]); + const QString mimeType = QMacMimeRegistry::flavorToMime(QMacMime::MIME_ALL, uti); if (!mimeType.isEmpty() && !foundMimeTypes.contains(mimeType)) foundMimeTypes << mimeType; } @@ -130,8 +130,7 @@ QVariant QIOSMimeData::retrieveData(const QString &mimeType, QMetaType) const UIPasteboard *pb = [UIPasteboard pasteboardWithQClipboardMode:m_mode]; NSArray<NSString *> *pasteboardTypes = [pb pasteboardTypes]; - foreach (QMacInternalPasteboardMime *converter, - QMacMimeRegistry::all(QMacInternalPasteboardMime::MIME_ALL)) { + foreach (QMacMime *converter, QMacMimeRegistry::all(QMacMime::MIME_ALL)) { if (!converter->canConvert(mimeType, converter->flavorFor(mimeType))) continue; @@ -185,8 +184,7 @@ void QIOSClipboard::setMimeData(QMimeData *mimeData, QClipboard::Mode mode) NSMutableDictionary<NSString *, id> *pbItem = [NSMutableDictionary<NSString *, id> dictionaryWithCapacity:mimeData->formats().size()]; foreach (const QString &mimeType, mimeData->formats()) { - foreach (QMacInternalPasteboardMime *converter, - QMacMimeRegistry::all(QMacInternalPasteboardMime::MIME_ALL)) { + foreach (QMacMime *converter, QMacMimeRegistry::all(QMacMime::MIME_ALL)) { QString uti = converter->flavorFor(mimeType); if (uti.isEmpty() || !converter->canConvert(mimeType, uti)) continue; diff --git a/src/plugins/platforms/ios/qiosintegration.mm b/src/plugins/platforms/ios/qiosintegration.mm index 244b182f65..c4c3942d2c 100644 --- a/src/plugins/platforms/ios/qiosintegration.mm +++ b/src/plugins/platforms/ios/qiosintegration.mm @@ -106,6 +106,7 @@ QIOSIntegration::~QIOSIntegration() delete m_clipboard; m_clipboard = 0; #endif + QMacMimeRegistry::destroyMimeTypes(); delete m_inputContext; |