Merge remote-tracking branch 'origin/5.12' into dev
Change-Id: I91e684e74c36467efda8ded6ed19791baa0c1a1f
This commit is contained in:
commit
a2fd99c430
94
dist/changes-5.11.3
vendored
Normal file
94
dist/changes-5.11.3
vendored
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
Qt 5.11.3 is a bug-fix release. It maintains both forward and backward
|
||||||
|
compatibility (source and binary) with Qt 5.11.0 through 5.11.2.
|
||||||
|
|
||||||
|
For more details, refer to the online documentation included in this
|
||||||
|
distribution. The documentation is also available online:
|
||||||
|
|
||||||
|
http://doc.qt.io/qt-5/index.html
|
||||||
|
|
||||||
|
The Qt version 5.11 series is binary compatible with the 5.10.x series.
|
||||||
|
Applications compiled for 5.10 will continue to run with 5.11.
|
||||||
|
|
||||||
|
Some of the changes listed in this file include issue tracking numbers
|
||||||
|
corresponding to tasks in the Qt Bug Tracker:
|
||||||
|
|
||||||
|
https://bugreports.qt.io/
|
||||||
|
|
||||||
|
Each of these identifiers can be entered in the bug tracker to obtain more
|
||||||
|
information about a particular change.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* Third-Party Components *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- libpng was updated to version 1.6.35
|
||||||
|
- PCRE2 was updated to version 10.32.
|
||||||
|
- Added documentation for the SLJIT part of pcre2, which is available
|
||||||
|
under the BSD-2-Clause license.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* Documentation *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- Fixed the icons for the "file save" action that were inaccurate
|
||||||
|
representations of a 3.5-inch floppy disk (the cut edge was on the wrong
|
||||||
|
side). Now all floppy representations are physically accurate.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* QtCore *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- QCommandLineParser:
|
||||||
|
* [QTBUG-70174] Fixed a bug that caused the help output to show two
|
||||||
|
options or more in the same line if the options didn't have a
|
||||||
|
description.
|
||||||
|
|
||||||
|
- QDateTime:
|
||||||
|
* [QTBUG-70823] Fixed parsing of date/time strings when the day is the
|
||||||
|
start of daylight savings and that starts at midnight on the
|
||||||
|
timezone.
|
||||||
|
|
||||||
|
- QPluginLoader:
|
||||||
|
* [QTBUG-70560] Fixed a bug in parsing certain plugins, which might
|
||||||
|
conclude a valid plugin wasn't valid.
|
||||||
|
|
||||||
|
- QPointer:
|
||||||
|
* [QTBUG-71412] Fixed a race condition that would cause an assertion
|
||||||
|
failure when two threads created a QPointer for the same QObject.
|
||||||
|
|
||||||
|
- QUrl:
|
||||||
|
* Fixed a bug that caused QUrl::matches to incorrectly compare two URLs
|
||||||
|
with different hostnames or different usernames as equal, if certain
|
||||||
|
QUrl::RemoveXxx options were passed.
|
||||||
|
* [QTBUG-70386][QTBUG-70852] Updated the public DNS suffix list.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* QtGui *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- QPicture:
|
||||||
|
* [QTBUG-71208] Fix crash reading malformed picture file
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* QtNetwork *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- SSL:
|
||||||
|
* [QTBUG-68156] OpenSSL >= 1.0 is now required to build Qt with OpenSSL
|
||||||
|
support.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* Linux *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- Fixed a number of incompatibilities with Linux C libraries due to use of
|
||||||
|
new kernel system calls statx(2) and renameat2(2). In order to enable
|
||||||
|
them now in Qt, they need to be provided in the C library's own
|
||||||
|
headers. Currently, glibc 2.28 contains them.
|
||||||
|
|
||||||
|
****************************************************************************
|
||||||
|
* macOS *
|
||||||
|
****************************************************************************
|
||||||
|
|
||||||
|
- Offline renderers will be disabled when the application is
|
||||||
|
using Qt WebEngine and running on one of the late 2013 Mac Pro models.
|
@ -5,5 +5,6 @@ SUBDIRS = \
|
|||||||
ipc \
|
ipc \
|
||||||
mimetypes \
|
mimetypes \
|
||||||
serialization \
|
serialization \
|
||||||
threads \
|
|
||||||
tools
|
tools
|
||||||
|
|
||||||
|
qtConfig(thread): SUBDIRS += threads
|
||||||
|
@ -73,17 +73,14 @@ for(resource, RESOURCES) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
!isEmpty(RESOURCES):contains(TEMPLATE, .*lib):plugin:static {
|
!isEmpty(RESOURCES):contains(TEMPLATE, .*lib):plugin:static {
|
||||||
pluginName = $$lower($$replace(_PRO_FILE_, .*/([^/.]+)\\.[^/.]+, \\1))
|
resource_init_function = $$lower($$basename(TARGET))_plugin_resource_init
|
||||||
|
|
||||||
resource_init_function = $${pluginName}_plugin_resource_init
|
|
||||||
DEFINES += "QT_PLUGIN_RESOURCE_INIT_FUNCTION=$$resource_init_function"
|
DEFINES += "QT_PLUGIN_RESOURCE_INIT_FUNCTION=$$resource_init_function"
|
||||||
|
RESOURCE_INIT_CPP = $$OUT_PWD/$$lower($$basename(TARGET))_plugin_resources.cpp
|
||||||
RESOURCE_INIT_CPP = $$OUT_PWD/$${pluginName}_plugin_resources.cpp
|
|
||||||
|
|
||||||
GENERATED_SOURCES += $$RESOURCE_INIT_CPP
|
GENERATED_SOURCES += $$RESOURCE_INIT_CPP
|
||||||
QMAKE_DISTCLEAN += $$RESOURCE_INIT_CPP
|
QMAKE_DISTCLEAN += $$RESOURCE_INIT_CPP
|
||||||
|
|
||||||
!build_pass {
|
isEmpty(BUILDS)|build_pass {
|
||||||
RESOURCE_INIT_CONT = \
|
RESOURCE_INIT_CONT = \
|
||||||
"// This file is autogenerated by qmake. It contains a function that" \
|
"// This file is autogenerated by qmake. It contains a function that" \
|
||||||
"// references all resources the plugin includes and the function is" \
|
"// references all resources the plugin includes and the function is" \
|
||||||
|
@ -553,12 +553,13 @@ void NmakeMakefileGenerator::writeImplicitRulesPart(QTextStream &t)
|
|||||||
QDirIterator dit(sourceDir, sourceFilesFilter, QDir::Files | QDir::NoDotAndDotDot);
|
QDirIterator dit(sourceDir, sourceFilesFilter, QDir::Files | QDir::NoDotAndDotDot);
|
||||||
while (dit.hasNext()) {
|
while (dit.hasNext()) {
|
||||||
dit.next();
|
dit.next();
|
||||||
QString &duplicate = fileNames[dit.fileName()];
|
const QFileInfo fi = dit.fileInfo();
|
||||||
|
QString &duplicate = fileNames[fi.completeBaseName()];
|
||||||
if (duplicate.isNull()) {
|
if (duplicate.isNull()) {
|
||||||
duplicate = dit.filePath();
|
duplicate = fi.filePath();
|
||||||
} else {
|
} else {
|
||||||
warn_msg(WarnLogic, "%s conflicts with %s", qPrintable(duplicate),
|
warn_msg(WarnLogic, "%s conflicts with %s", qPrintable(duplicate),
|
||||||
qPrintable(dit.filePath()));
|
qPrintable(fi.filePath()));
|
||||||
duplicatesFound = true;
|
duplicatesFound = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#if !QT_CONFIG(getentropy) && !defined(Q_OS_BSD4) && !defined(Q_OS_WIN)
|
#if !QT_CONFIG(getentropy) && (!defined(Q_OS_BSD4) || defined(__GLIBC__)) && !defined(Q_OS_WIN)
|
||||||
# include "qdeadlinetimer.h"
|
# include "qdeadlinetimer.h"
|
||||||
# include "qhashfunctions.h"
|
# include "qhashfunctions.h"
|
||||||
|
|
||||||
@ -259,7 +259,7 @@ static void fallback_fill(quint32 *, qsizetype) Q_DECL_NOTHROW
|
|||||||
// no fallback necessary, getentropy cannot fail under normal circumstances
|
// no fallback necessary, getentropy cannot fail under normal circumstances
|
||||||
Q_UNREACHABLE();
|
Q_UNREACHABLE();
|
||||||
}
|
}
|
||||||
#elif defined(Q_OS_BSD4)
|
#elif defined(Q_OS_BSD4) && !defined(__GLIBC__)
|
||||||
static void fallback_update_seed(unsigned) {}
|
static void fallback_update_seed(unsigned) {}
|
||||||
static void fallback_fill(quint32 *ptr, qsizetype left) Q_DECL_NOTHROW
|
static void fallback_fill(quint32 *ptr, qsizetype left) Q_DECL_NOTHROW
|
||||||
{
|
{
|
||||||
|
@ -214,7 +214,7 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class Q_AUTOTEST_EXPORT QFontCache : public QObject
|
class Q_GUI_EXPORT QFontCache : public QObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// note: these static functions work on a per-thread basis
|
// note: these static functions work on a per-thread basis
|
||||||
|
@ -866,7 +866,7 @@ static QPair<QLibrary*, QLibrary*> loadOpenSsl()
|
|||||||
// reason, we will search a few common paths (see findAllLibSsl() above) in hopes
|
// reason, we will search a few common paths (see findAllLibSsl() above) in hopes
|
||||||
// we find one that works.
|
// we find one that works.
|
||||||
//
|
//
|
||||||
// If that fails, for OpenSSL 1.0 we also try a fallback -- just look up
|
// If that fails, for OpenSSL 1.0 we also try some fallbacks -- look up
|
||||||
// libssl.so with a hardcoded soname. The reason is QTBUG-68156: the binary
|
// libssl.so with a hardcoded soname. The reason is QTBUG-68156: the binary
|
||||||
// builds of Qt happen (at the time of this writing) on RHEL machines,
|
// builds of Qt happen (at the time of this writing) on RHEL machines,
|
||||||
// which change SHLIB_VERSION_NUMBER to a non-portable string. When running
|
// which change SHLIB_VERSION_NUMBER to a non-portable string. When running
|
||||||
@ -899,14 +899,23 @@ static QPair<QLibrary*, QLibrary*> loadOpenSsl()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if !QT_CONFIG(opensslv11)
|
#if !QT_CONFIG(opensslv11)
|
||||||
// first-and-half attempt: for OpenSSL 1.0 try to load an hardcoded soname.
|
// first-and-half attempts: for OpenSSL 1.0 try to load some hardcoded sonames:
|
||||||
libssl->setFileNameAndVersion(QLatin1String("ssl"), QLatin1String("1.0.0"));
|
// - "1.0.0" is the official upstream one
|
||||||
libcrypto->setFileNameAndVersion(QLatin1String("crypto"), QLatin1String("1.0.0"));
|
// - "1.0.2" is found on some distributions (e.g. Debian) that patch OpenSSL
|
||||||
if (libcrypto->load() && libssl->load()) {
|
static const QLatin1String fallbackSonames[] = {
|
||||||
return pair;
|
QLatin1String("1.0.0"),
|
||||||
} else {
|
QLatin1String("1.0.2")
|
||||||
libssl->unload();
|
};
|
||||||
libcrypto->unload();
|
|
||||||
|
for (auto fallbackSoname : fallbackSonames) {
|
||||||
|
libssl->setFileNameAndVersion(QLatin1String("ssl"), fallbackSoname);
|
||||||
|
libcrypto->setFileNameAndVersion(QLatin1String("crypto"), fallbackSoname);
|
||||||
|
if (libcrypto->load() && libssl->load()) {
|
||||||
|
return pair;
|
||||||
|
} else {
|
||||||
|
libssl->unload();
|
||||||
|
libcrypto->unload();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -53,11 +53,13 @@
|
|||||||
#include "qcocoahelpers.h"
|
#include "qcocoahelpers.h"
|
||||||
|
|
||||||
#include <QtCore/qfileinfo.h>
|
#include <QtCore/qfileinfo.h>
|
||||||
|
#include <QtGui/private/qfont_p.h>
|
||||||
#include <QtGui/private/qguiapplication_p.h>
|
#include <QtGui/private/qguiapplication_p.h>
|
||||||
#include <QtGui/private/qcoregraphics_p.h>
|
#include <QtGui/private/qcoregraphics_p.h>
|
||||||
#include <QtGui/qpainter.h>
|
#include <QtGui/qpainter.h>
|
||||||
#include <QtGui/qtextformat.h>
|
#include <QtGui/qtextformat.h>
|
||||||
#include <QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h>
|
#include <QtFontDatabaseSupport/private/qcoretextfontdatabase_p.h>
|
||||||
|
#include <QtFontDatabaseSupport/private/qfontengine_coretext_p.h>
|
||||||
#include <QtThemeSupport/private/qabstractfileiconengine_p.h>
|
#include <QtThemeSupport/private/qabstractfileiconengine_p.h>
|
||||||
#include <qpa/qplatformdialoghelper.h>
|
#include <qpa/qplatformdialoghelper.h>
|
||||||
#include <qpa/qplatformintegration.h>
|
#include <qpa/qplatformintegration.h>
|
||||||
@ -162,6 +164,11 @@ void QCocoaTheme::handleSystemThemeChange()
|
|||||||
m_systemPalette = qt_mac_createSystemPalette();
|
m_systemPalette = qt_mac_createSystemPalette();
|
||||||
m_palettes = qt_mac_createRolePalettes();
|
m_palettes = qt_mac_createRolePalettes();
|
||||||
|
|
||||||
|
if (QCoreTextFontEngine::fontSmoothing() == QCoreTextFontEngine::FontSmoothing::Grayscale) {
|
||||||
|
// Re-populate glyph caches based on the new appearance's assumed text fill color
|
||||||
|
QFontCache::instance()->clear();
|
||||||
|
}
|
||||||
|
|
||||||
QWindowSystemInterface::handleThemeChange(nullptr);
|
QWindowSystemInterface::handleThemeChange(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ haiku {
|
|||||||
SUBDIRS += haiku
|
SUBDIRS += haiku
|
||||||
}
|
}
|
||||||
|
|
||||||
wasm: SUBDIRS = wasm
|
wasm: SUBDIRS += wasm
|
||||||
|
|
||||||
qtConfig(mirclient): SUBDIRS += mirclient
|
qtConfig(mirclient): SUBDIRS += mirclient
|
||||||
|
|
||||||
|
@ -382,12 +382,20 @@ bool QWindowsSystemTrayIcon::winEvent(const MSG &message, long *result)
|
|||||||
emit activated(DoubleClick); // release we must ignore it
|
emit activated(DoubleClick); // release we must ignore it
|
||||||
break;
|
break;
|
||||||
case WM_CONTEXTMENU: {
|
case WM_CONTEXTMENU: {
|
||||||
|
// QTBUG-67966: Coordinates may be out of any screen in PROCESS_DPI_UNAWARE mode
|
||||||
|
// since hi-res coordinates are delivered in this case (Windows issue).
|
||||||
|
// Default to primary screen with check to prevent a crash.
|
||||||
const QPoint globalPos = QPoint(GET_X_LPARAM(message.wParam), GET_Y_LPARAM(message.wParam));
|
const QPoint globalPos = QPoint(GET_X_LPARAM(message.wParam), GET_Y_LPARAM(message.wParam));
|
||||||
const QPlatformScreen *screen = QWindowsContext::instance()->screenManager().screenAtDp(globalPos);
|
const auto &screenManager = QWindowsContext::instance()->screenManager();
|
||||||
emit contextMenuRequested(globalPos, screen);
|
const QPlatformScreen *screen = screenManager.screenAtDp(globalPos);
|
||||||
emit activated(Context);
|
if (!screen)
|
||||||
if (m_menu)
|
screen = screenManager.screens().value(0);
|
||||||
m_menu->trackPopupMenu(message.hwnd, globalPos.x(), globalPos.y());
|
if (screen) {
|
||||||
|
emit contextMenuRequested(globalPos, screen);
|
||||||
|
emit activated(Context);
|
||||||
|
if (m_menu)
|
||||||
|
m_menu->trackPopupMenu(message.hwnd, globalPos.x(), globalPos.y());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case NIN_BALLOONUSERCLICK:
|
case NIN_BALLOONUSERCLICK:
|
||||||
|
@ -756,6 +756,7 @@ void QOpenGLWidgetPrivate::recreateFbo()
|
|||||||
|
|
||||||
fbo->bind();
|
fbo->bind();
|
||||||
context->functions()->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
context->functions()->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
||||||
|
flushPending = true; // Make sure the FBO is initialized before use
|
||||||
|
|
||||||
paintDevice->setSize(deviceSize);
|
paintDevice->setSize(deviceSize);
|
||||||
paintDevice->setDevicePixelRatio(q->devicePixelRatioF());
|
paintDevice->setDevicePixelRatio(q->devicePixelRatioF());
|
||||||
|
@ -725,7 +725,6 @@ void QFusionStyle::drawPrimitive(PrimitiveElement elem,
|
|||||||
|
|
||||||
// Draw Outline
|
// Draw Outline
|
||||||
painter->setPen( QPen(hasFocus ? highlightedOutline : outline));
|
painter->setPen( QPen(hasFocus ? highlightedOutline : outline));
|
||||||
painter->setBrush(option->palette.base());
|
|
||||||
painter->drawRoundedRect(r.adjusted(0, 0, -1, -1), 2, 2);
|
painter->drawRoundedRect(r.adjusted(0, 0, -1, -1), 2, 2);
|
||||||
|
|
||||||
if (hasFocus) {
|
if (hasFocus) {
|
||||||
|
@ -553,7 +553,7 @@ void QDateTimeEdit::setMaximumTime(const QTime &max)
|
|||||||
{
|
{
|
||||||
Q_D(QDateTimeEdit);
|
Q_D(QDateTimeEdit);
|
||||||
if (max.isValid()) {
|
if (max.isValid()) {
|
||||||
const QDateTime m(d->maximum.toDate(), max);
|
const QDateTime m(d->maximum.toDate(), max, d->spec);
|
||||||
setMaximumDateTime(m);
|
setMaximumDateTime(m);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user