summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2022-11-01 17:08:12 +0100
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2022-11-07 09:30:55 +0100
commit76fcd436c1af8a60b82105f24ecdcf7689612cea (patch)
tree3a0bdfac24210329a7822814b7ca23356519e201 /src/plugins/platforms
parentfe1075332cf0066d47432a98e3a4b68386d6523a (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.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoadrag.mm8
-rw-r--r--src/plugins/platforms/cocoa/qcocoamimetypes.mm18
-rw-r--r--src/plugins/platforms/cocoa/qmacclipboard.h10
-rw-r--r--src/plugins/platforms/cocoa/qmacclipboard.mm24
-rw-r--r--src/plugins/platforms/ios/qiosclipboard.mm10
-rw-r--r--src/plugins/platforms/ios/qiosintegration.mm1
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;