Remove QTextCodec dependency from qmacmime.mm

Change-Id: I99f95d026683299c5d437b52803cb5a3a0ad0263
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
bb10
Lars Knoll 2020-04-30 13:48:14 +02:00
parent 8a84eb6c4a
commit 65821814ff
1 changed files with 7 additions and 10 deletions

View File

@ -418,10 +418,9 @@ QVariant QMacPasteboardMimeUnicodeText::convertToMime(const QString &mimetype, Q
QVariant ret;
if (flavor == QLatin1String("public.utf8-plain-text")) {
ret = QString::fromUtf8(firstData);
#if QT_CONFIG(textcodec)
} else if (flavor == QLatin1String("public.utf16-plain-text")) {
ret = QTextCodec::codecForName("UTF-16")->toUnicode(firstData);
#endif
QString str = QStringDecoder(QStringDecoder::Utf16)(firstData);
ret = str;
} else {
qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype));
}
@ -434,25 +433,23 @@ QList<QByteArray> QMacPasteboardMimeUnicodeText::convertFromMime(const QString &
QString string = data.toString();
if (flavor == QLatin1String("public.utf8-plain-text"))
ret.append(string.toUtf8());
#if QT_CONFIG(textcodec)
else if (flavor == QLatin1String("public.utf16-plain-text")) {
QTextCodec::ConverterState state;
QStringEncoder::Flags f;
#if defined(Q_OS_MACOS)
// Some applications such as Microsoft Excel, don't deal well with
// a BOM present, so we follow the traditional approach of Qt on
// macOS to not generate public.utf16-plain-text with a BOM.
state.flags = QTextCodec::IgnoreHeader;
f = QStringEncoder::Flag::Default;
#else
// Whereas iOS applications will fail to paste if we do _not_
// include a BOM in the public.utf16-plain-text content, most
// likely due to converting the data using NSUTF16StringEncoding
// which assumes big-endian byte order if there is no BOM.
state.flags = QTextCodec::DefaultConversion;
f = QStringEncoder::Flag::WriteBom;
#endif
ret.append(QTextCodec::codecForName("UTF-16")->fromUnicode(
string.constData(), string.length(), &state));
QStringEncoder encoder(QStringEncoder::Utf16, f);
ret.append(encoder(string));
}
#endif
return ret;
}