From 848927b688d4709d0b71590518e2c32fe7866147 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Thu, 10 Sep 2020 19:51:38 +0200 Subject: Cleanup API of QMimeData MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Do not use QVariant::Type anymore, instead use QMetaType For some reason, this pushed the qvariant autotest over the limit where MSVC requires the /bigobj flag, so add that one. [ChangeLog][QtCore][QMimeData] The signature of the virtual retrieveData() function has changed and now takes a QMetaType instead of a QVariant::Type. Change-Id: Ib46773bd731ee2177b1ef74d8162d744be7017ef Reviewed-by: MÃ¥rten Nordheim --- src/corelib/kernel/qmimedata.cpp | 57 +++++++++++----------- src/corelib/kernel/qmimedata.h | 3 +- src/gui/kernel/qinternalmimedata.cpp | 14 +++--- src/gui/kernel/qinternalmimedata_p.h | 4 +- src/gui/platform/windows/qwindowsmime_p.h | 2 +- src/plugins/platforms/cocoa/qcocoadrag.h | 2 +- src/plugins/platforms/cocoa/qcocoadrag.mm | 2 +- src/plugins/platforms/cocoa/qmacclipboard.h | 2 +- src/plugins/platforms/cocoa/qmacclipboard.mm | 6 +-- src/plugins/platforms/ios/qiosclipboard.mm | 4 +- src/plugins/platforms/qnx/qqnxclipboard.cpp | 4 +- .../platforms/windows/qwindowsinternalmimedata.cpp | 9 ++-- .../platforms/windows/qwindowsinternalmimedata.h | 2 +- src/plugins/platforms/windows/qwindowsmime.cpp | 36 +++++++------- src/plugins/platforms/windows/qwindowsmime.h | 2 +- src/plugins/platforms/xcb/qxcbclipboard.cpp | 4 +- src/plugins/platforms/xcb/qxcbdrag.cpp | 10 ++-- src/plugins/platforms/xcb/qxcbmime.cpp | 8 +-- src/plugins/platforms/xcb/qxcbmime.h | 4 +- src/widgets/widgets/qwidgettextcontrol.cpp | 2 +- src/widgets/widgets/qwidgettextcontrol_p.h | 2 +- 21 files changed, 89 insertions(+), 90 deletions(-) (limited to 'src') diff --git a/src/corelib/kernel/qmimedata.cpp b/src/corelib/kernel/qmimedata.cpp index 17cb950900..5149835af9 100644 --- a/src/corelib/kernel/qmimedata.cpp +++ b/src/corelib/kernel/qmimedata.cpp @@ -68,7 +68,7 @@ public: void setData(const QString &format, const QVariant &data); QVariant getData(const QString &format) const; - QVariant retrieveTypedData(const QString &format, QMetaType::Type type) const; + QVariant retrieveTypedData(const QString &format, QMetaType type) const; std::vector::iterator find(const QString &format) noexcept { const auto formatEquals = [](const QString &format) { @@ -110,23 +110,24 @@ QVariant QMimeDataPrivate::getData(const QString &format) const return it->data; } -QVariant QMimeDataPrivate::retrieveTypedData(const QString &format, QMetaType::Type type) const +QVariant QMimeDataPrivate::retrieveTypedData(const QString &format, QMetaType type) const { Q_Q(const QMimeData); + int typeId = type.id(); - QVariant data = q->retrieveData(format, QVariant::Type(type)); + QVariant data = q->retrieveData(format, type); // Text data requested: fallback to URL data if available if (format == QLatin1String("text/plain") && !data.isValid()) { - data = retrieveTypedData(textUriListLiteral(), QMetaType::QVariantList); - if (data.userType() == QMetaType::QUrl) { + data = retrieveTypedData(textUriListLiteral(), QMetaType(QMetaType::QVariantList)); + if (data.metaType().id() == QMetaType::QUrl) { data = QVariant(data.toUrl().toDisplayString()); - } else if (data.userType() == QMetaType::QVariantList) { + } else if (data.metaType().id() == QMetaType::QVariantList) { QString text; int numUrls = 0; const QList list = data.toList(); for (int i = 0; i < list.size(); ++i) { - if (list.at(i).userType() == QMetaType::QUrl) { + if (list.at(i).metaType().id() == QMetaType::QUrl) { text += list.at(i).toUrl().toDisplayString() + QLatin1Char('\n'); ++numUrls; } @@ -137,24 +138,24 @@ QVariant QMimeDataPrivate::retrieveTypedData(const QString &format, QMetaType::T } } - if (data.userType() == type || !data.isValid()) + if (data.metaType() == type || !data.isValid()) return data; // provide more conversion possiblities than just what QVariant provides // URLs can be lists as well... - if ((type == QMetaType::QUrl && data.userType() == QMetaType::QVariantList) - || (type == QMetaType::QVariantList && data.userType() == QMetaType::QUrl)) + if ((typeId == QMetaType::QUrl && data.metaType().id() == QMetaType::QVariantList) + || (typeId == QMetaType::QVariantList && data.metaType().id() == QMetaType::QUrl)) return data; // images and pixmaps are interchangeable - if ((type == QMetaType::QPixmap && data.userType() == QMetaType::QImage) - || (type == QMetaType::QImage && data.userType() == QMetaType::QPixmap)) + if ((typeId == QMetaType::QPixmap && data.metaType().id() == QMetaType::QImage) + || (typeId == QMetaType::QImage && data.metaType().id() == QMetaType::QPixmap)) return data; - if (data.userType() == QMetaType::QByteArray) { + if (data.metaType().id() == QMetaType::QByteArray) { // see if we can convert to the requested type - switch(type) { + switch (typeId) { case QMetaType::QString: { const QByteArray ba = data.toByteArray(); if (format == QLatin1String("text/html")) { @@ -200,10 +201,10 @@ QT_WARNING_POP break; } - } else if (type == QMetaType::QByteArray) { + } else if (typeId == QMetaType::QByteArray) { // try to convert to bytearray - switch (data.userType()) { + switch (data.metaType().id()) { case QMetaType::QByteArray: case QMetaType::QColor: return data.toByteArray(); @@ -216,7 +217,7 @@ QT_WARNING_POP QByteArray result; QList list = data.toList(); for (int i = 0; i < list.size(); ++i) { - if (list.at(i).userType() == QMetaType::QUrl) { + if (list.at(i).metaType().id() == QMetaType::QUrl) { result += list.at(i).toUrl().toEncoded(); result += "\r\n"; } @@ -347,14 +348,14 @@ QMimeData::~QMimeData() QList QMimeData::urls() const { Q_D(const QMimeData); - QVariant data = d->retrieveTypedData(textUriListLiteral(), QMetaType::QVariantList); + QVariant data = d->retrieveTypedData(textUriListLiteral(), QMetaType(QMetaType::QVariantList)); QList urls; - if (data.userType() == QMetaType::QUrl) + if (data.metaType().id() == QMetaType::QUrl) urls.append(data.toUrl()); - else if (data.userType() == QMetaType::QVariantList) { + else if (data.metaType().id() == QMetaType::QVariantList) { QList list = data.toList(); for (int i = 0; i < list.size(); ++i) { - if (list.at(i).userType() == QMetaType::QUrl) + if (list.at(i).metaType().id() == QMetaType::QUrl) urls.append(list.at(i).toUrl()); } } @@ -407,11 +408,11 @@ bool QMimeData::hasUrls() const QString QMimeData::text() const { Q_D(const QMimeData); - QVariant utf8Text = d->retrieveTypedData(textPlainUtf8Literal(), QMetaType::QString); + QVariant utf8Text = d->retrieveTypedData(textPlainUtf8Literal(), QMetaType(QMetaType::QString)); if (!utf8Text.isNull()) return utf8Text.toString(); - QVariant data = d->retrieveTypedData(textPlainLiteral(), QMetaType::QString); + QVariant data = d->retrieveTypedData(textPlainLiteral(), QMetaType(QMetaType::QString)); return data.toString(); } @@ -447,7 +448,7 @@ bool QMimeData::hasText() const QString QMimeData::html() const { Q_D(const QMimeData); - QVariant data = d->retrieveTypedData(textHtmlLiteral(), QMetaType::QString); + QVariant data = d->retrieveTypedData(textHtmlLiteral(), QMetaType(QMetaType::QString)); return data.toString(); } @@ -489,7 +490,7 @@ bool QMimeData::hasHtml() const QVariant QMimeData::imageData() const { Q_D(const QMimeData); - return d->retrieveTypedData(applicationXQtImageLiteral(), QMetaType::QImage); + return d->retrieveTypedData(applicationXQtImageLiteral(), QMetaType(QMetaType::QImage)); } /*! @@ -536,7 +537,7 @@ bool QMimeData::hasImage() const QVariant QMimeData::colorData() const { Q_D(const QMimeData); - return d->retrieveTypedData(applicationXColorLiteral(), QMetaType::QColor); + return d->retrieveTypedData(applicationXColorLiteral(), QMetaType(QMetaType::QColor)); } /*! @@ -571,7 +572,7 @@ bool QMimeData::hasColor() const QByteArray QMimeData::data(const QString &mimeType) const { Q_D(const QMimeData); - QVariant data = d->retrieveTypedData(mimeType, QMetaType::QByteArray); + QVariant data = d->retrieveTypedData(mimeType, QMetaType(QMetaType::QByteArray)); return data.toByteArray(); } @@ -661,7 +662,7 @@ QStringList QMimeData::formats() const \sa data() */ -QVariant QMimeData::retrieveData(const QString &mimeType, QVariant::Type type) const +QVariant QMimeData::retrieveData(const QString &mimeType, QMetaType type) const { Q_UNUSED(type); Q_D(const QMimeData); diff --git a/src/corelib/kernel/qmimedata.h b/src/corelib/kernel/qmimedata.h index 64235832c2..e6ec690181 100644 --- a/src/corelib/kernel/qmimedata.h +++ b/src/corelib/kernel/qmimedata.h @@ -85,8 +85,7 @@ public: void clear(); protected: - virtual QVariant retrieveData(const QString &mimetype, - QVariant::Type preferredType) const; + virtual QVariant retrieveData(const QString &mimetype, QMetaType preferredType) const; private: Q_DISABLE_COPY(QMimeData) Q_DECLARE_PRIVATE(QMimeData) diff --git a/src/gui/kernel/qinternalmimedata.cpp b/src/gui/kernel/qinternalmimedata.cpp index d5cdc743ee..5dc296cd01 100644 --- a/src/gui/kernel/qinternalmimedata.cpp +++ b/src/gui/kernel/qinternalmimedata.cpp @@ -108,27 +108,27 @@ QStringList QInternalMimeData::formats() const return realFormats; } -QVariant QInternalMimeData::retrieveData(const QString &mimeType, QVariant::Type type) const +QVariant QInternalMimeData::retrieveData(const QString &mimeType, QMetaType type) const { QVariant data = retrieveData_sys(mimeType, type); if (mimeType == QLatin1String("application/x-qt-image")) { - if (data.isNull() || (data.userType() == QMetaType::QByteArray && data.toByteArray().isEmpty())) { + if (data.isNull() || (data.metaType().id() == QMetaType::QByteArray && data.toByteArray().isEmpty())) { // try to find an image QStringList imageFormats = imageReadMimeFormats(); for (int i = 0; i < imageFormats.size(); ++i) { data = retrieveData_sys(imageFormats.at(i), type); - if (data.isNull() || (data.userType() == QMetaType::QByteArray && data.toByteArray().isEmpty())) + if (data.isNull() || (data.metaType().id() == QMetaType::QByteArray && data.toByteArray().isEmpty())) continue; break; } } - int typeId = type; + int typeId = type.id(); // we wanted some image type, but all we got was a byte array. Convert it to an image. - if (data.userType() == QMetaType::QByteArray + if (data.metaType().id() == QMetaType::QByteArray && (typeId == QMetaType::QImage || typeId == QMetaType::QPixmap || typeId == QMetaType::QBitmap)) data = QImage::fromData(data.toByteArray()); - } else if (mimeType == QLatin1String("application/x-color") && data.userType() == QMetaType::QByteArray) { + } else if (mimeType == QLatin1String("application/x-color") && data.metaType().id() == QMetaType::QByteArray) { QColor c; QByteArray ba = data.toByteArray(); if (ba.size() == 8) { @@ -141,7 +141,7 @@ QVariant QInternalMimeData::retrieveData(const QString &mimeType, QVariant::Type } else { qWarning("Qt: Invalid color format"); } - } else if (data.userType() != int(type) && data.userType() == QMetaType::QByteArray) { + } else if (data.metaType() != type && data.metaType().id() == QMetaType::QByteArray) { // try to use mime data's internal conversion stuf. QInternalMimeData *that = const_cast(this); that->setData(mimeType, data.toByteArray()); diff --git a/src/gui/kernel/qinternalmimedata_p.h b/src/gui/kernel/qinternalmimedata_p.h index aa5e896323..5c61370360 100644 --- a/src/gui/kernel/qinternalmimedata_p.h +++ b/src/gui/kernel/qinternalmimedata_p.h @@ -81,11 +81,11 @@ public: static QByteArray renderDataHelper(const QString &mimeType, const QMimeData *data); protected: - QVariant retrieveData(const QString &mimeType, QVariant::Type type) const override; + QVariant retrieveData(const QString &mimeType, QMetaType type) const override; virtual bool hasFormat_sys(const QString &mimeType) const = 0; virtual QStringList formats_sys() const = 0; - virtual QVariant retrieveData_sys(const QString &mimeType, QVariant::Type type) const = 0; + virtual QVariant retrieveData_sys(const QString &mimeType, QMetaType type) const = 0; }; QT_END_NAMESPACE diff --git a/src/gui/platform/windows/qwindowsmime_p.h b/src/gui/platform/windows/qwindowsmime_p.h index 91b1d104b7..5d71b9ee94 100644 --- a/src/gui/platform/windows/qwindowsmime_p.h +++ b/src/gui/platform/windows/qwindowsmime_p.h @@ -74,7 +74,7 @@ public: // for converting to Qt virtual bool canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const = 0; - virtual QVariant convertToMime(const QString &mimeType, IDataObject *pDataObj, QVariant::Type preferredType) const = 0; + virtual QVariant convertToMime(const QString &mimeType, IDataObject *pDataObj, QMetaType preferredType) const = 0; virtual QString mimeForFormat(const FORMATETC &formatetc) const = 0; }; diff --git a/src/plugins/platforms/cocoa/qcocoadrag.h b/src/plugins/platforms/cocoa/qcocoadrag.h index a062b92506..eee2692666 100644 --- a/src/plugins/platforms/cocoa/qcocoadrag.h +++ b/src/plugins/platforms/cocoa/qcocoadrag.h @@ -95,7 +95,7 @@ public: protected: bool hasFormat_sys(const QString &mimeType) const; QStringList formats_sys() const; - QVariant retrieveData_sys(const QString &mimeType, QVariant::Type type) const; + QVariant retrieveData_sys(const QString &mimeType, QMetaType type) const; public: CFStringRef dropPasteboard; }; diff --git a/src/plugins/platforms/cocoa/qcocoadrag.mm b/src/plugins/platforms/cocoa/qcocoadrag.mm index eed9d3a42b..a27f8aaf87 100644 --- a/src/plugins/platforms/cocoa/qcocoadrag.mm +++ b/src/plugins/platforms/cocoa/qcocoadrag.mm @@ -332,7 +332,7 @@ QStringList QCocoaDropData::formats_sys() const return formats; } -QVariant QCocoaDropData::retrieveData_sys(const QString &mimeType, QVariant::Type type) const +QVariant QCocoaDropData::retrieveData_sys(const QString &mimeType, QMetaType type) const { QVariant data; PasteboardRef board; diff --git a/src/plugins/platforms/cocoa/qmacclipboard.h b/src/plugins/platforms/cocoa/qmacclipboard.h index 0cb6239690..df892a2810 100644 --- a/src/plugins/platforms/cocoa/qmacclipboard.h +++ b/src/plugins/platforms/cocoa/qmacclipboard.h @@ -92,7 +92,7 @@ public: QStringList formats() const; bool hasFormat(const QString &format) const; - QVariant retrieveData(const QString &format, QVariant::Type) const; + QVariant retrieveData(const QString &format, QMetaType) const; void clear(); bool sync() const; diff --git a/src/plugins/platforms/cocoa/qmacclipboard.mm b/src/plugins/platforms/cocoa/qmacclipboard.mm index 2afd3f6e13..8df4242e70 100644 --- a/src/plugins/platforms/cocoa/qmacclipboard.mm +++ b/src/plugins/platforms/cocoa/qmacclipboard.mm @@ -84,7 +84,7 @@ OSStatus PasteboardGetItemCountSafe(PasteboardRef paste, ItemCount *cnt) class QMacMimeData : public QMimeData { public: - QVariant variantData(const QString &mime) { return retrieveData(mime, QVariant::Invalid); } + QVariant variantData(const QString &mime) { return retrieveData(mime, QMetaType()); } private: QMacMimeData(); }; @@ -313,7 +313,7 @@ public: QMacPasteboardMimeSource(const QMacPasteboard *p) : QMimeData(), paste(p) { } ~QMacPasteboardMimeSource() { } virtual QStringList formats() const { return paste->formats(); } - virtual QVariant retrieveData(const QString &format, QVariant::Type type) const { return paste->retrieveData(format, type); } + virtual QVariant retrieveData(const QString &format, QMetaType type) const { return paste->retrieveData(format, type); } }; QMimeData @@ -476,7 +476,7 @@ QMacPasteboard::hasFormat(const QString &format) const } QVariant -QMacPasteboard::retrieveData(const QString &format, QVariant::Type) const +QMacPasteboard::retrieveData(const QString &format, QMetaType) const { if (!paste) return QVariant(); diff --git a/src/plugins/platforms/ios/qiosclipboard.mm b/src/plugins/platforms/ios/qiosclipboard.mm index 236ca843d8..dc441c7194 100644 --- a/src/plugins/platforms/ios/qiosclipboard.mm +++ b/src/plugins/platforms/ios/qiosclipboard.mm @@ -138,7 +138,7 @@ public: ~QIOSMimeData() { } QStringList formats() const override; - QVariant retrieveData(const QString &mimeType, QVariant::Type type) const override; + QVariant retrieveData(const QString &mimeType, QMetaType type) const override; private: const QClipboard::Mode m_mode; @@ -160,7 +160,7 @@ QStringList QIOSMimeData::formats() const return foundMimeTypes; } -QVariant QIOSMimeData::retrieveData(const QString &mimeType, QVariant::Type) const +QVariant QIOSMimeData::retrieveData(const QString &mimeType, QMetaType) const { UIPasteboard *pb = [UIPasteboard pasteboardWithQClipboardMode:m_mode]; NSArray *pasteboardTypes = [pb pasteboardTypes]; diff --git a/src/plugins/platforms/qnx/qqnxclipboard.cpp b/src/plugins/platforms/qnx/qqnxclipboard.cpp index 78174549b1..437417a2d1 100644 --- a/src/plugins/platforms/qnx/qqnxclipboard.cpp +++ b/src/plugins/platforms/qnx/qqnxclipboard.cpp @@ -141,9 +141,9 @@ public: } protected: - QVariant retrieveData(const QString &mimetype, QVariant::Type preferredType) const override + QVariant retrieveData(const QString &mimetype, QMetaType preferredType) const override { - qClipboardDebug() << "mimetype=" << mimetype << "preferredType=" << preferredType; + qClipboardDebug() << "mimetype=" << mimetype << "preferredType=" << preferredType.name(); if (is_clipboard_format_present(mimetype.toUtf8().constData()) != 0) return QMimeData::retrieveData(mimetype, preferredType); diff --git a/src/plugins/platforms/windows/qwindowsinternalmimedata.cpp b/src/plugins/platforms/windows/qwindowsinternalmimedata.cpp index 21f64f04b6..5f63adba52 100644 --- a/src/plugins/platforms/windows/qwindowsinternalmimedata.cpp +++ b/src/plugins/platforms/windows/qwindowsinternalmimedata.cpp @@ -90,8 +90,7 @@ QStringList QWindowsInternalMimeData::formats_sys() const return fmts; } -QVariant QWindowsInternalMimeData::retrieveData_sys(const QString &mimeType, - QVariant::Type type) const +QVariant QWindowsInternalMimeData::retrieveData_sys(const QString &mimeType, QMetaType type) const { IDataObject *pDataObj = retrieveDataObject(); if (!pDataObj) @@ -103,9 +102,9 @@ QVariant QWindowsInternalMimeData::retrieveData_sys(const QString &mimeType, result = converter->convertToMime(mimeType, pDataObj, type); releaseDataObject(pDataObj); if (QWindowsContext::verbose) { - qCDebug(lcQpaMime) <<__FUNCTION__ << ' ' << mimeType << ' ' << type - << " returns " << result.type() - << (result.type() != QVariant::ByteArray ? result.toString() : QStringLiteral("")); + qCDebug(lcQpaMime) <<__FUNCTION__ << ' ' << mimeType << ' ' << type.name() + << " returns " << result.metaType().name() + << (result.userType() != QVariant::ByteArray ? result.toString() : QStringLiteral("")); } return result; } diff --git a/src/plugins/platforms/windows/qwindowsinternalmimedata.h b/src/plugins/platforms/windows/qwindowsinternalmimedata.h index dbc1ea3922..998b8c871e 100644 --- a/src/plugins/platforms/windows/qwindowsinternalmimedata.h +++ b/src/plugins/platforms/windows/qwindowsinternalmimedata.h @@ -54,7 +54,7 @@ class QWindowsInternalMimeData : public QInternalMimeData { public: bool hasFormat_sys(const QString &mimetype) const override; QStringList formats_sys() const override; - QVariant retrieveData_sys(const QString &mimetype, QVariant::Type preferredType) const override; + QVariant retrieveData_sys(const QString &mimetype, QMetaType preferredType) const override; protected: virtual IDataObject *retrieveDataObject() const = 0; diff --git a/src/plugins/platforms/windows/qwindowsmime.cpp b/src/plugins/platforms/windows/qwindowsmime.cpp index 0f686dc210..9c43045d6a 100644 --- a/src/plugins/platforms/windows/qwindowsmime.cpp +++ b/src/plugins/platforms/windows/qwindowsmime.cpp @@ -525,7 +525,7 @@ QDebug operator<<(QDebug d, IDataObject *dataObj) /*! \fn QVariant QWindowsMime::convertToMime(const QString &mimeType, IDataObject *pDataObj, - QVariant::Type preferredType) const + QMetaType preferredType) const Returns a QVariant containing the converted data for \a mimeType from \a pDataObj. If possible the QVariant should be of the \a preferredType to avoid needless conversions. @@ -548,7 +548,7 @@ class QWindowsMimeText : public QPlatformInterface::Private::QWindowsMime { public: bool canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const override; - QVariant convertToMime(const QString &mime, LPDATAOBJECT pDataObj, QVariant::Type preferredType) const override; + QVariant convertToMime(const QString &mime, LPDATAOBJECT pDataObj, QMetaType preferredType) const override; QString mimeForFormat(const FORMATETC &formatetc) const override; bool canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const override; bool convertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData, STGMEDIUM *pmedium) const override; @@ -664,7 +664,7 @@ QList QWindowsMimeText::formatsForMime(const QString &mimeType, const return formatics; } -QVariant QWindowsMimeText::convertToMime(const QString &mime, LPDATAOBJECT pDataObj, QVariant::Type preferredType) const +QVariant QWindowsMimeText::convertToMime(const QString &mime, LPDATAOBJECT pDataObj, QMetaType preferredType) const { QVariant ret; @@ -691,7 +691,7 @@ QVariant QWindowsMimeText::convertToMime(const QString &mime, LPDATAOBJECT pData str = QString::fromLocal8Bit(r); } } - if (preferredType == QVariant::String) + if (preferredType.id() == QMetaType::QString) ret = str; else ret = std::move(str).toUtf8(); @@ -705,7 +705,7 @@ class QWindowsMimeURI : public QPlatformInterface::Private::QWindowsMime public: QWindowsMimeURI(); bool canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const override; - QVariant convertToMime(const QString &mime, LPDATAOBJECT pDataObj, QVariant::Type preferredType) const override; + QVariant convertToMime(const QString &mime, LPDATAOBJECT pDataObj, QMetaType preferredType) const override; QString mimeForFormat(const FORMATETC &formatetc) const override; bool canConvertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData) const override; bool convertFromMime(const FORMATETC &formatetc, const QMimeData *mimeData, STGMEDIUM *pmedium) const override; @@ -819,7 +819,7 @@ QList QWindowsMimeURI::formatsForMime(const QString &mimeType, const return formatics; } -QVariant QWindowsMimeURI::convertToMime(const QString &mimeType, LPDATAOBJECT pDataObj, QVariant::Type preferredType) const +QVariant QWindowsMimeURI::convertToMime(const QString &mimeType, LPDATAOBJECT pDataObj, QMetaType preferredType) const { if (mimeType == u"text/uri-list") { if (canGetData(CF_HDROP, pDataObj)) { @@ -847,7 +847,7 @@ QVariant QWindowsMimeURI::convertToMime(const QString &mimeType, LPDATAOBJECT pD } } - if (preferredType == QVariant::Url && urls.size() == 1) + if (preferredType.id() == QMetaType::QUrl && urls.size() == 1) return urls.at(0); if (!urls.isEmpty()) return urls; @@ -878,7 +878,7 @@ public: // for converting to Qt bool canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const override; - QVariant convertToMime(const QString &mime, IDataObject *pDataObj, QVariant::Type preferredType) const override; + QVariant convertToMime(const QString &mime, IDataObject *pDataObj, QMetaType preferredType) const override; QString mimeForFormat(const FORMATETC &formatetc) const override; private: @@ -928,7 +928,7 @@ in bytes). Charset used is mostly utf8, but can be different, ie. we have to loo ...html... */ -QVariant QWindowsMimeHtml::convertToMime(const QString &mime, IDataObject *pDataObj, QVariant::Type preferredType) const +QVariant QWindowsMimeHtml::convertToMime(const QString &mime, IDataObject *pDataObj, QMetaType preferredType) const { Q_UNUSED(preferredType); QVariant result; @@ -1015,7 +1015,7 @@ public: // for converting to Qt bool canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const override; - QVariant convertToMime(const QString &mime, IDataObject *pDataObj, QVariant::Type preferredType) const override; + QVariant convertToMime(const QString &mime, IDataObject *pDataObj, QMetaType preferredType) const override; QString mimeForFormat(const FORMATETC &formatetc) const override; private: bool hasOriginalDIBV5(IDataObject *pDataObj) const; @@ -1122,7 +1122,7 @@ bool QWindowsMimeImage::hasOriginalDIBV5(IDataObject *pDataObj) const return !isSynthesized; } -QVariant QWindowsMimeImage::convertToMime(const QString &mimeType, IDataObject *pDataObj, QVariant::Type preferredType) const +QVariant QWindowsMimeImage::convertToMime(const QString &mimeType, IDataObject *pDataObj, QMetaType preferredType) const { Q_UNUSED(preferredType); QVariant result; @@ -1170,7 +1170,7 @@ public: // for converting to Qt bool canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const override; - QVariant convertToMime(const QString &mime, IDataObject *pDataObj, QVariant::Type preferredType) const override; + QVariant convertToMime(const QString &mime, IDataObject *pDataObj, QMetaType preferredType) const override; QString mimeForFormat(const FORMATETC &formatetc) const override; private: @@ -1255,14 +1255,14 @@ bool QBuiltInMimes::canConvertToMime(const QString &mimeType, IDataObject *pData return mit != inFormats.cend() && canGetData(mit.key(), pDataObj); } -QVariant QBuiltInMimes::convertToMime(const QString &mimeType, IDataObject *pDataObj, QVariant::Type preferredType) const +QVariant QBuiltInMimes::convertToMime(const QString &mimeType, IDataObject *pDataObj, QMetaType preferredType) const { QVariant val; if (canConvertToMime(mimeType, pDataObj)) { QByteArray data = getData(inFormats.key(mimeType), pDataObj); if (!data.isEmpty()) { qCDebug(lcQpaMime) << __FUNCTION__; - if (mimeType == u"text/html" && preferredType == QVariant::String) { + if (mimeType == u"text/html" && preferredType == QMetaType(QMetaType::QString)) { // text/html is in wide chars on windows (compatible with Mozilla) val = QString::fromWCharArray(reinterpret_cast(data.constData())); } else { @@ -1291,7 +1291,7 @@ public: // for converting to Qt bool canConvertToMime(const QString &mimeType, IDataObject *pDataObj) const override; - QVariant convertToMime(const QString &mime, IDataObject *pDataObj, QVariant::Type preferredType) const override; + QVariant convertToMime(const QString &mime, IDataObject *pDataObj, QMetaType preferredType) const override; QString mimeForFormat(const FORMATETC &formatetc) const override; private: @@ -1411,7 +1411,7 @@ bool QLastResortMimes::canConvertToMime(const QString &mimeType, IDataObject *pD return canGetData(cf, pDataObj); } -QVariant QLastResortMimes::convertToMime(const QString &mimeType, IDataObject *pDataObj, QVariant::Type preferredType) const +QVariant QLastResortMimes::convertToMime(const QString &mimeType, IDataObject *pDataObj, QMetaType preferredType) const { Q_UNUSED(preferredType); QVariant val; @@ -1572,7 +1572,7 @@ QString QWindowsMimeConverter::clipboardFormatName(int cf) QVariant QWindowsMimeConverter::convertToMime(const QStringList &mimeTypes, IDataObject *pDataObj, - QVariant::Type preferredType, + QMetaType preferredType, QString *formatIn /* = 0 */) const { for (const QString &format : mimeTypes) { @@ -1589,7 +1589,7 @@ QVariant QWindowsMimeConverter::convertToMime(const QStringList &mimeTypes, } } } - qCDebug(lcQpaMime) << __FUNCTION__ << "fails" << mimeTypes << pDataObj << preferredType; + qCDebug(lcQpaMime) << __FUNCTION__ << "fails" << mimeTypes << pDataObj << preferredType.id(); return QVariant(); } diff --git a/src/plugins/platforms/windows/qwindowsmime.h b/src/plugins/platforms/windows/qwindowsmime.h index ee71bee2ba..891ec44ecd 100644 --- a/src/plugins/platforms/windows/qwindowsmime.h +++ b/src/plugins/platforms/windows/qwindowsmime.h @@ -67,7 +67,7 @@ public: QList allFormatsForMime(const QMimeData *mimeData) const; // Convenience. - QVariant convertToMime(const QStringList &mimeTypes, IDataObject *pDataObj, QVariant::Type preferredType, + QVariant convertToMime(const QStringList &mimeTypes, IDataObject *pDataObj, QMetaType preferredType, QString *format = nullptr) const; void registerMime(QWindowsMime *mime); diff --git a/src/plugins/platforms/xcb/qxcbclipboard.cpp b/src/plugins/platforms/xcb/qxcbclipboard.cpp index 6d023035f2..56fe1a5b45 100644 --- a/src/plugins/platforms/xcb/qxcbclipboard.cpp +++ b/src/plugins/platforms/xcb/qxcbclipboard.cpp @@ -123,9 +123,9 @@ protected: return list.contains(format); } - QVariant retrieveData_sys(const QString &fmt, QVariant::Type type) const override + QVariant retrieveData_sys(const QString &fmt, QMetaType type) const override { - auto requestedType = QMetaType::Type(type); + auto requestedType = type; if (fmt.isEmpty() || isEmpty()) return QByteArray(); diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp index 774a5689c7..401863790c 100644 --- a/src/plugins/platforms/xcb/qxcbdrag.cpp +++ b/src/plugins/platforms/xcb/qxcbdrag.cpp @@ -112,9 +112,9 @@ public: protected: bool hasFormat_sys(const QString &mimeType) const override; QStringList formats_sys() const override; - QVariant retrieveData_sys(const QString &mimeType, QVariant::Type type) const override; + QVariant retrieveData_sys(const QString &mimeType, QMetaType type) const override; - QVariant xdndObtainData(const QByteArray &format, QMetaType::Type requestedType) const; + QVariant xdndObtainData(const QByteArray &format, QMetaType requestedType) const; QXcbDrag *drag; }; @@ -1342,14 +1342,14 @@ QXcbDropData::~QXcbDropData() { } -QVariant QXcbDropData::retrieveData_sys(const QString &mimetype, QVariant::Type requestedType) const +QVariant QXcbDropData::retrieveData_sys(const QString &mimetype, QMetaType requestedType) const { QByteArray mime = mimetype.toLatin1(); - QVariant data = xdndObtainData(mime, QMetaType::Type(requestedType)); + QVariant data = xdndObtainData(mime, requestedType); return data; } -QVariant QXcbDropData::xdndObtainData(const QByteArray &format, QMetaType::Type requestedType) const +QVariant QXcbDropData::xdndObtainData(const QByteArray &format, QMetaType requestedType) const { QByteArray result; diff --git a/src/plugins/platforms/xcb/qxcbmime.cpp b/src/plugins/platforms/xcb/qxcbmime.cpp index bb168b9b00..738d0e3b91 100644 --- a/src/plugins/platforms/xcb/qxcbmime.cpp +++ b/src/plugins/platforms/xcb/qxcbmime.cpp @@ -158,14 +158,14 @@ QList QXcbMime::mimeAtomsForFormat(QXcbConnection *connection, const } QVariant QXcbMime::mimeConvertToFormat(QXcbConnection *connection, xcb_atom_t a, const QByteArray &d, const QString &format, - QMetaType::Type requestedType, bool hasUtf8) + QMetaType requestedType, bool hasUtf8) { QByteArray data = d; QString atomName = mimeAtomToString(connection, a); // qDebug() << "mimeConvertDataToFormat" << format << atomName << data; if (hasUtf8 && atomName == format + QLatin1String(";charset=utf-8")) { - if (requestedType == QMetaType::QString) + if (requestedType.id() == QMetaType::QString) return QString::fromUtf8(data); return data; } @@ -255,7 +255,7 @@ QVariant QXcbMime::mimeConvertToFormat(QXcbConnection *connection, xcb_atom_t a, return QVariant(); } -xcb_atom_t QXcbMime::mimeAtomForFormat(QXcbConnection *connection, const QString &format, QMetaType::Type requestedType, +xcb_atom_t QXcbMime::mimeAtomForFormat(QXcbConnection *connection, const QString &format, QMetaType requestedType, const QList &atoms, bool *hasUtf8) { *hasUtf8 = false; @@ -288,7 +288,7 @@ xcb_atom_t QXcbMime::mimeAtomForFormat(QXcbConnection *connection, const QString // for string/text requests try to use a format with a well-defined charset // first to avoid encoding problems - if (requestedType == QMetaType::QString + if (requestedType.id() == QMetaType::QString && format.startsWith(QLatin1String("text/")) && !format.contains(QLatin1String("charset="))) { diff --git a/src/plugins/platforms/xcb/qxcbmime.h b/src/plugins/platforms/xcb/qxcbmime.h index d348bae77e..fe9b2249c9 100644 --- a/src/plugins/platforms/xcb/qxcbmime.h +++ b/src/plugins/platforms/xcb/qxcbmime.h @@ -60,8 +60,8 @@ public: static bool mimeDataForAtom(QXcbConnection *connection, xcb_atom_t a, QMimeData *mimeData, QByteArray *data, xcb_atom_t *atomFormat, int *dataFormat); static QVariant mimeConvertToFormat(QXcbConnection *connection, xcb_atom_t a, const QByteArray &data, const QString &format, - QMetaType::Type requestedType, bool hasUtf8); - static xcb_atom_t mimeAtomForFormat(QXcbConnection *connection, const QString &format, QMetaType::Type requestedType, + QMetaType requestedType, bool hasUtf8); + static xcb_atom_t mimeAtomForFormat(QXcbConnection *connection, const QString &format, QMetaType requestedType, const QList &atoms, bool *hasUtf8); }; diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index 0ca12a2723..024713fad3 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -3417,7 +3417,7 @@ QStringList QTextEditMimeData::formats() const return QMimeData::formats(); } -QVariant QTextEditMimeData::retrieveData(const QString &mimeType, QVariant::Type type) const +QVariant QTextEditMimeData::retrieveData(const QString &mimeType, QMetaType type) const { if (!fragment.isEmpty()) setup(); diff --git a/src/widgets/widgets/qwidgettextcontrol_p.h b/src/widgets/widgets/qwidgettextcontrol_p.h index 89acd1e50c..54cb136621 100644 --- a/src/widgets/widgets/qwidgettextcontrol_p.h +++ b/src/widgets/widgets/qwidgettextcontrol_p.h @@ -308,7 +308,7 @@ public: virtual QStringList formats() const override; protected: - virtual QVariant retrieveData(const QString &mimeType, QVariant::Type type) const override; + virtual QVariant retrieveData(const QString &mimeType, QMetaType type) const override; private: void setup() const; -- cgit v1.2.3