From 9137691e745039f8ad9cdee2594a958e244ba341 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 5 Nov 2018 10:18:50 +0100 Subject: [PATCH 01/13] Windows QPA: Fix crash showing QSystemTrayIcon's context menu with PROCESS_DPI_UNAWARE The coordinates of the WM_CONTEXT message 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. Fixes: QTBUG-67966 Change-Id: I1950360520e93cbf3509611b3057635769f6543a Reviewed-by: Andre de la Rocha --- .../windows/qwindowssystemtrayicon.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/plugins/platforms/windows/qwindowssystemtrayicon.cpp b/src/plugins/platforms/windows/qwindowssystemtrayicon.cpp index 901d132ea5..3c27f2914d 100644 --- a/src/plugins/platforms/windows/qwindowssystemtrayicon.cpp +++ b/src/plugins/platforms/windows/qwindowssystemtrayicon.cpp @@ -382,12 +382,20 @@ bool QWindowsSystemTrayIcon::winEvent(const MSG &message, long *result) emit activated(DoubleClick); // release we must ignore it break; 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 QPlatformScreen *screen = QWindowsContext::instance()->screenManager().screenAtDp(globalPos); - emit contextMenuRequested(globalPos, screen); - emit activated(Context); - if (m_menu) - m_menu->trackPopupMenu(message.hwnd, globalPos.x(), globalPos.y()); + const auto &screenManager = QWindowsContext::instance()->screenManager(); + const QPlatformScreen *screen = screenManager.screenAtDp(globalPos); + if (!screen) + screen = screenManager.screens().value(0); + if (screen) { + emit contextMenuRequested(globalPos, screen); + emit activated(Context); + if (m_menu) + m_menu->trackPopupMenu(message.hwnd, globalPos.x(), globalPos.y()); + } } break; case NIN_BALLOONUSERCLICK: From c05080102fd160314d9ed14c47f9e303e1ac3ee7 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Wed, 21 Nov 2018 13:46:28 +0100 Subject: [PATCH 02/13] tst_QNetworkReply: Blacklist getFromHttp:success-external Task-number: QTBUG-71953 Change-Id: I59566d1994dd80e7fef78f3b22ae34db9d2ad2cc Reviewed-by: Timur Pocheptsov (cherry picked from commit 46076f73337d6b0fea9a006dab2af8864571ae2c) Reviewed-by: Liang Qi --- tests/auto/network/access/qnetworkreply/BLACKLIST | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/auto/network/access/qnetworkreply/BLACKLIST b/tests/auto/network/access/qnetworkreply/BLACKLIST index fab8224431..4d29a830e9 100644 --- a/tests/auto/network/access/qnetworkreply/BLACKLIST +++ b/tests/auto/network/access/qnetworkreply/BLACKLIST @@ -8,6 +8,9 @@ windows * [getErrors:ftp-host] linux +# QTBUG-71953 +[getFromHttp:success-external] +* [getFromHttpIntoBuffer] windows [getFromHttpIntoBuffer2] From 08de243eaa007597c2bfbc97d3d14e2f821ac4be Mon Sep 17 00:00:00 2001 From: Antti Kokko Date: Fri, 16 Nov 2018 09:22:24 +0200 Subject: [PATCH 03/13] Add changes file for Qt 5.11.3 + 059b10f295d8d04c4144984daf1464115bcb69c9 Doc: Check before including the \snippet from a .pro file + 7f0cc35d9c33802742aaa640472f3d9d2390ffa4 Examples: Fix minor bug in Tree Model Completer Example + 244c7bd193ab5e15e28108937cae4acf3d574350 Avoid conversion over RGBA64 for RGB32 LCD text blending + a381ba4220097bd7a982a86f32c7e65da5591c8c Document version number of pixman + ff2a71e310b18a43a41daf2d197f5715f7c26d29 Doc: Move the literal code blocks to a separate file + 20ac20bcea8954a980d1acdbc4e9fa55011fe088 Windows QPA: Fix missing accessibility info with WebEngineView + 689a1e186b76853144802d9c29f0346856bd5fde QString: Fix snippet explaining "non-spaced numbered place markers" + 85f127cb045200fa5fa3608b859e59bb4a9c27b2 Revise an incorrect QVulkanWindow doc note + 3bac18da8ef9f5750207ddf47192b5db3137c4ac Document SLJIT part of pcre2 + 621ab8ab59901cc3f9bd98be709929c9eac997a8 bmp image handler: check for out of range image size + e04b85b026f59120e69a4acb3f3e4469abccc325 Doc: improve Mandelbrot example + bff307ab93bd6963f84e08e8050efa6a838dba6e Fix XCB on endian mismatched client and server with SHM off + 45c1473847ad65c4d43f9a605a86439867442883 Detect when we are at the sentence boundary + 49efea26a5fae8c2275999c36c7c8d24cf4125de sqlite: Fix QSqlError handling when opening/closing database + 1511bfef52b0731e1fdeafd685bf4954024da0e9 Disable RGB64 backend for ARGB32 when it will be very slow + cb5c24fa26142edaff8fd2c9787dbe45c222b4ff Fix integer overflow in very long sections in ELF objects + 12c357bebb19407ee8e034f3679b6c8b77ece9c1 Document IAccessible2 version + 8aa9bb6d3fcb45579f3dc45c5bdef6d33a9f9d24 Clarify docs regarding the states of a QFutureWatcher with no future set + 4fc4f7b0ce0e6ee186a7d7fe9b5dd20e94efe432 Export qt_open64 from QtCore + 4b7ff8e98c0208273a25d84e1f0322cad5bce2bf Protect HSTS code for no-feature-settings build + 6948bf20a73d09e867fd7c2d89052237d94b7d6a QSslContext: Use 0 instead of TLS_MAX_VERSION + e226b0f94afc85f79d82fc54421487bf2a529ba5 Modernize the "textdate" feature + b26cd68bf61346273a5a03bbc1e60a7cdffa4f0d Modernize the "datestring" feature + 02663718a9da95968a7879b792508b8c0ae699b2 QHeaderView: Don't unhide hidden sections on layoutChanged() + f99e956d65058e22780d99832987edad16f6d077 Add QT_REQUIRE_CONFIG(ssl) to pre-shared key authenticator + 5e64957ee4162ecf4456306a530a68761c2b127f Fix QCompleter popups preventing the application from exiting + 555a6b5d5d2dd91a0dcf9e3d5fbadd1b31bf80f3 Modernize the "filesystemwatcher" feature + 857a0d4c51095e2f90274ab8246bb01e58c97dfc Fix the /J option for MSVC project generation + 3ed8dc37884bac67414c0840e27b5094a69cfdcd Android: fix log output pattern + ef4ba0285f9c5dd5ee2dca1e0cefee45eba3477c SSL: Don't write to closed socket or write to deallocated buffer + 94884246d445fb3e702ac8c4d4bb432768e61b61 QCommandLineParser: Ensure that an option text ends with a newline + caa598c843eb27fd0c645e62723fd2d4e3e12f60 Fix QUrl::matches for when removing authority parts (other than host) + b2b32d3147eb213c835072994c93d2af3e7d285a fix HTML subset documentation is not very readable on smaller screens + c958fb8b488ea6e86365298796d5710ec4deccc9 zlib: Fix spelling of license + 5a295a1009dad3a020be10331fa8e8c6163a9106 Scale seconds by a thousand to get milliseconds + ced34cb3d5805f1fbaf3b275714a1a5f3585900c QDateTimeParser: avoid using an invalid hour by default + d8817ddde65d8fd9c5a2785a31a01db43d050114 Use update() instead of repaint() when displaying a new message + 18ec0a8b0991855f4576c2993832f9da41d97766 Windows QPA: Fix WM_NCHITTEST not being sent to QAbstractNativeEventFilter + 04aeffbe8f6d452529671205fa2ded43103e1a46 Doc: Describe behavior of QSslConfiguration::caCertificates() on iOS + 92f42caff1d1cb02dc218adc8589c03d0b30ef80 Fix ICE on QNX 6.6 + 7146c9075c85cb46cb38b57ded3e12dfa6cbef66 Fix DejaVu fonts URL + 836a2fb8872217d2a04a209b89f2ac2ff86a4b99 [macOS] Fix position of sheets when using unifiedTitleAndToolBarOnMac + ba0ff45109a0eb051a42d6d8392d1f1b7a1e9345 Update the DNS public suffix list from publicsuffix.org + 4dc251879c129710298ec9f9360490daed6a6a59 Ssl: Fix contrived crash when calling resume + 091a386eaf91ad8932332a8aefc2df793de59f6c Use native visual ID when creating GBM surfaces for KMS + dc5f9d0c3101f95185d3c562d001e0af18f46a0b Only use a translucent background if there is support for alpha + 0d7c049e4407bf0db8d1eca1ea248c6d6b739c8c Update bundled libpng to version 1.6.35 + 0509383cf2852f2aebd1efd75413835747c8f341 Bump copyright year in executable metadata + c593492d1678a2ec08f1bfffcb572459b3bc6c00 Modernize the "animation" feature + 4e7b58629a0a431fbd5c0ba287c3958efd05da13 Modernize the "big_codecs" feature + 9c8ca26a4829d5ce810c9653fec3dfe48717f0b1 Modernize the "codecs" feature + 3eebadc1734463afa469dcd08eab8c5d2557dec6 Modernize the "mimetype" feature + b7887f9b4faad2227691a2af589e9d7680d6ae08 Linux: Remove our use of syscall() for statx(2) and renameat2(2) + fc4b0769a5d65960eea959730d5cd20d3496d40b Fix pdf printing in static builds + 1cd2955173e2248b92f44c9d52d81447ff87906c Fix enum passed to QFontDatabase::findFont + 2624676b5731a9d93a1e46429d2c597f1e4bae38 qmake: Remove the extra space before -MT + 7f60940fbedef17984e283da41eae94f29fef428 Re-disable statx() on Android + 6599c1f75832cc9286a3bf88c6b179d006dbb96e QPicture: fix crash for malformed picture + 44eeeb8e816fbdcd77ad734cfe7a7ec28da1c5ed Upgrade PCRE2 to 10.32 + 948f8ce2ecb2d6d2713279311d6090268321f0fb QWinEventNotifier: fix crash on application shutdown + 2708c6c11d685ab25c12d558961d924c9a4533d2 OpenSSL: force the "1.0.0" soname when loading OpenSSL 1.0 + 0cb44e2cfb11033cdb7e3b73a25f1ec394b08d6e Fix stylesheet example for QLineEdit:read-only code example + 72bedd49bfb02ba7c7abf2a1a4c6cd165ebcd447 [cocoa] Disable offline renderers for dual AMD FirePro GPU + 509d566ec0f257f7f1a723096b57a718d43d5002 Don't block mouse events if the window is a Tooltip type + 38afa46c47f4401cd5fe8ce6eb93978d5287cfbc macOS: Only detect changes to the SDK version within the same developer dir + d2e0e416d4444ccf3c208d6770e32ff0fb04b543 Fix leaking QTabletEventPrivate instance + d4e937a6280f34bc1cce8c8cea3806a741312fbc xcb: Don't get initial screen rotation + 3b8075de3b3c842311c157476a85d2cf9ddff403 Fix deleting of QSharedPointer internals in case QPointer loses the race + 1b9af84c1bb66770f607e157991375f7cb7ae0fb Don't create an offscreen surface when not on the GUI thread + c9d18d4a9c9d1243a267316e2a702f9ba69de2fd eglfs_kms: initialize m_deviceListener + 67c66c4ea4fbc11ee5547095117ef8930b3ab950 windows: Give up on SwitchableComposition + 033cc3403a8238d1b6d56c42e9e9be4fba1069dc mkspecs: use cross compile tools with LTCG + 9f2216667a96c2de94b28e4fd2891b6d3b938cb9 Fix memory copy in QGIFFormat::disposePrevious() + b5d249f9538bf3dc44f11879c2244deb5a37bf97 Update the floppy disk icon (save) to be physically correct + 825f98815683faea06144ab0262129b0367798ee Modernize the "textcodec" feature + 993351183893c8c5b1e55b8d819b190cc11ae008 Fix typo in define. s/GL_FRAMEBUFFER_SRB/GL_FRAMEBUFFER_SRGB + 38b87cc4bb0d4dfb47d907d39906104fea60a187 Doc: Clarify what samples() returns if not explicitly set + bdebc90c2826866e4434a6429aa6f822ee3cb8f6 Bump version + dec7961709c90f6977d2447f7fa6c6625af41cb2 QSyntaxHighlighter: Delay all highlights until first rehighlight + 9137691e745039f8ad9cdee2594a958e244ba341 Windows QPA: Fix crash showing QSystemTrayIcon's context menu with PROCESS_DPI_UNAWARE Change-Id: Id50872011aff4f604d7444d7aa4799c1c61b45f6 Reviewed-by: Thiago Macieira --- dist/changes-5.11.3 | 94 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 dist/changes-5.11.3 diff --git a/dist/changes-5.11.3 b/dist/changes-5.11.3 new file mode 100644 index 0000000000..5d13335309 --- /dev/null +++ b/dist/changes-5.11.3 @@ -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. From 7f6497e623fd66e0dc1ecab89ef16533154a6472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 15 Nov 2018 22:26:55 +0100 Subject: [PATCH 04/13] Ensure QOpenGLWidget FBO is always initialized QOpenGLWidget uses an FBO internally, that is glCleared whenever recreated. But for the clear to be visible across shared contexts we must also issue a glFlush. QOpenGLWidget defers this flush until the compositing step, in QOpenGLWidgetPrivate::beginCompose(), based on a flushPending variable. This variable is set either after invoking the user's paintGL() function, or when opening a QPainter on the QOpenGLWidget, via QOpenGLWidgetPaintDevice::ensureActiveTarget(). Unfortunately, if QOpenGLWidget::paintEvent() is overridden or intercepted (meaning we will not end up calling paintGL()), but the overridden paint event does not open a QPainter, we end up never setting flushPending to true, and end up composing an uninitialized FBO. This can lead to rendering issues, or even kernel panics with some unfortunate GL drivers. The fix is to ensure the glClear is always flushed before composing, by forcing a pending flush whenever the FBO is recreated. Fixes: QTBUG-70921 Change-Id: I72b596c09dcf54bd0f37668062daaad2d6f7f4bd Reviewed-by: Laszlo Agocs --- src/widgets/kernel/qopenglwidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/widgets/kernel/qopenglwidget.cpp b/src/widgets/kernel/qopenglwidget.cpp index c96b6812c4..53dc88bd2c 100644 --- a/src/widgets/kernel/qopenglwidget.cpp +++ b/src/widgets/kernel/qopenglwidget.cpp @@ -756,6 +756,7 @@ void QOpenGLWidgetPrivate::recreateFbo() fbo->bind(); 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->setDevicePixelRatio(q->devicePixelRatioF()); From 2a494875b8f3d50046d35fb21988c288fcfa1dc7 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Wed, 28 Nov 2018 19:20:52 +0100 Subject: [PATCH 05/13] OpenSSL: also try the "1.0.2" soname MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Turns out that also Debian patches OpenSSL 1.0, changing its soname to "1.0.2". Therefore, try also to load that one. Amends 2708c6c11d685ab25c12d558961d924c9a4533d2. Task-number: QTBUG-68156 Change-Id: I37cc060e90422779a6c29a324ab900f0fb99cfa7 Reviewed-by: Lisandro Damián Nicanor Pérez Meyer Reviewed-by: Timur Pocheptsov --- .../ssl/qsslsocket_openssl_symbols.cpp | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp index 59c93677dd..2f8095cd81 100644 --- a/src/network/ssl/qsslsocket_openssl_symbols.cpp +++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp @@ -771,7 +771,7 @@ static QPair loadOpenSsl() // reason, we will search a few common paths (see findAllLibSsl() above) in hopes // 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 // 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 @@ -804,14 +804,23 @@ static QPair loadOpenSsl() } #if !QT_CONFIG(opensslv11) - // first-and-half attempt: for OpenSSL 1.0 try to load an hardcoded soname. - libssl->setFileNameAndVersion(QLatin1String("ssl"), QLatin1String("1.0.0")); - libcrypto->setFileNameAndVersion(QLatin1String("crypto"), QLatin1String("1.0.0")); - if (libcrypto->load() && libssl->load()) { - return pair; - } else { - libssl->unload(); - libcrypto->unload(); + // first-and-half attempts: for OpenSSL 1.0 try to load some hardcoded sonames: + // - "1.0.0" is the official upstream one + // - "1.0.2" is found on some distributions (e.g. Debian) that patch OpenSSL + static const QLatin1String fallbackSonames[] = { + QLatin1String("1.0.0"), + QLatin1String("1.0.2") + }; + + 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 From 8d7542acad18a2f1be701242d655015263f3147a Mon Sep 17 00:00:00 2001 From: Dmitry Shachnev Date: Wed, 5 Dec 2018 16:32:12 +0300 Subject: [PATCH 06/13] Do not use arc4random_buf() on GNU/kFreeBSD It is not available in the GNU C Library. Change-Id: I36dc92fca283c126669885b75406c8e57f563ce3 Reviewed-by: Thiago Macieira --- src/corelib/global/qrandom.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp index 03534cf453..6195c324e7 100644 --- a/src/corelib/global/qrandom.cpp +++ b/src/corelib/global/qrandom.cpp @@ -48,7 +48,7 @@ #include -#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 "qhashfunctions.h" @@ -259,7 +259,7 @@ static void fallback_fill(quint32 *, qsizetype) Q_DECL_NOTHROW // no fallback necessary, getentropy cannot fail under normal circumstances Q_UNREACHABLE(); } -#elif defined(Q_OS_BSD4) +#elif defined(Q_OS_BSD4) && !defined(__GLIBC__) static void fallback_update_seed(unsigned) {} static void fallback_fill(quint32 *ptr, qsizetype left) Q_DECL_NOTHROW { From 161c5693143783e0364d32c587497669747efc45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 6 Dec 2018 14:46:26 +0100 Subject: [PATCH 07/13] macOS: Reset font glyph caches when application theme changes Our glyph caches on 10.14 are based on the application appearance, so when the application goes from dark to light or light to dark, we need to reset and re-populate the glyph-caches to account for the new appearance. Change-Id: If019d8cfa33ffb2b14747444b2ff74b288992f55 Fixes: QTBUG-71018 Reviewed-by: Timur Pocheptsov --- src/gui/text/qfont_p.h | 2 +- src/plugins/platforms/cocoa/qcocoatheme.mm | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/gui/text/qfont_p.h b/src/gui/text/qfont_p.h index 350ba7ce3c..c5847f532b 100644 --- a/src/gui/text/qfont_p.h +++ b/src/gui/text/qfont_p.h @@ -210,7 +210,7 @@ private: }; -class Q_AUTOTEST_EXPORT QFontCache : public QObject +class Q_GUI_EXPORT QFontCache : public QObject { public: // note: these static functions work on a per-thread basis diff --git a/src/plugins/platforms/cocoa/qcocoatheme.mm b/src/plugins/platforms/cocoa/qcocoatheme.mm index a2229159b5..240deeddbd 100644 --- a/src/plugins/platforms/cocoa/qcocoatheme.mm +++ b/src/plugins/platforms/cocoa/qcocoatheme.mm @@ -53,11 +53,13 @@ #include "qcocoahelpers.h" #include +#include #include #include #include #include #include +#include #include #include #include @@ -162,6 +164,11 @@ void QCocoaTheme::handleSystemThemeChange() m_systemPalette = qt_mac_createSystemPalette(); 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); } From 45c358b0da4e8f629d9c70a32fe06a3fb1cb6ca8 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Wed, 21 Nov 2018 17:08:49 +1000 Subject: [PATCH 08/13] threads: disable threads examples for nothread builds Change-Id: I2c253de973f5399c5ed68194b969ccebe457c689 Reviewed-by: Eskil Abrahamsen Blomfeldt --- examples/corelib/corelib.pro | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/corelib/corelib.pro b/examples/corelib/corelib.pro index 014e8af608..8caf2c16df 100644 --- a/examples/corelib/corelib.pro +++ b/examples/corelib/corelib.pro @@ -5,5 +5,6 @@ SUBDIRS = \ ipc \ mimetypes \ serialization \ - threads \ tools + +qtConfig(thread): SUBDIRS += threads From d391d4db49bd8a7da8516af9c8ff8083a927bf79 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Wed, 5 Dec 2018 10:28:17 +0100 Subject: [PATCH 09/13] Fusion: Don't draw the background of the lineedit when drawing the frame MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since only the frame is being drawn here, it should only draw the outline. Otherwise it will override any background drawing done via a stylesheet. Change-Id: I408fc44743747ad369c700b3d52935bfc8826f11 Fixes: QTBUG-71950 Reviewed-by: Friedemann Kleint Reviewed-by: Tor Arne Vestbø --- src/widgets/styles/qfusionstyle.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp index df151067df..c565932889 100644 --- a/src/widgets/styles/qfusionstyle.cpp +++ b/src/widgets/styles/qfusionstyle.cpp @@ -725,7 +725,6 @@ void QFusionStyle::drawPrimitive(PrimitiveElement elem, // Draw Outline painter->setPen( QPen(hasFocus ? highlightedOutline : outline)); - painter->setBrush(option->palette.base()); painter->drawRoundedRect(r.adjusted(0, 0, -1, -1), 2, 2); if (hasFocus) { From ed90c306f2033eec4a6ac3aa356b2ea41e601160 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Tue, 4 Dec 2018 10:36:44 +0100 Subject: [PATCH 10/13] Fix addition of the wasm platform plugin Add the plugin; do not replace the whole SUBDIRS value. Fixes: QTBUG-70375 Change-Id: Id40a69f54dfde5eb88894323c7e1146b6cad5a75 Reviewed-by: Friedemann Kleint --- src/plugins/platforms/platforms.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/platforms/platforms.pro b/src/plugins/platforms/platforms.pro index 5bf2b77421..db2a31d1a5 100644 --- a/src/plugins/platforms/platforms.pro +++ b/src/plugins/platforms/platforms.pro @@ -46,7 +46,7 @@ haiku { SUBDIRS += haiku } -wasm: SUBDIRS = wasm +wasm: SUBDIRS += wasm qtConfig(mirclient): SUBDIRS += mirclient From 6a221f3d05b6d0e902d86d75428364747268c6c9 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 7 Dec 2018 10:36:08 +0100 Subject: [PATCH 11/13] Fix qmake's detection for conflicting source files for nmake Consider the following source tree: foo/narf.cpp bar/narf.c bar/gnampf.cpp The .pro file has SOURCES += foo/narf.cpp bar/gnampf.cpp The file bar/narf.c is not supposed to be built for whatever reason. QMake's nmake Makefile generator generates inference rules of the form {.\foo}.cpp{debug\}.obj:: ... for every source subdirectory and every source file extension. Thus, we have {.\foo}.cpp{debug\}.obj:: {.\bar}.cpp{debug\}.obj:: {.\bar}.c{debug\}.obj:: Depending on the exact execution order of the inference rules (which depends on the names of the files) the latter rule might get picked, and we're erronously compiling bar/narf.c even though it's not referenced in the .pro file. Conclusion: QMake's detection of conflicting source files must consider the base names of source files, and not the exact file names. Fixes: QTBUG-72059 Change-Id: I50c2725ae2a7421053369a10680230f571af00ea Reviewed-by: Oliver Wolff Reviewed-by: Oswald Buddenhagen --- qmake/generators/win32/msvc_nmake.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp index 306ae57871..780f6bd4d8 100644 --- a/qmake/generators/win32/msvc_nmake.cpp +++ b/qmake/generators/win32/msvc_nmake.cpp @@ -553,12 +553,13 @@ void NmakeMakefileGenerator::writeImplicitRulesPart(QTextStream &t) QDirIterator dit(sourceDir, sourceFilesFilter, QDir::Files | QDir::NoDotAndDotDot); while (dit.hasNext()) { dit.next(); - QString &duplicate = fileNames[dit.fileName()]; + const QFileInfo fi = dit.fileInfo(); + QString &duplicate = fileNames[fi.completeBaseName()]; if (duplicate.isNull()) { - duplicate = dit.filePath(); + duplicate = fi.filePath(); } else { warn_msg(WarnLogic, "%s conflicts with %s", qPrintable(duplicate), - qPrintable(dit.filePath())); + qPrintable(fi.filePath())); duplicatesFound = true; } } From 826b09f0c507fe5321a8534054a4f0b7bdd2699b Mon Sep 17 00:00:00 2001 From: Richard Moe Gustavsen Date: Tue, 4 Dec 2018 12:00:37 +0100 Subject: [PATCH 12/13] Fix build of static plugins with resources This patch reverts 388c4ef9f78c8e. The reason is that it generates a symbol (resource_init_function) based on the name of the pro-file. But if different plugins are built from a pro-file with the same name, you end up linking in many symbols with the same name as well. Which one that ends up being used at runtime will typically depend on the linking order of the plugins. This problem will happen if you build an app for iOS that uses both controls 1 and controls 2. In that case, both QML plugins are built from a "controls.pro" file. At runtime, only one of the plugins will be imported correctly. This patch therefore reverts 388c4ef9f78c8e, but at the same time, to not re-introduce the problem it fixed, we instead genereate both a debug and release version of the plugin_resources.cpp file. That way we can still depend on the TARGET variable for generating both the resource_init_function symbol and the cpp file. Fixes: QTBUG-62647 Fixes: QTBUG-71386 Fixes: QTBUG-72108 Change-Id: I3d8c53132458b30ed9f47a259f1f8e4fa4d44130 Reviewed-by: Oswald Buddenhagen --- mkspecs/features/resources.prf | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/mkspecs/features/resources.prf b/mkspecs/features/resources.prf index a25846bd77..48e9f83885 100644 --- a/mkspecs/features/resources.prf +++ b/mkspecs/features/resources.prf @@ -73,17 +73,14 @@ for(resource, RESOURCES) { } !isEmpty(RESOURCES):contains(TEMPLATE, .*lib):plugin:static { - pluginName = $$lower($$replace(_PRO_FILE_, .*/([^/.]+)\\.[^/.]+, \\1)) - - resource_init_function = $${pluginName}_plugin_resource_init + resource_init_function = $$lower($$basename(TARGET))_plugin_resource_init DEFINES += "QT_PLUGIN_RESOURCE_INIT_FUNCTION=$$resource_init_function" - - RESOURCE_INIT_CPP = $$OUT_PWD/$${pluginName}_plugin_resources.cpp + RESOURCE_INIT_CPP = $$OUT_PWD/$$lower($$basename(TARGET))_plugin_resources.cpp GENERATED_SOURCES += $$RESOURCE_INIT_CPP QMAKE_DISTCLEAN += $$RESOURCE_INIT_CPP - !build_pass { + isEmpty(BUILDS)|build_pass { RESOURCE_INIT_CONT = \ "// This file is autogenerated by qmake. It contains a function that" \ "// references all resources the plugin includes and the function is" \ From d43ac840e5d5a0a2df9e8adce276c956c98be6aa Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Tue, 4 Dec 2018 18:42:54 +0100 Subject: [PATCH 13/13] Specify the date-time spec when setting max time QDateTimeEdit::setMaximumTime() constructed a QDateTime from the given time and its current max date without propagating its existing spec; it thus got a local time. All other QDateTimeEdit methods setting bounds do propagate the spec. So bring setMaximumTime() in line with the others. Fixes: QTBUG-71311 Change-Id: Ic97d22185f76bed46bc8d2884b131942874d9a0a Reviewed-by: Anton Kudryavtsev Reviewed-by: Konstantin Shegunov Reviewed-by: Thiago Macieira --- src/widgets/widgets/qdatetimeedit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp index 68bfd175ff..c66400f423 100644 --- a/src/widgets/widgets/qdatetimeedit.cpp +++ b/src/widgets/widgets/qdatetimeedit.cpp @@ -553,7 +553,7 @@ void QDateTimeEdit::setMaximumTime(const QTime &max) { Q_D(QDateTimeEdit); if (max.isValid()) { - const QDateTime m(d->maximum.toDate(), max); + const QDateTime m(d->maximum.toDate(), max, d->spec); setMaximumDateTime(m); } }