Cocoa: Allow pasting text from Qt apps to Mail

Apple Mail will pick up and attempt to use the vCard
flavor, which then fails since the data Qt placed
on the clipboard is not actually a valid vCard.

Place data in the vCard format on the clipboard
only if the mime type is “text/vcard”.

[ChangeLog][OS X] Pasting text from Qt applications
to Apple Mail now works.

[ChangeLog][OS X] “text/vcard” is now required as
the mime type when placing vCards on the clipboard.

Task-number: QTBUG-48953
Change-Id: Id029b20317f2c5ad8ae225912484de3c97498d29
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
This commit is contained in:
Morten Johan Sørvig 2016-05-11 12:41:41 +02:00 committed by Morten Johan Sørvig
parent f162e29acc
commit d16692ed1b

View File

@ -748,7 +748,7 @@ bool QMacPasteboardMimeVCard::canConvert(const QString &mime, QString flav)
QString QMacPasteboardMimeVCard::flavorFor(const QString &mime)
{
if (mime.startsWith(QLatin1String("text/plain")))
if (mime.startsWith(QLatin1String("text/vcard")))
return QLatin1String("public.vcard");
return QString();
}
@ -756,14 +756,14 @@ QString QMacPasteboardMimeVCard::flavorFor(const QString &mime)
QString QMacPasteboardMimeVCard::mimeFor(QString flav)
{
if (flav == QLatin1String("public.vcard"))
return QLatin1String("text/plain");
return QLatin1String("text/vcard");
return QString();
}
QVariant QMacPasteboardMimeVCard::convertToMime(const QString &mime, QList<QByteArray> data, QString)
{
QByteArray cards;
if (mime == QLatin1String("text/plain")) {
if (mime == QLatin1String("text/vcard")) {
for (int i=0; i<data.size(); ++i)
cards += data[i];
}
@ -773,7 +773,7 @@ QVariant QMacPasteboardMimeVCard::convertToMime(const QString &mime, QList<QByte
QList<QByteArray> QMacPasteboardMimeVCard::convertFromMime(const QString &mime, QVariant data, QString)
{
QList<QByteArray> ret;
if (mime == QLatin1String("text/plain"))
if (mime == QLatin1String("text/vcard"))
ret.append(data.toString().toUtf8());
return ret;
}