Clean up QMacInternalPasteboardMime: remove convertorName

The function was primarily called to generate debug output. The only
other usage was to identify the Rtf converter so that we can avoid that
we convert outgoing HTML to RTF. This is just as easily (and more
accurately) done by skipping any converter that converts HTML to RTF.

Task-number: QTBUG-93632
Change-Id: Ibe5bdece982399e2d9823f6df67393d1f81501fe
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
bb10
Volker Hilsheimer 2022-10-31 17:29:05 +01:00
parent d5300a6d2a
commit 3d6a89c5cc
5 changed files with 11 additions and 91 deletions

View File

@ -115,8 +115,6 @@ class QMacPasteboardMimeAny : public QMacInternalPasteboardMime {
public:
QMacPasteboardMimeAny() : QMacInternalPasteboardMime(MIME_ALL_COMPATIBLE) {}
QString convertorName();
QString flavorFor(const QString &mime);
QString mimeFor(QString flav);
bool canConvert(const QString &mime, QString flav);
@ -124,11 +122,6 @@ public:
QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
};
QString QMacPasteboardMimeAny::convertorName()
{
return "Any-Mime"_L1;
}
QString QMacPasteboardMimeAny::flavorFor(const QString &mime)
{
// do not handle the mime type name in the drag pasteboard
@ -179,8 +172,6 @@ private:
public:
QMacPasteboardMimeTypeName(): QMacInternalPasteboardMime(MIME_ALL_COMPATIBLE) {}
QString convertorName();
QString flavorFor(const QString &mime);
QString mimeFor(QString flav);
bool canConvert(const QString &mime, QString flav);
@ -188,11 +179,6 @@ public:
QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
};
QString QMacPasteboardMimeTypeName::convertorName()
{
return u"Qt-Mime-Type"_s;
}
QString QMacPasteboardMimeTypeName::flavorFor(const QString &mime)
{
if (mime == "application/x-qt-mime-type-name"_L1)
@ -226,7 +212,6 @@ QList<QByteArray> QMacPasteboardMimeTypeName::convertFromMime(const QString &, Q
class QMacPasteboardMimePlainTextFallback : public QMacInternalPasteboardMime {
public:
QMacPasteboardMimePlainTextFallback() : QMacInternalPasteboardMime(MIME_ALL) {}
QString convertorName();
QString flavorFor(const QString &mime);
QString mimeFor(QString flav);
@ -235,11 +220,6 @@ public:
QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
};
QString QMacPasteboardMimePlainTextFallback::convertorName()
{
return "PlainText (public.text)"_L1;
}
QString QMacPasteboardMimePlainTextFallback::flavorFor(const QString &mime)
{
if (mime == "text/plain"_L1)
@ -289,7 +269,6 @@ QList<QByteArray> QMacPasteboardMimePlainTextFallback::convertFromMime(const QSt
class QMacPasteboardMimeUnicodeText : public QMacInternalPasteboardMime {
public:
QMacPasteboardMimeUnicodeText() : QMacInternalPasteboardMime(MIME_ALL) {}
QString convertorName();
QString flavorFor(const QString &mime);
QString mimeFor(QString flav);
@ -298,11 +277,6 @@ public:
QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
};
QString QMacPasteboardMimeUnicodeText::convertorName()
{
return "UnicodeText"_L1;
}
QString QMacPasteboardMimeUnicodeText::flavorFor(const QString &mime)
{
if (mime == "text/plain"_L1)
@ -381,7 +355,6 @@ QList<QByteArray> QMacPasteboardMimeUnicodeText::convertFromMime(const QString &
class QMacPasteboardMimeHTMLText : public QMacInternalPasteboardMime {
public:
QMacPasteboardMimeHTMLText() : QMacInternalPasteboardMime(MIME_ALL) {}
QString convertorName();
QString flavorFor(const QString &mime);
QString mimeFor(QString flav);
@ -390,11 +363,6 @@ public:
QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
};
QString QMacPasteboardMimeHTMLText::convertorName()
{
return "HTML"_L1;
}
QString QMacPasteboardMimeHTMLText::flavorFor(const QString &mime)
{
if (mime == "text/html"_L1)
@ -435,7 +403,6 @@ QList<QByteArray> QMacPasteboardMimeHTMLText::convertFromMime(const QString &mim
class QMacPasteboardMimeRtfText : public QMacInternalPasteboardMime {
public:
QMacPasteboardMimeRtfText() : QMacInternalPasteboardMime(MIME_ALL) {}
QString convertorName();
QString flavorFor(const QString &mime);
QString mimeFor(QString flav);
@ -444,11 +411,6 @@ public:
QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
};
QString QMacPasteboardMimeRtfText::convertorName()
{
return "Rtf"_L1;
}
QString QMacPasteboardMimeRtfText::flavorFor(const QString &mime)
{
if (mime == "text/html"_L1)
@ -510,7 +472,6 @@ QList<QByteArray> QMacPasteboardMimeRtfText::convertFromMime(const QString &mime
class QMacPasteboardMimeFileUri : public QMacInternalPasteboardMime {
public:
QMacPasteboardMimeFileUri() : QMacInternalPasteboardMime(MIME_ALL) {}
QString convertorName();
QString flavorFor(const QString &mime);
QString mimeFor(QString flav);
@ -520,11 +481,6 @@ public:
int count(QMimeData *mimeData);
};
QString QMacPasteboardMimeFileUri::convertorName()
{
return "FileURL"_L1;
}
QString QMacPasteboardMimeFileUri::flavorFor(const QString &mime)
{
if (mime == "text/uri-list"_L1)
@ -600,7 +556,6 @@ int QMacPasteboardMimeFileUri::count(QMimeData *mimeData)
class QMacPasteboardMimeUrl : public QMacInternalPasteboardMime {
public:
QMacPasteboardMimeUrl() : QMacInternalPasteboardMime(MIME_ALL) {}
QString convertorName();
QString flavorFor(const QString &mime);
QString mimeFor(QString flav);
@ -609,11 +564,6 @@ public:
QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
};
QString QMacPasteboardMimeUrl::convertorName()
{
return "URL"_L1;
}
QString QMacPasteboardMimeUrl::flavorFor(const QString &mime)
{
if (mime.startsWith("text/uri-list"_L1))
@ -675,7 +625,6 @@ class QMacPasteboardMimeVCard : public QMacInternalPasteboardMime
{
public:
QMacPasteboardMimeVCard() : QMacInternalPasteboardMime(MIME_ALL) {}
QString convertorName();
QString flavorFor(const QString &mime);
QString mimeFor(QString flav);
@ -684,11 +633,6 @@ public:
QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
};
QString QMacPasteboardMimeVCard::convertorName()
{
return "VCard"_L1;
}
bool QMacPasteboardMimeVCard::canConvert(const QString &mime, QString flav)
{
return mimeFor(flav) == mime;
@ -732,7 +676,6 @@ extern CGImageRef qt_mac_toCGImage(const QImage &qImage);
class QMacPasteboardMimeTiff : public QMacInternalPasteboardMime {
public:
QMacPasteboardMimeTiff() : QMacInternalPasteboardMime(MIME_ALL) {}
QString convertorName();
QString flavorFor(const QString &mime);
QString mimeFor(QString flav);
@ -741,11 +684,6 @@ public:
QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
};
QString QMacPasteboardMimeTiff::convertorName()
{
return "Tiff"_L1;
}
QString QMacPasteboardMimeTiff::flavorFor(const QString &mime)
{
if (mime.startsWith("application/x-qt-image"_L1))
@ -827,14 +765,6 @@ void registerBuiltInTypes()
}
/*
\fn QString QMacPasteboardMime::convertorName()
Returns a name for the convertor.
All subclasses must reimplement this pure virtual function.
*/
/*
\fn bool QMacPasteboardMime::canConvert(const QString &mime, QString flav)

View File

@ -40,8 +40,6 @@ public:
char type() const { return m_type; }
virtual QString convertorName() = 0;
virtual bool canConvert(const QString &mime, QString flav) = 0;
virtual QString mimeFor(QString flav) = 0;
virtual QString flavorFor(const QString &mime) = 0;

View File

@ -87,9 +87,8 @@ QMacInternalPasteboardMime *convertor(uchar t, const QString &mime, QString flav
MimeList *mimes = globalMimeList();
for (MimeList::const_iterator it = mimes->constBegin(); it != mimes->constEnd(); ++it) {
#ifdef DEBUG_MIME_MAPS
qDebug("QMacMimeRegistry::convertor: seeing if %s (%d) can convert %s to %s [%d]",
qPrintable((*it)->convertorName()), (*it)->type() & t, qPrintable(mime),
qPrintable(flav), (*it)->canConvert(mime,flav));
qDebug("QMacMimeRegistry::convertor: seeing if converter(%d) can convert %s to %s [%d]",
(*it)->type() & t, qPrintable(mime), qPrintable(flav), (*it)->canConvert(mime,flav));
#endif
if (((*it)->type() & t) && (*it)->canConvert(mime, flav))
return (*it);
@ -104,9 +103,8 @@ QString flavorToMime(uchar t, QString flav)
MimeList *mimes = globalMimeList();
for (MimeList::const_iterator it = mimes->constBegin(); it != mimes->constEnd(); ++it) {
#ifdef DEBUG_MIME_MAPS
qDebug("QMacMimeRegistry::flavorToMime: attempting %s (%d) for flavor %s [%s]",
qPrintable((*it)->convertorName()), (*it)->type() & t, qPrintable(flav),
qPrintable((*it)->mimeFor(flav)));
qDebug("QMacMimeRegistry::flavorToMime: attempting (%d) for flavor %s [%s]",
(*it)->type() & t, qPrintable(flav), qPrintable((*it)->mimeFor(flav)));
#endif
if ((*it)->type() & t) {
QString mimeType = (*it)->mimeFor(flav);

View File

@ -15,7 +15,6 @@ using namespace Qt::StringLiterals;
class QMacPasteboardMimeTraditionalMacPlainText : public QMacInternalPasteboardMime {
public:
QMacPasteboardMimeTraditionalMacPlainText() : QMacInternalPasteboardMime(MIME_ALL) { }
QString convertorName();
QString flavorFor(const QString &mime);
QString mimeFor(QString flav);
@ -24,11 +23,6 @@ public:
QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
};
QString QMacPasteboardMimeTraditionalMacPlainText::convertorName()
{
return "PlainText (traditional-mac-plain-text)"_L1;
}
QString QMacPasteboardMimeTraditionalMacPlainText::flavorFor(const QString &mime)
{
if (mime == "text/plain"_L1)

View File

@ -169,8 +169,8 @@ OSStatus QMacPasteboard::promiseKeeper(PasteboardRef paste, PasteboardItemID id,
return cantGetFlavorErr;
}
qCDebug(lcQpaClipboard, "PasteBoard: Calling in promise for %s[%ld] [%s] (%s) [%d]", qPrintable(promise.mime), promise_id,
qPrintable(flavorAsQString), qPrintable(promise.convertor->convertorName()), promise.offset);
qCDebug(lcQpaClipboard, "PasteBoard: Calling in promise for %s[%ld] [%s] [%d]", qPrintable(promise.mime), promise_id,
qPrintable(flavorAsQString), promise.offset);
// Get the promise data. If this is a "lazy" promise call variantData()
// to request the data from the application.
@ -321,7 +321,7 @@ QMacPasteboard::setMimeData(QMimeData *mime_src, DataRequestType dataRequestType
// Hack: The Rtf handler converts incoming Rtf to Html. We do
// not want to convert outgoing Html to Rtf but instead keep
// posting it as Html. Skip the Rtf handler here.
if (c->convertorName() == "Rtf"_L1)
if (c->flavorFor("text/html"_L1) == "public.rtf"_L1)
continue;
QString flavor(c->flavorFor(mimeType));
if (!flavor.isEmpty()) {
@ -337,8 +337,8 @@ QMacPasteboard::setMimeData(QMimeData *mime_src, DataRequestType dataRequestType
QMacPasteboard::Promise promise(itemID, c, mimeType, mimeData, item, dataRequestType);
promises.append(promise);
PasteboardPutItemFlavor(paste, reinterpret_cast<PasteboardItemID>(itemID), QCFString(flavor), 0, kPasteboardFlavorNoFlags);
qCDebug(lcQpaClipboard, " - adding %ld %s [%s] <%s> [%d]",
itemID, qPrintable(mimeType), qPrintable(flavor), qPrintable(c->convertorName()), item);
qCDebug(lcQpaClipboard, " - adding %ld %s [%s] [%d]",
itemID, qPrintable(mimeType), qPrintable(flavor), item);
}
}
}
@ -469,14 +469,14 @@ QMacPasteboard::retrieveData(const QString &format, QMetaType) const
if (PasteboardCopyItemFlavorData(paste, id, flavor, &macBuffer) == noErr) {
QByteArray buffer((const char *)CFDataGetBytePtr(macBuffer), CFDataGetLength(macBuffer));
if (!buffer.isEmpty()) {
qCDebug(lcQpaClipboard, " - %s [%s] (%s)", qPrintable(format), qPrintable(c_flavor), qPrintable(c->convertorName()));
qCDebug(lcQpaClipboard, " - %s [%s]", qPrintable(format), qPrintable(c_flavor));
buffer.detach(); //detach since we release the macBuffer
retList.append(buffer);
break; //skip to next element
}
}
} else {
qCDebug(lcQpaClipboard, " - NoMatch %s [%s] (%s)", qPrintable(c_flavor), qPrintable(QString::fromCFString(flavor)), qPrintable(c->convertorName()));
qCDebug(lcQpaClipboard, " - NoMatch %s [%s]", qPrintable(c_flavor), qPrintable(QString::fromCFString(flavor)));
}
}
}