Merge remote-tracking branch 'origin/5.13' into dev

Conflicts:
	.qmake.conf
	qmake/generators/makefile.cpp

Change-Id: Ifb2633a69d0bf8cdf12d799c6259beefc279c49e
This commit is contained in:
Liang Qi 2019-07-05 15:37:50 +02:00
commit deee7b7ece
18 changed files with 134 additions and 42 deletions

View File

@ -34,10 +34,20 @@ CMAKE_INCLUDE_NAME = $$eval(QT.$${MODULE}.name)
# TARGET here is the one changed at the end of qt_module.prf, # TARGET here is the one changed at the end of qt_module.prf,
# which already contains the Qt5 prefix and QT_LIBINFIX suffix : # which already contains the Qt5 prefix and QT_LIBINFIX suffix :
# Qt5Core_suffix, Qt5Network_suffix, Foo_suffix # Qt5Core_{libinfix_suffix}, Qt5Network_{libinfix_suffix}, Foo_{libinfix_suffix}
# (or QtCore_suffix, Foo_suffix on macos with -framework) # (or QtCore_{libinfix_suffix}, Foo_{libinfix_suffix} on macos with -framework).
CMAKE_QT_STEM = $${TARGET} CMAKE_QT_STEM = $${TARGET}
# On macOS when building just a debug configuration which is not part of debug_and_release,
# $${TARGET} already contains a _debug suffix, as per the following call chain:
# qt_module.prf -> qt5LibraryTarget -> qtLibraryTarget -> qtPlatformTargetSuffix.
# Remove the _debug suffix in the stem, to keep all further uses of CMAKE_QT_STEM consistent.
# The _debug suffix is then re-added where needed regardless if it's a debug_and_release build
# or just debug.
darwin:!qt_framework:!debug_and_release:CONFIG(debug, debug|release) {
CMAKE_QT_STEM = $$replace(CMAKE_QT_STEM, _debug$, )
}
!generated_privates { !generated_privates {
isEmpty(SYNCQT.INJECTED_PRIVATE_HEADER_FILES):isEmpty(SYNCQT.PRIVATE_HEADER_FILES): \ isEmpty(SYNCQT.INJECTED_PRIVATE_HEADER_FILES):isEmpty(SYNCQT.PRIVATE_HEADER_FILES): \
CMAKE_NO_PRIVATE_INCLUDES = true CMAKE_NO_PRIVATE_INCLUDES = true
@ -211,18 +221,18 @@ CMAKE_INTERFACE_QT5_MODULE_DEPS = $$join(aux_lib_deps, ";")
mac { mac {
!isEmpty(CMAKE_STATIC_TYPE) { !isEmpty(CMAKE_STATIC_TYPE) {
CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.a CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}_debug.a
CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.a
CMAKE_PRL_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.prl CMAKE_PRL_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}_debug.prl
CMAKE_PRL_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.prl CMAKE_PRL_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.prl
} else { } else {
qt_framework { qt_framework {
CMAKE_LIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}.framework/$${CMAKE_QT_STEM} CMAKE_LIB_FILE_LOCATION_DEBUG = $${CMAKE_QT_STEM}.framework/$${CMAKE_QT_STEM}_debug
CMAKE_LIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.framework/$${CMAKE_QT_STEM} CMAKE_LIB_FILE_LOCATION_RELEASE = $${CMAKE_QT_STEM}.framework/$${CMAKE_QT_STEM}
CMAKE_BUILD_IS_FRAMEWORK = "true" CMAKE_BUILD_IS_FRAMEWORK = "true"
} else { } else {
CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}.$$eval(QT.$${MODULE}.VERSION).dylib CMAKE_LIB_FILE_LOCATION_DEBUG = lib$${CMAKE_QT_STEM}_debug.$$eval(QT.$${MODULE}.VERSION).dylib
CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.$$eval(QT.$${MODULE}.VERSION).dylib CMAKE_LIB_FILE_LOCATION_RELEASE = lib$${CMAKE_QT_STEM}.$$eval(QT.$${MODULE}.VERSION).dylib
} }
} }

View File

@ -56,9 +56,16 @@ function(_qt5_$${CMAKE_MODULE_NAME}_process_prl_file prl_file_location Configura
get_filename_component(_qt5_install_libs \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/lib\" ABSOLUTE) get_filename_component(_qt5_install_libs \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/lib\" ABSOLUTE)
if(EXISTS \"${prl_file_location}\") if(EXISTS \"${prl_file_location}\")
file(STRINGS \"${prl_file_location}\" _prl_strings REGEX \"QMAKE_PRL_LIBS[ \\t]*=\") file(STRINGS \"${prl_file_location}\" _prl_strings REGEX \"QMAKE_PRL_LIBS_FOR_CMAKE[ \\t]*=\")
string(REGEX REPLACE \"QMAKE_PRL_LIBS[ \\t]*=[ \\t]*([^\\n]*)\" \"\\\\1\" _static_depends ${_prl_strings})
string(REGEX REPLACE \"[ \\t]+\" \";\" _static_depends ${_static_depends}) # file(STRINGS) replaces all semicolons read from the file with backslash semicolons.
# We need to do a reverse transformation in CMake. For that we replace all backslash
# semicolons with just semicolons, but due to the qmake substitution feature
# creating this file, we need to double the amount of backslashes, so the final file
# should have three backslashes and one semicolon.
string(REGEX REPLACE \"\\\\\\;\" \";\" _prl_strings \"${_prl_strings}\")
string(REGEX REPLACE \"QMAKE_PRL_LIBS_FOR_CMAKE[ \\t]*=[ \\t]*([^\\n]*)\" \"\\\\1\" _static_depends \"${_prl_strings}\")
string(REGEX REPLACE \"[ \\t]+\" \";\" _standard_libraries \"${CMAKE_CXX_STANDARD_LIBRARIES}\") string(REGEX REPLACE \"[ \\t]+\" \";\" _standard_libraries \"${CMAKE_CXX_STANDARD_LIBRARIES}\")
set(_search_paths) set(_search_paths)
string(REPLACE \"\\$\\$[QT_INSTALL_LIBS]\" \"${_qt5_install_libs}\" _static_depends \"${_static_depends}\") string(REPLACE \"\\$\\$[QT_INSTALL_LIBS]\" \"${_qt5_install_libs}\" _static_depends \"${_static_depends}\")

View File

@ -1,7 +1,7 @@
isEmpty(QMAKE_INCDIR_VULKAN) { isEmpty(QMAKE_INCDIR_VULKAN) {
# Pick up the VULKAN_SDK env var set by the LunarG SDK so that the Vulkan # Pick up the VULKAN_SDK env var set by the LunarG SDK so that the Vulkan
# headers are found out-of-the-box on typical Windows setups. # headers are found out-of-the-box on typical Windows setups.
QMAKE_INCDIR_VULKAN = $$(VULKAN_SDK)\\include QMAKE_INCDIR_VULKAN = $$(VULKAN_SDK)/include
# Do not export the include dir but resolve it on every qmake call. # Do not export the include dir but resolve it on every qmake call.
QMAKE_EXPORT_INCDIR_VULKAN = - QMAKE_EXPORT_INCDIR_VULKAN = -

View File

@ -1015,6 +1015,14 @@ MakefileGenerator::writePrlFile(QTextStream &t)
for (ProStringList::Iterator it = libs.begin(); it != libs.end(); ++it) for (ProStringList::Iterator it = libs.begin(); it != libs.end(); ++it)
t << qv(project->values((*it).toKey())); t << qv(project->values((*it).toKey()));
t << Qt::endl; t << Qt::endl;
t << "QMAKE_PRL_LIBS_FOR_CMAKE = ";
QString sep;
for (ProStringList::Iterator it = libs.begin(); it != libs.end(); ++it) {
t << sep << project->values((*it).toKey()).join(';').replace('\\', "\\\\");
sep = ';';
}
t << Qt::endl;
} }
} }

View File

@ -903,6 +903,10 @@ inline QRandomGenerator::SystemGenerator &QRandomGenerator::SystemGenerator::sel
\snippet code/src_corelib_global_qrandom.cpp 12 \snippet code/src_corelib_global_qrandom.cpp 12
If the \a highest parameter is negative, the result will be negative too;
if it is infinite or NaN, the result will be infinite or NaN too (that is,
not random).
\sa generateDouble(), bounded() \sa generateDouble(), bounded()
*/ */
@ -934,7 +938,7 @@ inline QRandomGenerator::SystemGenerator &QRandomGenerator::SystemGenerator::sel
\overload \overload
Generates one random 32-bit quantity in the range between 0 (inclusive) and Generates one random 32-bit quantity in the range between 0 (inclusive) and
\a highest (exclusive). \a highest must not be negative. \a highest (exclusive). \a highest must be positive.
Note that this function cannot be used to obtain values in the full 32-bit Note that this function cannot be used to obtain values in the full 32-bit
range of int. Instead, use generate() and cast to int. range of int. Instead, use generate() and cast to int.
@ -946,8 +950,11 @@ inline QRandomGenerator::SystemGenerator &QRandomGenerator::SystemGenerator::sel
\fn quint32 QRandomGenerator::bounded(quint32 lowest, quint32 highest) \fn quint32 QRandomGenerator::bounded(quint32 lowest, quint32 highest)
\overload \overload
Generates one random 32-bit quantity in the range between \a lowest (inclusive) Generates one random 32-bit quantity in the range between \a lowest
and \a highest (exclusive). The same result may also be obtained by using (inclusive) and \a highest (exclusive). The \a highest parameter must be
greater than \a lowest.
The same result may also be obtained by using
\l{http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution}{\c std::uniform_int_distribution} \l{http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution}{\c std::uniform_int_distribution}
with parameters \a lowest and \c{\a highest - 1}. That class can also be used to with parameters \a lowest and \c{\a highest - 1}. That class can also be used to
obtain quantities larger than 32 bits. obtain quantities larger than 32 bits.
@ -968,7 +975,8 @@ inline QRandomGenerator::SystemGenerator &QRandomGenerator::SystemGenerator::sel
\overload \overload
Generates one random 32-bit quantity in the range between \a lowest Generates one random 32-bit quantity in the range between \a lowest
(inclusive) and \a highest (exclusive), both of which may be negative. (inclusive) and \a highest (exclusive), both of which may be negative, but
\a highest must be greater than \a lowest.
Note that this function cannot be used to obtain values in the full 32-bit Note that this function cannot be used to obtain values in the full 32-bit
range of int. Instead, use generate() and cast to int. range of int. Instead, use generate() and cast to int.

View File

@ -122,16 +122,18 @@ public:
return quint32(value); return quint32(value);
} }
int bounded(int highest)
{
return int(bounded(quint32(highest)));
}
quint32 bounded(quint32 lowest, quint32 highest) quint32 bounded(quint32 lowest, quint32 highest)
{ {
Q_ASSERT(highest > lowest);
return bounded(highest - lowest) + lowest; return bounded(highest - lowest) + lowest;
} }
int bounded(int highest)
{
Q_ASSERT(highest > 0);
return int(bounded(0U, quint32(highest)));
}
int bounded(int lowest, int highest) int bounded(int lowest, int highest)
{ {
return bounded(highest - lowest) + lowest; return bounded(highest - lowest) + lowest;

View File

@ -2232,6 +2232,8 @@ void QObject::removeEventFilter(QObject *obj)
*/ */
/*! /*!
\threadsafe
Schedules this object for deletion. Schedules this object for deletion.
The object will be deleted when control returns to the event The object will be deleted when control returns to the event

View File

@ -1194,7 +1194,7 @@ bool QRect::intersects(const QRect &r) const noexcept
\fn QRect operator-(const QRect &lhs, const QMargins &rhs) \fn QRect operator-(const QRect &lhs, const QMargins &rhs)
\relates QRect \relates QRect
Returns the \a lhs rectangle shrunken by the \a rhs margins. Returns the \a lhs rectangle shrunk by the \a rhs margins.
\since 5.3 \since 5.3
*/ */
@ -2417,7 +2417,7 @@ QRect QRectF::toAlignedRect() const noexcept
\relates QRectF \relates QRectF
\since 5.3 \since 5.3
Returns the \a lhs rectangle grown by the \a rhs margins. Returns the \a lhs rectangle shrunk by the \a rhs margins.
*/ */
/*! /*!

View File

@ -1548,7 +1548,16 @@ void QTextHtmlParser::applyAttributes(const QStringList &attributes)
n -= 3; n -= 3;
node->charFormat.setProperty(QTextFormat::FontSizeAdjustment, n); node->charFormat.setProperty(QTextFormat::FontSizeAdjustment, n);
} else if (key == QLatin1String("face")) { } else if (key == QLatin1String("face")) {
node->charFormat.setFontFamily(value); if (value.contains(QLatin1Char(','))) {
const QStringList values = value.split(QLatin1Char(','));
QStringList families;
for (const QString &family : values)
families << family.trimmed();
node->charFormat.setFontFamilies(families);
node->charFormat.setFontFamily(families.at(0));
} else {
node->charFormat.setFontFamily(value);
}
} else if (key == QLatin1String("color")) { } else if (key == QLatin1String("color")) {
QColor c; c.setNamedColor(value); QColor c; c.setNamedColor(value);
if (!c.isValid()) if (!c.isValid())

View File

@ -236,6 +236,7 @@ QNetworkReplyWasmImpl::~QNetworkReplyWasmImpl()
QByteArray QNetworkReplyWasmImpl::methodName() const QByteArray QNetworkReplyWasmImpl::methodName() const
{ {
const Q_D( QNetworkReplyWasmImpl);
switch (operation()) { switch (operation()) {
case QNetworkAccessManager::HeadOperation: case QNetworkAccessManager::HeadOperation:
return "HEAD"; return "HEAD";
@ -247,6 +248,8 @@ QByteArray QNetworkReplyWasmImpl::methodName() const
return "POST"; return "POST";
case QNetworkAccessManager::DeleteOperation: case QNetworkAccessManager::DeleteOperation:
return "DELETE"; return "DELETE";
case QNetworkAccessManager::CustomOperation:
return d->request.attribute(QNetworkRequest::CustomVerbAttribute).toByteArray();
default: default:
break; break;
} }

View File

@ -608,13 +608,13 @@ bool QNativeSocketEnginePrivate::fetchConnectionParameters()
socketType = qt_socket_getType(socketDescriptor); socketType = qt_socket_getType(socketDescriptor);
#if defined (QNATIVESOCKETENGINE_DEBUG) #if defined (QNATIVESOCKETENGINE_DEBUG)
QString socketProtocolStr = "UnknownProtocol"; QString socketProtocolStr = QStringLiteral("UnknownProtocol");
if (socketProtocol == QAbstractSocket::IPv4Protocol) socketProtocolStr = "IPv4Protocol"; if (socketProtocol == QAbstractSocket::IPv4Protocol) socketProtocolStr = QStringLiteral("IPv4Protocol");
else if (socketProtocol == QAbstractSocket::IPv6Protocol) socketProtocolStr = "IPv6Protocol"; else if (socketProtocol == QAbstractSocket::IPv6Protocol) socketProtocolStr = QStringLiteral("IPv6Protocol");
QString socketTypeStr = "UnknownSocketType"; QString socketTypeStr = QStringLiteral("UnknownSocketType");
if (socketType == QAbstractSocket::TcpSocket) socketTypeStr = "TcpSocket"; if (socketType == QAbstractSocket::TcpSocket) socketTypeStr = QStringLiteral("TcpSocket");
else if (socketType == QAbstractSocket::UdpSocket) socketTypeStr = "UdpSocket"; else if (socketType == QAbstractSocket::UdpSocket) socketTypeStr = QStringLiteral("UdpSocket");
qDebug("QNativeSocketEnginePrivate::fetchConnectionParameters() localAddress == %s, localPort = %i, peerAddress == %s, peerPort = %i, socketProtocol == %s, socketType == %s", localAddress.toString().toLatin1().constData(), localPort, peerAddress.toString().toLatin1().constData(), peerPort, socketProtocolStr.toLatin1().constData(), socketTypeStr.toLatin1().constData()); qDebug("QNativeSocketEnginePrivate::fetchConnectionParameters() localAddress == %s, localPort = %i, peerAddress == %s, peerPort = %i, socketProtocol == %s, socketType == %s", localAddress.toString().toLatin1().constData(), localPort, peerAddress.toString().toLatin1().constData(), peerPort, socketProtocolStr.toLatin1().constData(), socketTypeStr.toLatin1().constData());
#endif #endif
@ -1477,8 +1477,8 @@ qint64 QNativeSocketEnginePrivate::nativeWrite(const char *data, qint64 len)
} }
#if defined (QNATIVESOCKETENGINE_DEBUG) #if defined (QNATIVESOCKETENGINE_DEBUG)
qDebug("QNativeSocketEnginePrivate::nativeWrite(%p \"%s\", %li) == %li", qDebug("QNativeSocketEnginePrivate::nativeWrite(%p \"%s\", %lli) == %lli",
data, qt_prettyDebug(data, qMin((int)ret, 16), (int)ret).data(), (int)len, (int)ret); data, qt_prettyDebug(data, qMin(int(ret), 16), int(ret)).data(), len, ret);
#endif #endif
return ret; return ret;
@ -1520,11 +1520,11 @@ qint64 QNativeSocketEnginePrivate::nativeRead(char *data, qint64 maxLength)
#if defined (QNATIVESOCKETENGINE_DEBUG) #if defined (QNATIVESOCKETENGINE_DEBUG)
if (ret != -2) { if (ret != -2) {
qDebug("QNativeSocketEnginePrivate::nativeRead(%p \"%s\", %li) == %li", qDebug("QNativeSocketEnginePrivate::nativeRead(%p \"%s\", %lli) == %lli",
data, qt_prettyDebug(data, qMin((int)bytesRead, 16), (int)bytesRead).data(), (int)maxLength, (int)ret); data, qt_prettyDebug(data, qMin(int(bytesRead), 16), int(bytesRead)).data(), maxLength, ret);
} else { } else {
qDebug("QNativeSocketEnginePrivate::nativeRead(%p, %li) == -2 (WOULD BLOCK)", qDebug("QNativeSocketEnginePrivate::nativeRead(%p, %lli) == -2 (WOULD BLOCK)",
data, int(maxLength)); data, maxLength);
} }
#endif #endif

View File

@ -1188,6 +1188,8 @@ void QSocks5SocketEnginePrivate::_q_controlSocketReadNotification()
break; break;
case RequestMethodSent: case RequestMethodSent:
parseRequestMethodReply(); parseRequestMethodReply();
if (socks5State == Connected && data->controlSocket->bytesAvailable())
_q_controlSocketReadNotification();
break; break;
case Connected: { case Connected: {
QByteArray buf; QByteArray buf;
@ -1751,6 +1753,11 @@ bool QSocks5SocketEngine::waitForRead(int msecs, bool *timedOut)
return false; return false;
if (d->data->controlSocket->state() == QAbstractSocket::UnconnectedState) if (d->data->controlSocket->state() == QAbstractSocket::UnconnectedState)
return true; return true;
if (bytesAvailable() && d->readNotificationPending) {
// We've got some data incoming, but the queued call hasn't been performed yet.
// The data is where we expect it to be already, so just return true.
return true;
}
// we're connected // we're connected
if (d->mode == QSocks5SocketEnginePrivate::ConnectMode || if (d->mode == QSocks5SocketEnginePrivate::ConnectMode ||

View File

@ -11517,10 +11517,9 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on)
} }
break; break;
case Qt::WA_TranslucentBackground: case Qt::WA_TranslucentBackground:
if (on) { if (on)
setAttribute(Qt::WA_NoSystemBackground); setAttribute(Qt::WA_NoSystemBackground);
d->updateIsTranslucent(); d->updateIsTranslucent();
}
break; break;
case Qt::WA_AcceptTouchEvents: case Qt::WA_AcceptTouchEvents:

View File

@ -549,7 +549,8 @@ void tst_QPluginLoader::staticPlugins()
} }
QVERIFY(found); QVERIFY(found);
QCOMPARE(metaData.value("version").toInt(), QT_VERSION); // We don't store the patch release version anymore (since 5.13)
QCOMPARE(metaData.value("version").toInt() / 0x100, QT_VERSION / 0x100);
QCOMPARE(metaData.value("IID").toString(), "SomeIID"); QCOMPARE(metaData.value("IID").toString(), "SomeIID");
QCOMPARE(metaData.value("ExtraMetaData"), QJsonArray({ "StaticPlugin", "foo" })); QCOMPARE(metaData.value("ExtraMetaData"), QJsonArray({ "StaticPlugin", "foo" }));
QCOMPARE(metaData.value("URI").toString(), "qt.test.pluginloader.staticplugin"); QCOMPARE(metaData.value("URI").toString(), "qt.test.pluginloader.staticplugin");

View File

@ -188,6 +188,9 @@ private slots:
void lineHeightType(); void lineHeightType();
void cssLineHeightMultiplier(); void cssLineHeightMultiplier();
void fontTagFace();
private: private:
void backgroundImage_checkExpectedHtml(const QTextDocument &doc); void backgroundImage_checkExpectedHtml(const QTextDocument &doc);
void buildRegExpData(); void buildRegExpData();
@ -3498,5 +3501,26 @@ void tst_QTextDocument::cssLineHeightMultiplier()
} }
} }
void tst_QTextDocument::fontTagFace()
{
{
QTextDocument td;
td.setHtml("<html><body><font face='Times'>Foobar</font></body></html>");
QTextFragment fragment = td.begin().begin().fragment();
QTextCharFormat format = fragment.charFormat();
QCOMPARE(format.fontFamily(), QLatin1String("Times"));
}
{
QTextDocument td;
td.setHtml("<html><body><font face='Times, serif'>Foobar</font></body></html>");
QTextFragment fragment = td.begin().begin().fragment();
QTextCharFormat format = fragment.charFormat();
QCOMPARE(format.fontFamily(), QLatin1String("Times"));
QStringList expectedFamilies = { QLatin1String("Times"), QLatin1String("serif") };
QCOMPARE(format.fontFamilies().toStringList(), expectedFamilies);
}
}
QTEST_MAIN(tst_QTextDocument) QTEST_MAIN(tst_QTextDocument)
#include "tst_qtextdocument.moc" #include "tst_qtextdocument.moc"

View File

@ -326,8 +326,8 @@ void tst_QTcpSocket::initTestCase_data()
QTest::addColumn<bool>("ssl"); QTest::addColumn<bool>("ssl");
QTest::newRow("WithoutProxy") << false << 0 << false; QTest::newRow("WithoutProxy") << false << 0 << false;
//QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy) << false; ### temporarily disabled, QTBUG-38385 QTest::newRow("WithSocks5Proxy") << true << int(Socks5Proxy) << false;
//QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic) << false; ### temporarily disabled, QTBUG-38385 QTest::newRow("WithSocks5ProxyAuth") << true << int(Socks5Proxy | AuthBasic) << false;
QTest::newRow("WithHttpProxy") << true << int(HttpProxy) << false; QTest::newRow("WithHttpProxy") << true << int(HttpProxy) << false;
QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic) << false; QTest::newRow("WithHttpProxyBasicAuth") << true << int(HttpProxy | AuthBasic) << false;
@ -335,8 +335,8 @@ void tst_QTcpSocket::initTestCase_data()
#ifndef QT_NO_SSL #ifndef QT_NO_SSL
QTest::newRow("WithoutProxy SSL") << false << 0 << true; QTest::newRow("WithoutProxy SSL") << false << 0 << true;
//QTest::newRow("WithSocks5Proxy SSL") << true << int(Socks5Proxy) << true; ### temporarily disabled, QTBUG-38385 QTest::newRow("WithSocks5Proxy SSL") << true << int(Socks5Proxy) << true;
//QTest::newRow("WithSocks5AuthProxy SSL") << true << int(Socks5Proxy | AuthBasic) << true; ### temporarily disabled, QTBUG-38385 QTest::newRow("WithSocks5AuthProxy SSL") << true << int(Socks5Proxy | AuthBasic) << true;
QTest::newRow("WithHttpProxy SSL") << true << int(HttpProxy) << true; QTest::newRow("WithHttpProxy SSL") << true << int(HttpProxy) << true;
QTest::newRow("WithHttpProxyBasicAuth SSL") << true << int(HttpProxy | AuthBasic) << true; QTest::newRow("WithHttpProxyBasicAuth SSL") << true << int(HttpProxy | AuthBasic) << true;

View File

@ -5055,6 +5055,12 @@ public:
void tst_QGraphicsItem::paint() void tst_QGraphicsItem::paint()
{ {
#if defined(Q_OS_MACOS)
if (QSysInfo::productVersion() == QLatin1String("10.12")) {
QSKIP("Test is very flaky on MacOS_10_12, see QTBUG-76566");
}
#endif
QGraphicsScene scene; QGraphicsScene scene;
PaintTester paintTester; PaintTester paintTester;

View File

@ -8864,6 +8864,12 @@ void tst_QWidget::translucentWidget()
QEXPECT_FAIL("", "WinRT: This fails. QTBUG-68297.", Abort); QEXPECT_FAIL("", "WinRT: This fails. QTBUG-68297.", Abort);
QCOMPARE(actual.size(),expected.size()); QCOMPARE(actual.size(),expected.size());
QCOMPARE(actual,expected); QCOMPARE(actual,expected);
const QWindow *window = label.windowHandle();
const QSurfaceFormat translucentFormat = window->requestedFormat();
label.setAttribute(Qt::WA_TranslucentBackground, false);
const QSurfaceFormat opaqueFormat = window->requestedFormat();
QVERIFY(translucentFormat != opaqueFormat);
} }
class MaskResizeTestWidget : public QWidget class MaskResizeTestWidget : public QWidget