[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [krita] 3rdparty/ext_qt: Revert "Update Qt to 5.11 on Windows and build with ssl"
From:       Boudewijn Rempt <null () kde ! org>
Date:       2018-09-24 7:12:46
Message-ID: E1g4L30-0008K3-52 () code ! kde ! org
[Download RAW message or body]

Git commit 0bddab73aa2f33f7c3f9ffc7dafa9b39ff70b3fc by Boudewijn Rempt.
Committed on 24/09/2018 at 07:12.
Pushed by rempt into branch 'master'.

Revert "Update Qt to 5.11 on Windows and build with ssl"

This reverts commit 9a1849eb160627faa2e4f1da9a433d257ec8773a.

M  +9    -9    3rdparty/ext_qt/0001-Don-t-request-the-MIME-image-every-time-Windows-asks.patch
 D  +0    -25   3rdparty/ext_qt/0001-adapted-to-changed-C-API.patch
M  +7    -7    3rdparty/ext_qt/0002-Hack-always-return-we-support-DIBV5.patch
M  +15   -15   3rdparty/ext_qt/0003-Hack-for-fullscreen-workaround.patch
M  +28   -10   3rdparty/ext_qt/CMakeLists.txt
A  +111  -0    3rdparty/ext_qt/QTBUG-57299.diff
M  +6    -1466 3rdparty/ext_qt/disable-wintab.diff
C  +9    -23   3rdparty/ext_qt/gerrit-189539-ANGLE-mingw-fix.patch [from: \
3rdparty/ext_qt/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch - 086% \
similarity] M  +47   -156  \
3rdparty/ext_qt/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch A  +11   -0    \
3rdparty/ext_qt/mac-default.patch A  +59   -0    \
3rdparty/ext_qt/mac_standardpaths_qtbug-61159.diff M  +18   -25   \
3rdparty/ext_qt/macdeploy-qt.diff M  +1    -13   \
3rdparty/ext_qt/qopengldebug-gles.patch A  +20   -0    \
3rdparty/ext_qt/qt-no-motion-compression.diff M  +6    -25   \
3rdparty/ext_qt/qtgui-private-headers.diff

https://commits.kde.org/krita/0bddab73aa2f33f7c3f9ffc7dafa9b39ff70b3fc

diff --git a/3rdparty/ext_qt/0001-Don-t-request-the-MIME-image-every-time-Windows-asks.patch \
b/3rdparty/ext_qt/0001-Don-t-request-the-MIME-image-every-time-Windows-asks.patch \
                index 3087b975894..b85a007d330 100644
--- a/3rdparty/ext_qt/0001-Don-t-request-the-MIME-image-every-time-Windows-asks.patch
+++ b/3rdparty/ext_qt/0001-Don-t-request-the-MIME-image-every-time-Windows-asks.patch
@@ -1,19 +1,19 @@
-From 715db09b9ec282d149fffc41b16eef68c786c0cb Mon Sep 17 00:00:00 2001
-From: Boudewijn Rempt <boud@valdyas.org>
-Date: Mon, 23 Jul 2018 11:46:49 +0200
-Subject: [PATCH 3/8] Subject: [PATCH 1/2] Don't request the MIME image every
- time Windows asks for the list of supported types
+From 674cfce97c4972176d2bcb55d7013c0ac2190029 Mon Sep 17 00:00:00 2001
+From: Dmitry Kazakov <dimula73@gmail.com>
+Date: Tue, 21 Jun 2016 14:50:07 +0300
+Subject: [PATCH 1/2] Don't request the MIME image every time Windows asks for
+ the list of supported types
 
-Change-Id: I05516d83dc4e0f192bc94f92cefc722f25dae4d
+Change-Id: I05516d83dc4e0f192bc94f92cefc722f25dae4d4
 ---
  qtbase/src/plugins/platforms/windows/qwindowsmime.cpp | 9 ++++++---
  1 file changed, 6 insertions(+), 3 deletions(-)
 
 diff --git a/qtbase/src/plugins/platforms/windows/qwindowsmime.cpp \
                b/qtbase/src/plugins/platforms/windows/qwindowsmime.cpp
-index 0439797a7..f63376bdf 100644
+index a8264b5..90d646b 100644
 --- a/qtbase/src/plugins/platforms/windows/qwindowsmime.cpp
 +++ b/qtbase/src/plugins/platforms/windows/qwindowsmime.cpp
-@@ -1084,12 +1084,15 @@ bool QWindowsMimeImage::canConvertToMime(const QString \
&mimeType, IDataObject *p +@@ -1081,12 +1081,15 @@ bool \
QWindowsMimeImage::canConvertToMime(const QString &mimeType, IDataObject *p  bool \
QWindowsMimeImage::canConvertFromMime(const FORMATETC &formatetc, const QMimeData \
*mimeData) const  {
      int cf = getCf(formatetc);
@@ -33,5 +33,5 @@ index 0439797a7..f63376bdf 100644
  
  bool QWindowsMimeImage::convertFromMime(const FORMATETC &formatetc, const QMimeData \
                *mimeData, STGMEDIUM * pmedium) const
 -- 
-2.17.1
+2.6.4
 
diff --git a/3rdparty/ext_qt/0001-adapted-to-changed-C-API.patch \
b/3rdparty/ext_qt/0001-adapted-to-changed-C-API.patch deleted file mode 100644
index 1aec81ce401..00000000000
--- a/3rdparty/ext_qt/0001-adapted-to-changed-C-API.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 7edf7f22415082303eb6df2c0502152e40cc5135 Mon Sep 17 00:00:00 2001
-From: Dirk Farin <farin@struktur.de>
-Date: Fri, 25 May 2018 15:59:52 +0200
-Subject: [PATCH 1/3] adapted to changed C++ API
-
----
- plugins/impex/heif/HeifExport.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/plugins/impex/heif/HeifExport.cpp b/plugins/impex/heif/HeifExport.cpp
-index 3c9fae1736..2f4629fc95 100644
---- a/plugins/impex/heif/HeifExport.cpp
-+++ b/plugins/impex/heif/HeifExport.cpp
-@@ -93,7 +93,7 @@ public:
-     {
-     }
- 
--    heif_error write(heif::Context&, const void* data, size_t size) override {
-+    heif_error write(const void* data, size_t size) override {
-         qint64 n = m_io->write((const char*)data,size);
-         if (n != (qint64)size) {
-             QString error = m_io->errorString();
--- 
-2.14.1
-
diff --git a/3rdparty/ext_qt/0002-Hack-always-return-we-support-DIBV5.patch \
b/3rdparty/ext_qt/0002-Hack-always-return-we-support-DIBV5.patch index \
                8ee9e625f6d..77e57028bd6 100644
--- a/3rdparty/ext_qt/0002-Hack-always-return-we-support-DIBV5.patch
+++ b/3rdparty/ext_qt/0002-Hack-always-return-we-support-DIBV5.patch
@@ -1,7 +1,7 @@
-From 2101065bc63a4809cf62ce83b318d6fa16cbb6a2 Mon Sep 17 00:00:00 2001
-From: Boudewijn Rempt <boud@valdyas.org>
-Date: Mon, 23 Jul 2018 11:48:03 +0200
-Subject: [PATCH 4/8] Hack: always return we support DIBV5
+From 5e5026beb420018266d3d00fdb530bb714a841a6 Mon Sep 17 00:00:00 2001
+From: Dmitry Kazakov <dimula73@gmail.com>
+Date: Tue, 21 Jun 2016 14:50:47 +0300
+Subject: [PATCH 2/2] Hack: always return we support DIBV5
 
 Asking for the entire image may be too expensive
 
@@ -11,10 +11,10 @@ Change-Id: I44c38fad73f1bb5859eb58b941054eeb6c3c6b66
  1 file changed, 1 insertion(+), 3 deletions(-)
 
 diff --git a/qtbase/src/plugins/platforms/windows/qwindowsmime.cpp \
                b/qtbase/src/plugins/platforms/windows/qwindowsmime.cpp
-index f63376bdf..3b5c900b6 100644
+index 90d646b..ef97db7 100644
 --- a/qtbase/src/plugins/platforms/windows/qwindowsmime.cpp
 +++ b/qtbase/src/plugins/platforms/windows/qwindowsmime.cpp
-@@ -1055,9 +1055,7 @@ QVector<FORMATETC> QWindowsMimeImage::formatsForMime(const \
QString &mimeType, co +@@ -1052,9 +1052,7 @@ QVector<FORMATETC> \
QWindowsMimeImage::formatsForMime(const QString &mimeType, co  QVector<FORMATETC> \
                formatetcs;
      if (mimeData->hasImage() && mimeType == \
                QLatin1String("application/x-qt-image")) {
          //add DIBV5 if image has alpha channel. Do not add CF_PNG here as it will \
confuse MS Office (QTBUG47656). @@ -26,5 +26,5 @@ index f63376bdf..3b5c900b6 100644
      }
      if (!formatetcs.isEmpty())
 -- 
-2.17.1
+2.6.4
 
diff --git a/3rdparty/ext_qt/0003-Hack-for-fullscreen-workaround.patch \
b/3rdparty/ext_qt/0003-Hack-for-fullscreen-workaround.patch index \
                88e31714034..d7c8bfb7aed 100644
--- a/3rdparty/ext_qt/0003-Hack-for-fullscreen-workaround.patch
+++ b/3rdparty/ext_qt/0003-Hack-for-fullscreen-workaround.patch
@@ -1,7 +1,7 @@
-From b7fe5771ed409dfa74b0ea1ace1d98e1562f134c Mon Sep 17 00:00:00 2001
-From: Boudewijn Rempt <boud@valdyas.org>
-Date: Mon, 23 Jul 2018 11:48:49 +0200
-Subject: [PATCH 5/8] Subject: [PATCH 3/4] Hack for fullscreen workaround
+From 84a774e00e9d2535fdb8c798d7789130a9a008f6 Mon Sep 17 00:00:00 2001
+From: Michael Abrahams <miabraha@gmail.com>
+Date: Wed, 22 Jun 2016 13:37:06 -0400
+Subject: [PATCH 3/4] Hack for fullscreen workaround
 
 https://bugreports.qt.io/browse/QTBUG-41309
 ---
@@ -9,18 +9,18 @@ https://bugreports.qt.io/browse/QTBUG-41309
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/qtbase/src/plugins/platforms/windows/qwindowswindow.cpp \
                b/qtbase/src/plugins/platforms/windows/qwindowswindow.cpp
-index 3909c64c5..4c794f746 100644
+index 9c6cb53..d0829e3 100644
 --- a/qtbase/src/plugins/platforms/windows/qwindowswindow.cpp
 +++ b/qtbase/src/plugins/platforms/windows/qwindowswindow.cpp
-@@ -1956,7 +1956,7 @@ void QWindowsWindow::setWindowState_sys(Qt::WindowStates \
                newState)
-                 const UINT swpf = SWP_FRAMECHANGED | SWP_NOACTIVATE;
-                 const bool wasSync = testFlag(SynchronousGeometryChangeEvent);
-                 setFlag(SynchronousGeometryChangeEvent);
--                SetWindowPos(m_data.hwnd, HWND_TOP, r.left(), r.top(), r.width(), \
                r.height(), swpf);
-+                SetWindowPos(m_data.hwnd, HWND_TOP, r.left()-1, r.top()-1, \
                r.width()+2, r.height()+2, swpf);
-                 if (!wasSync)
-                     clearFlag(SynchronousGeometryChangeEvent);
-                 clearFlag(MaximizeToFullScreen);
+@@ -1769,7 +1769,7 @@ void QWindowsWindow::setWindowState_sys(Qt::WindowState \
newState) +             const UINT swpf = SWP_FRAMECHANGED | SWP_NOACTIVATE;
+             const bool wasSync = testFlag(SynchronousGeometryChangeEvent);
+             setFlag(SynchronousGeometryChangeEvent);
+-            SetWindowPos(m_data.hwnd, HWND_TOP, r.left(), r.top(), r.width(), \
r.height(), swpf); ++            SetWindowPos(m_data.hwnd, HWND_TOP, r.left()-1, \
r.top()-1, r.width()+2, r.height()+2, swpf); +             if (!wasSync)
+                 clearFlag(SynchronousGeometryChangeEvent);
+             QWindowSystemInterface::handleGeometryChange(window(), r);
 -- 
-2.17.1
+2.7.4.windows.1
 
diff --git a/3rdparty/ext_qt/CMakeLists.txt b/3rdparty/ext_qt/CMakeLists.txt
index 89f8b034d05..8326dd4533b 100644
--- a/3rdparty/ext_qt/CMakeLists.txt
+++ b/3rdparty/ext_qt/CMakeLists.txt
@@ -3,9 +3,9 @@ if (WIN32)
     list(APPEND _QT_conf -skip qt3d -skip qtactiveqt -skip qtcanvas3d
         -skip qtconnectivity -skip qtdoc -skip qtenginio -skip qtgraphicaleffects
         -skip qtlocation -skip qtsensors -skip qtserialport -skip qtwayland
-        -skip qtwebchannel -skip qtwebsockets
+        -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -skip qtwebview
         -skip qtxmlpatterns -no-sql-sqlite -nomake examples -nomake tools
-        -no-compile-examples -no-dbus -no-iconv -no-qml-debug
+        -no-compile-examples -no-dbus -no-iconv -no-qml-debug -no-ssl
         -no-libproxy -no-system-proxies -no-icu -no-mtdev
         -skip qtcharts -skip qtdatavis3d -skip qtgamepad -skip qtnetworkauth
         -skip qtpurchasing -skip qtremoteobjects -skip qtscxml -skip qtserialbus
@@ -33,15 +33,17 @@ if (WIN32)
   ExternalProject_Add(
       ext_qt
       DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
-      URL https://download.qt.io/official_releases/qt/5.11/5.11.1/single/qt-everywhere-src-5.11.1.zip
                
-      URL_HASH SHA1=9b5464e2f42d7a673834950d0f440ca0d048f6a2
+      URL https://download.qt.io/archive/qt/5.9/5.9.3/single/qt-everywhere-opensource-src-5.9.3.zip
 +      URL_HASH SHA1=2d3c53cd9dc76a479873548921a20d3d9b6fb9ac
       PATCH_COMMAND  ${PATCH_COMMAND} -p1 -i \
                ${CMAKE_CURRENT_SOURCE_DIR}/disable-wintab.diff
             COMMAND  ${PATCH_COMMAND} -p1 -i \
                ${CMAKE_CURRENT_SOURCE_DIR}/qtgui-private-headers.diff
             COMMAND  ${PATCH_COMMAND} -p1 -i \
${CMAKE_CURRENT_SOURCE_DIR}/0001-Don-t-request-the-MIME-image-every-time-Windows-asks.patch
                
             COMMAND  ${PATCH_COMMAND} -p1 -i \
                ${CMAKE_CURRENT_SOURCE_DIR}/0002-Hack-always-return-we-support-DIBV5.patch
                
             COMMAND  ${PATCH_COMMAND} -p1 -i \
                ${CMAKE_CURRENT_SOURCE_DIR}/0003-Hack-for-fullscreen-workaround.patch
             COMMAND  ${PATCH_COMMAND} -p1 -i \
                ${CMAKE_CURRENT_SOURCE_DIR}/qopengldebug-gles.patch
-            COMMAND  ${PATCH_COMMAND} -p1 -i \
${CMAKE_CURRENT_SOURCE_DIR}/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch +   \
COMMAND  ${PATCH_COMMAND} -p1 -i \
${CMAKE_CURRENT_SOURCE_DIR}/gerrit-189539-ANGLE-mingw-fix.patch +            COMMAND  \
${PATCH_COMMAND} -p1 -d qtbase -i \
${CMAKE_CURRENT_SOURCE_DIR}/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch +   \
COMMAND  ${PATCH_COMMAND} -p1 -d qtbase -i \
${CMAKE_CURRENT_SOURCE_DIR}/QTBUG-57299.diff  
       INSTALL_DIR ${EXTPREFIX_qt}
       CONFIGURE_COMMAND <SOURCE_DIR>/configure.bat ${_QT_conf}
@@ -58,8 +60,9 @@ elseif (NOT APPLE)
   ExternalProject_Add(
       ext_qt
       DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
-      URL https://download.qt.io/official_releases/qt/5.11/5.11.1/single/qt-everywhere-src-5.11.1.tar.xz
                
-      URL_MD5 c6f0854d7de7bde80cfd8cc85bb7152b
+      URL https://download.qt.io/official_releases/qt/5.10/5.10.0/single/qt-everywhere-src-5.10.0.tar.xz
 +      URL_MD5 c5e275ab0ed7ee61d0f4b82cd471770d
+      #PATCH_COMMAND ${PATCH_COMMAND} -p1 -i \
${CMAKE_CURRENT_SOURCE_DIR}/qt-no-motion-compression.diff  
       CONFIGURE_COMMAND <SOURCE_DIR>/configure -prefix ${EXTPREFIX_qt} -opensource \
-confirm-license -verbose -nomake examples -skip qt3d -skip qtactiveqt -skip \
qtcanvas3d -skip qtconnectivity -skip qtenginio -skip qtgraphicaleffects -skip \
qtlocation -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebsockets \
-skip qtwebview -skip qtandroidextras -skip qtserialport -skip qtdatavis3d -skip \
qtvirtualkeyboard -skip qtspeech -skip qtsensors -skip qtgamepad -skip qtscxml -skip \
qtremoteobjects -skip qtxmlpatterns -skip qtnetworkauth  -skip qtcharts -skip \
qtdatavis3d -skip qtgamepad -skip qtpurchasing -skip qtscxml -skip qtserialbus -skip \
qtspeech -skip qtvirtualkeyboard  INSTALL_DIR ${EXTPREFIX_qt}
@@ -156,6 +159,21 @@ else( APPLE )
       #
       # Now configure ext_qt accordingly
       #
+      if ((XCRUN_COMMAND_RESULT) AND (NOT (XCODE_VERSION VERSION_LESS 8.0.0)))
+        # Fix Xcode xcrun related issue.
+        # NOTE: This should be fixed by Qt 5.7.1 see here: \
http://code.qt.io/cgit/qt/qtbase.git/commit/?h=dev&id=77a71c32c9d19b87f79b208929e71282e8d8b5d9
 +        # NOTE: but no one's holding their breath.
+        set(ext_qt_PATCH_COMMAND ${PATCH_COMMAND} -p1 -i \
${CMAKE_CURRENT_SOURCE_DIR}/macdeploy-qt.diff +                COMMAND \
${PATCH_COMMAND} -p1 -b -d <SOURCE_DIR>/qtbase -i \
${CMAKE_CURRENT_SOURCE_DIR}/mac_standardpaths_qtbug-61159.diff +                \
#COMMAND ${PATCH_COMMAND} -p1 -b -d <SOURCE_DIR>/qtbase/mkspecs/features/mac -i \
${CMAKE_CURRENT_SOURCE_DIR}/mac-default.patch +            )
+        message(STATUS "${EXTPREFIX_qt}:Additional patches injected.")
+      else()
+        # No extra patches will be applied
+        # NOTE: defaults for some untested scenarios like xcrun fails and \
xcode_version < 8. +        # NOTE: that is uncharted territory and (hopefully) a \
very unlikely scenario... +        set(ext_qt_PATCH_COMMAND ${PATCH_COMMAND} -p1 -i \
${CMAKE_CURRENT_SOURCE_DIR}/macdeploy-qt.diff) +      endif()
 
       # Qt is big - try and parallelize if at all possible
       include(ProcessorCount)
@@ -183,10 +201,10 @@ else( APPLE )
         LOG_INSTALL         ON
         BUILD_IN_SOURCE     ON
 
-        URL https://download.qt.io/official_releases/qt/5.11/5.11.1/single/qt-everywhere-src-5.11.1.tar.xz
                
-        URL_MD5  c6f0854d7de7bde80cfd8cc85bb7152b
+        URL https://download.qt.io/official_releases/qt/5.10/5.10.0/single/qt-everywhere-src-5.10.0.tar.xz
 +        URL_MD5 c5e275ab0ed7ee61d0f4b82cd471770d
 
-        PATCH_COMMAND  ${PATCH_COMMAND} -p1 -i \
${CMAKE_CURRENT_SOURCE_DIR}/macdeploy-qt.diff +        PATCH_COMMAND \
${ext_qt_PATCH_COMMAND}  
         INSTALL_DIR ${EXTPREFIX_qt}
         CONFIGURE_COMMAND <SOURCE_DIR>/configure 
diff --git a/3rdparty/ext_qt/QTBUG-57299.diff b/3rdparty/ext_qt/QTBUG-57299.diff
new file mode 100644
index 00000000000..19d62bda7a8
--- /dev/null
+++ b/3rdparty/ext_qt/QTBUG-57299.diff
@@ -0,0 +1,111 @@
+From 7a5828621ce1f44c6af39257bc62cf6fac5f22c4 Mon Sep 17 00:00:00 2001
+From: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Date: Fri, 26 Jan 2018 08:37:40 +0100
+Subject: [PATCH] Windows/QSaveFile: Fix locking issues on Dropbox drives
+
+Add a flag to QTemporaryFileEngine causing the file to be opened in
+non-shared mode, preventing renaming failures caused by the Dropbox
+driver accessing it.
+
+Task-number: QTBUG-57299
+Change-Id: Id7afc3559fd15784d4166efbbd057d592b5e0ab2
+Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
+Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit fe5edcee602f0ab2912bbdd1a21f4309ed7dbfd6)
+---
+ src/corelib/io/qsavefile.cpp      |  2 +-
+ src/corelib/io/qtemporaryfile.cpp | 11 +++++++----
+ src/corelib/io/qtemporaryfile_p.h |  5 +++++
+ 3 files changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/src/corelib/io/qsavefile.cpp b/src/corelib/io/qsavefile.cpp
+index 3f45ca5f913..aaf3d1f5fb1 100644
+--- a/src/corelib/io/qsavefile.cpp
++++ b/src/corelib/io/qsavefile.cpp
+@@ -231,7 +231,7 @@ bool QSaveFile::open(OpenMode mode)
+             d->finalFileName = existingFile.filePath();
+     }
+ 
+-    d->fileEngine = new QTemporaryFileEngine;
++    d->fileEngine = new QTemporaryFileEngine(QTemporaryFileEngine::Win32NonShared);
+     // if the target file exists, we'll copy its permissions below,
+     // but until then, let's ensure the temporary file is not accessible
+     // to a third party
+diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp
+index 8a99873fee1..4712e65a419 100644
+--- a/src/corelib/io/qtemporaryfile.cpp
++++ b/src/corelib/io/qtemporaryfile.cpp
+@@ -117,7 +117,7 @@ typedef int NativeFileHandle;
+ */
+ static bool createFileFromTemplate(NativeFileHandle &file,
+         QFileSystemEntry::NativePath &path, size_t pos, size_t length, quint32 \
mode, +-        QSystemError &error)
++        int flags, QSystemError &error)
+ {
+     Q_ASSERT(length != 0);
+     Q_ASSERT(pos < size_t(path.length()));
+@@ -151,16 +151,18 @@ static bool createFileFromTemplate(NativeFileHandle &file,
+         // Atomically create file and obtain handle
+ #if defined(Q_OS_WIN)
+         Q_UNUSED(mode);
++        const DWORD shareMode = (flags & QTemporaryFileEngine::Win32NonShared)
++                                ? 0u : (FILE_SHARE_READ | FILE_SHARE_WRITE);
+ 
+ #  ifndef Q_OS_WINRT
+         file = CreateFile((const wchar_t *)path.constData(),
+                 GENERIC_READ | GENERIC_WRITE,
+-                FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_NEW,
++                shareMode, NULL, CREATE_NEW,
+                 FILE_ATTRIBUTE_NORMAL, NULL);
+ #  else // !Q_OS_WINRT
+         file = CreateFile2((const wchar_t *)path.constData(),
+                 GENERIC_READ | GENERIC_WRITE,
+-                FILE_SHARE_READ | FILE_SHARE_WRITE, CREATE_NEW,
++                shareMode, CREATE_NEW,
+                 NULL);
+ #  endif // Q_OS_WINRT
+ 
+@@ -182,6 +184,7 @@ static bool createFileFromTemplate(NativeFileHandle &file,
+             return false;
+         }
+ #else // POSIX
++        Q_UNUSED(flags)
+         file = QT_OPEN(path.constData(),
+                 QT_OPEN_CREAT | O_EXCL | QT_OPEN_RDWR | QT_OPEN_LARGEFILE,
+                 static_cast<mode_t>(mode));
+@@ -342,7 +345,7 @@ bool QTemporaryFileEngine::open(QIODevice::OpenMode openMode)
+     NativeFileHandle &file = d->fd;
+ #endif
+ 
+-    if (!createFileFromTemplate(file, filename, phPos, phLength, fileMode, error)) \
{ ++    if (!createFileFromTemplate(file, filename, phPos, phLength, fileMode, flags, \
error)) { +         setError(QFile::OpenError, error.toString());
+         return false;
+     }
+diff --git a/src/corelib/io/qtemporaryfile_p.h b/src/corelib/io/qtemporaryfile_p.h
+index 7f365f0e8a1..b0fab3a2558 100644
+--- a/src/corelib/io/qtemporaryfile_p.h
++++ b/src/corelib/io/qtemporaryfile_p.h
+@@ -85,6 +85,10 @@ class QTemporaryFileEngine : public QFSFileEngine
+ {
+     Q_DECLARE_PRIVATE(QFSFileEngine)
+ public:
++    enum Flags { Win32NonShared = 0x1 };
++
++    explicit QTemporaryFileEngine(int _flags = 0) : flags(_flags) {}
++
+     void initialize(const QString &file, quint32 mode, bool nameIsTemplate = true)
+     {
+         Q_D(QFSFileEngine);
+@@ -109,6 +113,7 @@ public:
+     bool close() override;
+ 
+     quint32 fileMode;
++    int flags;
+     bool filePathIsTemplate;
+     bool filePathWasTemplate;
+ };
+-- 
+2.16.3
+
diff --git a/3rdparty/ext_qt/disable-wintab.diff \
b/3rdparty/ext_qt/disable-wintab.diff index 5ffed56ae13..7a986d5da45 100644
--- a/3rdparty/ext_qt/disable-wintab.diff
+++ b/3rdparty/ext_qt/disable-wintab.diff
@@ -1,19 +1,8 @@
-From c6a6e0d1a3207c5379a4c4118dffe6801f4eb044 Mon Sep 17 00:00:00 2001
-From: Boudewijn Rempt <boud@valdyas.org>
-Date: Mon, 23 Jul 2018 11:41:26 +0200
-Subject: [PATCH 1/8] disable-wintab.diff
-
----
- .../platforms/windows/qwindowscontext.cpp     |   23 -
- .../windows/qwindowscontext.cpp.orig          | 1440 +++++++++++++++++
- 2 files changed, 1440 insertions(+), 23 deletions(-)
- create mode 100644 qtbase/src/plugins/platforms/windows/qwindowscontext.cpp.orig
-
 diff --git a/qtbase/src/plugins/platforms/windows/qwindowscontext.cpp \
                b/qtbase/src/plugins/platforms/windows/qwindowscontext.cpp
-index 98a4b261f..946df61d8 100644
+index e6e6ee8b1a..89143b6d3f 100644
 --- a/qtbase/src/plugins/platforms/windows/qwindowscontext.cpp
 +++ b/qtbase/src/plugins/platforms/windows/qwindowscontext.cpp
-@@ -242,9 +242,6 @@ struct QWindowsContextPrivate {
+@@ -240,9 +240,6 @@ struct QWindowsContextPrivate {
      QWindowsMimeConverter m_mimeConverter;
      QWindowsScreenManager m_screenManager;
      QSharedPointer<QWindowCreationContext> m_creationContext;
@@ -21,8 +10,8 @@ index 98a4b261f..946df61d8 100644
 -    QScopedPointer<QWindowsTabletSupport> m_tabletSupport;
 -#endif
      const HRESULT m_oleInitializeResult;
+     const QByteArray m_eventType;
      QWindow *m_lastActiveWindow = nullptr;
-     bool m_asyncExpose = false;
 @@ -281,17 +278,10 @@ QWindowsContext::QWindowsContext() :
      const QByteArray bv = qgetenv("QT_QPA_VERBOSE");
      if (!bv.isEmpty())
@@ -41,7 +30,7 @@ index 98a4b261f..946df61d8 100644
      unregisterWindowClasses();
      if (d->m_oleInitializeResult == S_OK || d->m_oleInitializeResult == S_FALSE)
          OleUninitialize();
-@@ -332,12 +322,7 @@ bool QWindowsContext::initTouch(unsigned integrationOptions)
+@@ -337,12 +327,7 @@ bool QWindowsContext::initTouch(unsigned integrationOptions)
  
  void QWindowsContext::setTabletAbsoluteRange(int a)
  {
@@ -54,7 +43,7 @@ index 98a4b261f..946df61d8 100644
  }
  
  int QWindowsContext::processDpiAwareness()
-@@ -708,11 +693,7 @@ QWindowsScreenManager &QWindowsContext::screenManager()
+@@ -702,11 +687,7 @@ QWindowsScreenManager &QWindowsContext::screenManager()
  
  QWindowsTabletSupport *QWindowsContext::tabletSupport() const
  {
@@ -66,7 +55,7 @@ index 98a4b261f..946df61d8 100644
  }
  
  /*!
-@@ -1139,10 +1120,6 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
+@@ -1112,10 +1093,6 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
              *result = LRESULT(MA_NOACTIVATE);
              return true;
          }
@@ -77,1452 +66,3 @@ index 98a4b261f..946df61d8 100644
          if (platformWindow->testFlag(QWindowsWindow::BlockedByModal))
              if (const QWindow *modalWindow = QGuiApplication::modalWindow()) {
                  QWindowsWindow *platformWindow = \
                QWindowsWindow::windowsWindowOf(modalWindow);
-diff --git a/qtbase/src/plugins/platforms/windows/qwindowscontext.cpp.orig \
                b/qtbase/src/plugins/platforms/windows/qwindowscontext.cpp.orig
-new file mode 100644
-index 000000000..98a4b261f
---- /dev/null
-+++ b/qtbase/src/plugins/platforms/windows/qwindowscontext.cpp.orig
-@@ -0,0 +1,1440 @@
-+/****************************************************************************
-+**
-+** Copyright (C) 2013 Samuel Gaist <samuel.gaist@edeltech.ch>
-+** Copyright (C) 2016 The Qt Company Ltd.
-+** Contact: https://www.qt.io/licensing/
-+**
-+** This file is part of the plugins of the Qt Toolkit.
-+**
-+** $QT_BEGIN_LICENSE:LGPL$
-+** Commercial License Usage
-+** Licensees holding valid commercial Qt licenses may use this file in
-+** accordance with the commercial license agreement provided with the
-+** Software or, alternatively, in accordance with the terms contained in
-+** a written agreement between you and The Qt Company. For licensing terms
-+** and conditions see https://www.qt.io/terms-conditions. For further
-+** information use the contact form at https://www.qt.io/contact-us.
-+**
-+** GNU Lesser General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU Lesser
-+** General Public License version 3 as published by the Free Software
-+** Foundation and appearing in the file LICENSE.LGPL3 included in the
-+** packaging of this file. Please review the following information to
-+** ensure the GNU Lesser General Public License version 3 requirements
-+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-+**
-+** GNU General Public License Usage
-+** Alternatively, this file may be used under the terms of the GNU
-+** General Public License version 2.0 or (at your option) the GNU General
-+** Public license version 3 or any later version approved by the KDE Free
-+** Qt Foundation. The licenses are as published by the Free Software
-+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-+** included in the packaging of this file. Please review the following
-+** information to ensure the GNU General Public License requirements will
-+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-+** https://www.gnu.org/licenses/gpl-3.0.html.
-+**
-+** $QT_END_LICENSE$
-+**
-+****************************************************************************/
-+
-+#include "qwindowscontext.h"
-+#include "qwindowsintegration.h"
-+#include "qwindowswindow.h"
-+#include "qwindowskeymapper.h"
-+#include "qwindowsmousehandler.h"
-+#include "qtwindowsglobal.h"
-+#include "qwindowsmenu.h"
-+#include "qwindowsmime.h"
-+#include "qwindowsinputcontext.h"
-+#if QT_CONFIG(tabletevent)
-+#  include "qwindowstabletsupport.h"
-+#endif
-+#include "qwindowstheme.h"
-+#include <private/qguiapplication_p.h>
-+#ifndef QT_NO_ACCESSIBILITY
-+#  include "uiautomation/qwindowsuiaaccessibility.h"
-+#endif
-+#if QT_CONFIG(sessionmanager)
-+# include <private/qsessionmanager_p.h>
-+# include "qwindowssessionmanager.h"
-+#endif
-+#include "qwindowsscreen.h"
-+#include "qwindowstheme.h"
-+
-+#include <QtGui/qtguiglobal.h>
-+#include <QtGui/QWindow>
-+#include <qpa/qwindowsysteminterface.h>
-+#include <qpa/qplatformnativeinterface.h>
-+#include <QtGui/QGuiApplication>
-+#include <QtGui/QOpenGLContext>
-+
-+#include <QtCore/QSet>
-+#include <QtCore/QHash>
-+#include <QtCore/QStringList>
-+#include <QtCore/QDebug>
-+#include <QtCore/QOperatingSystemVersion>
-+#include <QtCore/QSysInfo>
-+#include <QtCore/QScopedArrayPointer>
-+#include <QtCore/private/qsystemlibrary_p.h>
-+
-+#include <QtEventDispatcherSupport/private/qwindowsguieventdispatcher_p.h>
-+
-+#include <stdlib.h>
-+#include <stdio.h>
-+#include <windowsx.h>
-+#include <comdef.h>
-+#include <dbt.h>
-+
-+QT_BEGIN_NAMESPACE
-+
-+Q_LOGGING_CATEGORY(lcQpaWindows, "qt.qpa.windows")
-+Q_LOGGING_CATEGORY(lcQpaBackingStore, "qt.qpa.backingstore")
-+Q_LOGGING_CATEGORY(lcQpaEvents, "qt.qpa.events")
-+Q_LOGGING_CATEGORY(lcQpaGl, "qt.qpa.gl")
-+Q_LOGGING_CATEGORY(lcQpaMime, "qt.qpa.mime")
-+Q_LOGGING_CATEGORY(lcQpaInputMethods, "qt.qpa.input.methods")
-+Q_LOGGING_CATEGORY(lcQpaDialogs, "qt.qpa.dialogs")
-+Q_LOGGING_CATEGORY(lcQpaMenus, "qt.qpa.menus")
-+Q_LOGGING_CATEGORY(lcQpaTablet, "qt.qpa.input.tablet")
-+Q_LOGGING_CATEGORY(lcQpaAccessibility, "qt.qpa.accessibility")
-+Q_LOGGING_CATEGORY(lcQpaUiAutomation, "qt.qpa.uiautomation")
-+Q_LOGGING_CATEGORY(lcQpaTrayIcon, "qt.qpa.trayicon")
-+
-+int QWindowsContext::verbose = 0;
-+
-+#if !defined(LANG_SYRIAC)
-+#    define LANG_SYRIAC 0x5a
-+#endif
-+
-+static inline bool useRTL_Extensions()
-+{
-+    // Since the IsValidLanguageGroup/IsValidLocale functions always return true on
-+    // Vista, check the Keyboard Layouts for enabling RTL.
-+    if (const int nLayouts = GetKeyboardLayoutList(0, 0)) {
-+        QScopedArrayPointer<HKL> lpList(new HKL[nLayouts]);
-+        GetKeyboardLayoutList(nLayouts, lpList.data());
-+        for (int i = 0; i < nLayouts; ++i) {
-+            switch (PRIMARYLANGID((quintptr)lpList[i])) {
-+            case LANG_ARABIC:
-+            case LANG_HEBREW:
-+            case LANG_FARSI:
-+            case LANG_SYRIAC:
-+                return true;
-+            default:
-+                break;
-+            }
-+        }
-+    }
-+    return false;
-+}
-+
-+#if QT_CONFIG(sessionmanager)
-+static inline QWindowsSessionManager *platformSessionManager()
-+{
-+    QGuiApplicationPrivate *guiPrivate = \
                static_cast<QGuiApplicationPrivate*>(QObjectPrivate::get(qApp));
-+    QSessionManagerPrivate *managerPrivate = \
static_cast<QSessionManagerPrivate*>(QObjectPrivate::get(guiPrivate->session_manager));
                
-+    return static_cast<QWindowsSessionManager \
                *>(managerPrivate->platformSessionManager);
-+}
-+
-+static inline bool sessionManagerInteractionBlocked()
-+{
-+    return platformSessionManager()->isInteractionBlocked();
-+}
-+#else // QT_CONFIG(sessionmanager)
-+static inline bool sessionManagerInteractionBlocked() { return false; }
-+#endif
-+
-+static inline int windowDpiAwareness(HWND hwnd)
-+{
-+    return QWindowsContext::user32dll.getWindowDpiAwarenessContext && \
                QWindowsContext::user32dll.getWindowDpiAwarenessContext
-+        ? QWindowsContext::user32dll.getAwarenessFromDpiAwarenessContext(QWindowsContext::user32dll.getWindowDpiAwarenessContext(hwnd))
                
-+        : -1;
-+}
-+
-+// Note: This only works within WM_NCCREATE
-+static bool enableNonClientDpiScaling(HWND hwnd)
-+{
-+    bool result = false;
-+    if (QWindowsContext::user32dll.enableNonClientDpiScaling && \
                windowDpiAwareness(hwnd) == 2) {
-+        result = QWindowsContext::user32dll.enableNonClientDpiScaling(hwnd) != \
                FALSE;
-+        if (!result) {
-+            const DWORD errorCode = GetLastError();
-+            qErrnoWarning(int(errorCode), "EnableNonClientDpiScaling() failed for \
                HWND %p (%lu)",
-+                          hwnd, errorCode);
-+        }
-+    }
-+    return result;
-+}
-+
-+/*!
-+    \class QWindowsUser32DLL
-+    \brief Struct that contains dynamically resolved symbols of User32.dll.
-+
-+    The stub libraries shipped with the MinGW compiler miss some of the
-+    functions. They need to be retrieved dynamically.
-+
-+    In addition, touch-related functions are available only from Windows onwards.
-+    These need to resolved dynamically for Q_CC_MSVC as well.
-+
-+    \sa QWindowsShell32DLL
-+
-+    \internal
-+    \ingroup qt-lighthouse-win
-+*/
-+
-+void QWindowsUser32DLL::init()
-+{
-+    QSystemLibrary library(QStringLiteral("user32"));
-+    setProcessDPIAware = (SetProcessDPIAware)library.resolve("SetProcessDPIAware");
-+
-+    addClipboardFormatListener = \
                (AddClipboardFormatListener)library.resolve("AddClipboardFormatListener");
                
-+    removeClipboardFormatListener = \
                (RemoveClipboardFormatListener)library.resolve("RemoveClipboardFormatListener");
                
-+
-+    getDisplayAutoRotationPreferences = \
(GetDisplayAutoRotationPreferences)library.resolve("GetDisplayAutoRotationPreferences");
                
-+    setDisplayAutoRotationPreferences = \
(SetDisplayAutoRotationPreferences)library.resolve("SetDisplayAutoRotationPreferences");
                
-+
-+    if (QOperatingSystemVersion::current()
-+        >= QOperatingSystemVersion(QOperatingSystemVersion::Windows, 10, 0, 14393)) \
                {
-+        enableNonClientDpiScaling = \
                (EnableNonClientDpiScaling)library.resolve("EnableNonClientDpiScaling");
                
-+        getWindowDpiAwarenessContext = \
                (GetWindowDpiAwarenessContext)library.resolve("GetWindowDpiAwarenessContext");
                
-+        getAwarenessFromDpiAwarenessContext = \
(GetAwarenessFromDpiAwarenessContext)library.resolve("GetAwarenessFromDpiAwarenessContext");
                
-+    }
-+}
-+
-+void QWindowsShcoreDLL::init()
-+{
-+    if (QOperatingSystemVersion::current() < QOperatingSystemVersion::Windows8_1)
-+        return;
-+    QSystemLibrary library(QStringLiteral("SHCore"));
-+    getProcessDpiAwareness = \
                (GetProcessDpiAwareness)library.resolve("GetProcessDpiAwareness");
-+    setProcessDpiAwareness = \
                (SetProcessDpiAwareness)library.resolve("SetProcessDpiAwareness");
-+    getDpiForMonitor = (GetDpiForMonitor)library.resolve("GetDpiForMonitor");
-+}
-+
-+QWindowsUser32DLL QWindowsContext::user32dll;
-+QWindowsShcoreDLL QWindowsContext::shcoredll;
-+
-+QWindowsContext *QWindowsContext::m_instance = 0;
-+
-+/*!
-+    \class QWindowsContext
-+    \brief Singleton container for all relevant information.
-+
-+    Holds state information formerly stored in \c qapplication_win.cpp.
-+
-+    \internal
-+    \ingroup qt-lighthouse-win
-+*/
-+
-+typedef QHash<HWND, QWindowsWindow *> HandleBaseWindowHash;
-+
-+struct QWindowsContextPrivate {
-+    QWindowsContextPrivate();
-+
-+    unsigned m_systemInfo = 0;
-+    QSet<QString> m_registeredWindowClassNames;
-+    HandleBaseWindowHash m_windows;
-+    HDC m_displayContext = 0;
-+    int m_defaultDPI = 96;
-+    QWindowsKeyMapper m_keyMapper;
-+    QWindowsMouseHandler m_mouseHandler;
-+    QWindowsMimeConverter m_mimeConverter;
-+    QWindowsScreenManager m_screenManager;
-+    QSharedPointer<QWindowCreationContext> m_creationContext;
-+#if QT_CONFIG(tabletevent)
-+    QScopedPointer<QWindowsTabletSupport> m_tabletSupport;
-+#endif
-+    const HRESULT m_oleInitializeResult;
-+    QWindow *m_lastActiveWindow = nullptr;
-+    bool m_asyncExpose = false;
-+};
-+
-+QWindowsContextPrivate::QWindowsContextPrivate()
-+    : m_oleInitializeResult(OleInitialize(NULL))
-+{
-+    QWindowsContext::user32dll.init();
-+    QWindowsContext::shcoredll.init();
-+
-+    if (m_mouseHandler.touchDevice())
-+        m_systemInfo |= QWindowsContext::SI_SupportsTouch;
-+    m_displayContext = GetDC(0);
-+    m_defaultDPI = GetDeviceCaps(m_displayContext, LOGPIXELSY);
-+    if (useRTL_Extensions()) {
-+        m_systemInfo |= QWindowsContext::SI_RTL_Extensions;
-+        m_keyMapper.setUseRTLExtensions(true);
-+    }
-+    if (FAILED(m_oleInitializeResult)) {
-+       qWarning() << "QWindowsContext: OleInitialize() failed: "
-+           << QWindowsContext::comErrorString(m_oleInitializeResult);
-+    }
-+}
-+
-+QWindowsContext::QWindowsContext() :
-+    d(new QWindowsContextPrivate)
-+{
-+#ifdef Q_CC_MSVC
-+#    pragma warning( disable : 4996 )
-+#endif
-+    m_instance = this;
-+    // ### FIXME: Remove this once the logging system has other options of \
                configurations.
-+    const QByteArray bv = qgetenv("QT_QPA_VERBOSE");
-+    if (!bv.isEmpty())
-+        QLoggingCategory::setFilterRules(QString::fromLocal8Bit(bv));
-+#if QT_CONFIG(tabletevent)
-+    d->m_tabletSupport.reset(QWindowsTabletSupport::create());
-+    qCDebug(lcQpaTablet) << "Tablet support: " << (d->m_tabletSupport.isNull() ? \
                QStringLiteral("None") : d->m_tabletSupport->description());
-+#endif
-+}
-+
-+QWindowsContext::~QWindowsContext()
-+{
-+#if QT_CONFIG(tabletevent)
-+    d->m_tabletSupport.reset(); // Destroy internal window before unregistering \
                classes.
-+#endif
-+    unregisterWindowClasses();
-+    if (d->m_oleInitializeResult == S_OK || d->m_oleInitializeResult == S_FALSE)
-+        OleUninitialize();
-+
-+    d->m_screenManager.clearScreens(); // Order: Potentially calls back to the \
                windows.
-+    m_instance = 0;
-+}
-+
-+bool QWindowsContext::initTouch()
-+{
-+    return initTouch(QWindowsIntegration::instance()->options());
-+}
-+
-+bool QWindowsContext::initTouch(unsigned integrationOptions)
-+{
-+    if (d->m_systemInfo & QWindowsContext::SI_SupportsTouch)
-+        return true;
-+
-+    QTouchDevice *touchDevice = d->m_mouseHandler.ensureTouchDevice();
-+    if (!touchDevice)
-+        return false;
-+
-+    if (!(integrationOptions & \
                QWindowsIntegration::DontPassOsMouseEventsSynthesizedFromTouch))
-+        touchDevice->setCapabilities(touchDevice->capabilities() | \
                QTouchDevice::MouseEmulation);
-+
-+    QWindowSystemInterface::registerTouchDevice(touchDevice);
-+
-+    d->m_systemInfo |= QWindowsContext::SI_SupportsTouch;
-+
-+    // A touch device was plugged while the app is running. Register all windows \
                for touch.
-+    if (QGuiApplicationPrivate::is_app_running) {
-+        for (QWindowsWindow *w : qAsConst(d->m_windows))
-+            w->registerTouchWindow();
-+    }
-+
-+    return true;
-+}
-+
-+void QWindowsContext::setTabletAbsoluteRange(int a)
-+{
-+#if QT_CONFIG(tabletevent)
-+    if (!d->m_tabletSupport.isNull())
-+        d->m_tabletSupport->setAbsoluteRange(a);
-+#else
-+    Q_UNUSED(a)
-+#endif
-+}
-+
-+int QWindowsContext::processDpiAwareness()
-+{
-+    int result;
-+    if (QWindowsContext::shcoredll.getProcessDpiAwareness
-+        && SUCCEEDED(QWindowsContext::shcoredll.getProcessDpiAwareness(NULL, \
                &result))) {
-+        return result;
-+    }
-+    return -1;
-+}
-+
-+void QWindowsContext::setProcessDpiAwareness(QtWindows::ProcessDpiAwareness \
                dpiAwareness)
-+{
-+    qCDebug(lcQpaWindows) << __FUNCTION__ << dpiAwareness;
-+    if (QWindowsContext::shcoredll.isValid()) {
-+        const HRESULT hr = \
                QWindowsContext::shcoredll.setProcessDpiAwareness(dpiAwareness);
-+        // E_ACCESSDENIED means set externally (MSVC manifest or external app \
                loading Qt plugin).
-+        // Silence warning in that case unless debug is enabled.
-+        if (FAILED(hr) && (hr != E_ACCESSDENIED || \
                lcQpaWindows().isDebugEnabled())) {
-+            qWarning().noquote().nospace() << "SetProcessDpiAwareness("
-+                << dpiAwareness << ") failed: " << \
                QWindowsContext::comErrorString(hr)
-+                << ", using " << QWindowsContext::processDpiAwareness();
-+        }
-+    } else {
-+        if (dpiAwareness != QtWindows::ProcessDpiUnaware && \
                QWindowsContext::user32dll.setProcessDPIAware) {
-+            if (!QWindowsContext::user32dll.setProcessDPIAware())
-+                qErrnoWarning("SetProcessDPIAware() failed");
-+        }
-+    }
-+}
-+
-+QWindowsContext *QWindowsContext::instance()
-+{
-+    return m_instance;
-+}
-+
-+unsigned QWindowsContext::systemInfo() const
-+{
-+    return d->m_systemInfo;
-+}
-+
-+bool QWindowsContext::useRTLExtensions() const
-+{
-+    return d->m_keyMapper.useRTLExtensions();
-+}
-+
-+QList<int> QWindowsContext::possibleKeys(const QKeyEvent *e) const
-+{
-+    return d->m_keyMapper.possibleKeys(e);
-+}
-+
-+QSharedPointer<QWindowCreationContext> \
QWindowsContext::setWindowCreationContext(const \
                QSharedPointer<QWindowCreationContext> &ctx)
-+{
-+    const QSharedPointer<QWindowCreationContext> old = d->m_creationContext;
-+    d->m_creationContext = ctx;
-+    return old;
-+}
-+
-+QSharedPointer<QWindowCreationContext> QWindowsContext::windowCreationContext() \
                const
-+{
-+    return d->m_creationContext;
-+}
-+
-+int QWindowsContext::defaultDPI() const
-+{
-+    return d->m_defaultDPI;
-+}
-+
-+HDC QWindowsContext::displayContext() const
-+{
-+    return d->m_displayContext;
-+}
-+
-+QWindow *QWindowsContext::keyGrabber() const
-+{
-+    return d->m_keyMapper.keyGrabber();
-+}
-+
-+void QWindowsContext::setKeyGrabber(QWindow *w)
-+{
-+    d->m_keyMapper.setKeyGrabber(w);
-+}
-+
-+// Window class registering code (from qapplication_win.cpp)
-+
-+QString QWindowsContext::registerWindowClass(const QWindow *w)
-+{
-+    Q_ASSERT(w);
-+    const Qt::WindowFlags flags = w->flags();
-+    const Qt::WindowFlags type = flags & Qt::WindowType_Mask;
-+    // Determine style and icon.
-+    uint style = CS_DBLCLKS;
-+    bool icon = true;
-+    // The following will not set CS_OWNDC for any widget window, even if it \
                contains a
-+    // QOpenGLWidget or QQuickWidget later on. That cannot be detected at this \
                stage.
-+    if (w->surfaceType() == QSurface::OpenGLSurface || (flags & \
                Qt::MSWindowsOwnDC))
-+        style |= CS_OWNDC;
-+    if (!(flags & Qt::NoDropShadowWindowHint)
-+        && (type == Qt::Popup || w->property("_q_windowsDropShadow").toBool())) {
-+        style |= CS_DROPSHADOW;
-+    }
-+    switch (type) {
-+    case Qt::Tool:
-+    case Qt::ToolTip:
-+    case Qt::Popup:
-+        style |= CS_SAVEBITS; // Save/restore background
-+        icon = false;
-+        break;
-+    case Qt::Dialog:
-+        if (!(flags & Qt::WindowSystemMenuHint))
-+            icon = false; // QTBUG-2027, dialogs without system menu.
-+        break;
-+    }
-+    // Create a unique name for the flag combination
-+    QString cname;
-+    cname += QLatin1String("Qt5QWindow");
-+    switch (type) {
-+    case Qt::Tool:
-+        cname += QLatin1String("Tool");
-+        break;
-+    case Qt::ToolTip:
-+        cname += QLatin1String("ToolTip");
-+        break;
-+    case Qt::Popup:
-+        cname += QLatin1String("Popup");
-+        break;
-+    default:
-+        break;
-+    }
-+    if (style & CS_DROPSHADOW)
-+        cname += QLatin1String("DropShadow");
-+    if (style & CS_SAVEBITS)
-+        cname += QLatin1String("SaveBits");
-+    if (style & CS_OWNDC)
-+        cname += QLatin1String("OwnDC");
-+    if (icon)
-+        cname += QLatin1String("Icon");
-+
-+    return registerWindowClass(cname, qWindowsWndProc, style, \
                GetSysColorBrush(COLOR_WINDOW), icon);
-+}
-+
-+QString QWindowsContext::registerWindowClass(QString cname,
-+                                             WNDPROC proc,
-+                                             unsigned style,
-+                                             HBRUSH brush,
-+                                             bool icon)
-+{
-+    // since multiple Qt versions can be used in one process
-+    // each one has to have window class names with a unique name
-+    // The first instance gets the unmodified name; if the class
-+    // has already been registered by another instance of Qt then
-+    // add an instance-specific ID, the address of the window proc.
-+    static int classExists = -1;
-+
-+    const HINSTANCE appInstance = static_cast<HINSTANCE>(GetModuleHandle(0));
-+    if (classExists == -1) {
-+        WNDCLASS wcinfo;
-+        classExists = GetClassInfo(appInstance, \
                reinterpret_cast<LPCWSTR>(cname.utf16()), &wcinfo);
-+        classExists = classExists && wcinfo.lpfnWndProc != proc;
-+    }
-+
-+    if (classExists)
-+        cname += QString::number(reinterpret_cast<quintptr>(proc));
-+
-+    if (d->m_registeredWindowClassNames.contains(cname))        // already \
                registered in our list
-+        return cname;
-+
-+    WNDCLASSEX wc;
-+    wc.cbSize       = sizeof(WNDCLASSEX);
-+    wc.style        = style;
-+    wc.lpfnWndProc  = proc;
-+    wc.cbClsExtra   = 0;
-+    wc.cbWndExtra   = 0;
-+    wc.hInstance    = appInstance;
-+    wc.hCursor      = 0;
-+    wc.hbrBackground = brush;
-+    if (icon) {
-+        wc.hIcon = static_cast<HICON>(LoadImage(appInstance, L"IDI_ICON1", \
                IMAGE_ICON, 0, 0, LR_DEFAULTSIZE));
-+        if (wc.hIcon) {
-+            int sw = GetSystemMetrics(SM_CXSMICON);
-+            int sh = GetSystemMetrics(SM_CYSMICON);
-+            wc.hIconSm = static_cast<HICON>(LoadImage(appInstance, L"IDI_ICON1", \
                IMAGE_ICON, sw, sh, 0));
-+        } else {
-+            wc.hIcon = static_cast<HICON>(LoadImage(0, IDI_APPLICATION, IMAGE_ICON, \
                0, 0, LR_DEFAULTSIZE | LR_SHARED));
-+            wc.hIconSm = 0;
-+        }
-+    } else {
-+        wc.hIcon    = 0;
-+        wc.hIconSm  = 0;
-+    }
-+
-+    wc.lpszMenuName  = 0;
-+    wc.lpszClassName = reinterpret_cast<LPCWSTR>(cname.utf16());
-+    ATOM atom = RegisterClassEx(&wc);
-+    if (!atom)
-+        qErrnoWarning("QApplication::regClass: Registering window class '%s' \
                failed.",
-+                      qPrintable(cname));
-+
-+    d->m_registeredWindowClassNames.insert(cname);
-+    qCDebug(lcQpaWindows).nospace() << __FUNCTION__ << ' ' << cname
-+        << " style=0x" << hex << style << dec
-+        << " brush=" << brush << " icon=" << icon << " atom=" << atom;
-+    return cname;
-+}
-+
-+void QWindowsContext::unregisterWindowClasses()
-+{
-+    const HINSTANCE appInstance = static_cast<HINSTANCE>(GetModuleHandle(0));
-+
-+    foreach (const QString &name,  d->m_registeredWindowClassNames) {
-+        if (!UnregisterClass(reinterpret_cast<LPCWSTR>(name.utf16()), appInstance) \
                && QWindowsContext::verbose)
-+            qErrnoWarning("UnregisterClass failed for '%s'", qPrintable(name));
-+    }
-+    d->m_registeredWindowClassNames.clear();
-+}
-+
-+int QWindowsContext::screenDepth() const
-+{
-+    return GetDeviceCaps(d->m_displayContext, BITSPIXEL);
-+}
-+
-+QString QWindowsContext::windowsErrorMessage(unsigned long errorCode)
-+{
-+    QString rc = QString::fromLatin1("#%1: ").arg(errorCode);
-+    ushort *lpMsgBuf;
-+
-+    const DWORD len = FormatMessage(
-+            FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | \
                FORMAT_MESSAGE_IGNORE_INSERTS,
-+            NULL, errorCode, 0, reinterpret_cast<LPTSTR>(&lpMsgBuf), 0, NULL);
-+    if (len) {
-+        rc = QString::fromUtf16(lpMsgBuf, int(len));
-+        LocalFree(lpMsgBuf);
-+    } else {
-+        rc += QString::fromLatin1("<unknown error>");
-+    }
-+    return rc;
-+}
-+
-+void QWindowsContext::addWindow(HWND hwnd, QWindowsWindow *w)
-+{
-+    d->m_windows.insert(hwnd, w);
-+}
-+
-+void QWindowsContext::removeWindow(HWND hwnd)
-+{
-+    const HandleBaseWindowHash::iterator it = d->m_windows.find(hwnd);
-+    if (it != d->m_windows.end()) {
-+        if (d->m_keyMapper.keyGrabber() == it.value()->window())
-+            d->m_keyMapper.setKeyGrabber(0);
-+        d->m_windows.erase(it);
-+    }
-+}
-+
-+QWindowsWindow *QWindowsContext::findPlatformWindow(const QWindowsMenuBar *mb) \
                const
-+{
-+    for (auto it = d->m_windows.cbegin(), end = d->m_windows.cend(); it != end; \
                ++it) {
-+        if ((*it)->menuBar() == mb)
-+            return *it;
-+    }
-+    return nullptr;
-+}
-+
-+QWindowsWindow *QWindowsContext::findPlatformWindow(HWND hwnd) const
-+{
-+    return d->m_windows.value(hwnd);
-+}
-+
-+QWindowsWindow *QWindowsContext::findClosestPlatformWindow(HWND hwnd) const
-+{
-+    QWindowsWindow *window = d->m_windows.value(hwnd);
-+
-+    // Requested hwnd may also be a child of a platform window in case of embedded \
                native windows.
-+    // Find the closest parent that has a platform window.
-+    if (!window) {
-+        for (HWND w = hwnd; w; w = GetParent(w)) {
-+            window = d->m_windows.value(w);
-+            if (window)
-+                break;
-+        }
-+    }
-+
-+    return window;
-+}
-+
-+QWindow *QWindowsContext::findWindow(HWND hwnd) const
-+{
-+    if (const QWindowsWindow *bw = findPlatformWindow(hwnd))
-+            return bw->window();
-+    return 0;
-+}
-+
-+QWindow *QWindowsContext::windowUnderMouse() const
-+{
-+    return d->m_mouseHandler.windowUnderMouse();
-+}
-+
-+void QWindowsContext::clearWindowUnderMouse()
-+{
-+    d->m_mouseHandler.clearWindowUnderMouse();
-+}
-+
-+/*!
-+    \brief Find a child window at a screen point.
-+
-+    Deep search for a QWindow at global point, skipping non-owned
-+    windows (accessibility?). Implemented using ChildWindowFromPointEx()
-+    instead of (historically used) WindowFromPoint() to get a well-defined
-+    behaviour for hidden/transparent windows.
-+
-+    \a cwex_flags are flags of ChildWindowFromPointEx().
-+    \a parent is the parent window, pass GetDesktopWindow() for top levels.
-+*/
-+
-+static inline bool findPlatformWindowHelper(const POINT &screenPoint, unsigned \
                cwexFlags,
-+                                            const QWindowsContext *context,
-+                                            HWND *hwnd, QWindowsWindow **result)
-+{
-+    POINT point = screenPoint;
-+    ScreenToClient(*hwnd, &point);
-+    // Returns parent if inside & none matched.
-+    const HWND child = ChildWindowFromPointEx(*hwnd, point, cwexFlags);
-+    if (!child || child == *hwnd)
-+        return false;
-+    if (QWindowsWindow *window = context->findPlatformWindow(child)) {
-+        *result = window;
-+        *hwnd = child;
-+        return true;
-+    }
-+    // QTBUG-40555: despite CWP_SKIPINVISIBLE, it is possible to hit on invisible
-+    // full screen windows of other applications that have WS_EX_TRANSPARENT set
-+    // (for example created by  screen sharing applications). In that case, try to
-+    // find a Qt window by searching again with CWP_SKIPTRANSPARENT.
-+    // Note that Qt 5 uses WS_EX_TRANSPARENT for Qt::WindowTransparentForInput
-+    // as well.
-+    if (!(cwexFlags & CWP_SKIPTRANSPARENT)
-+        && (GetWindowLongPtr(child, GWL_EXSTYLE) & WS_EX_TRANSPARENT)) {
-+        const HWND nonTransparentChild = ChildWindowFromPointEx(*hwnd, point, \
                cwexFlags | CWP_SKIPTRANSPARENT);
-+        if (QWindowsWindow *nonTransparentWindow = \
                context->findPlatformWindow(nonTransparentChild)) {
-+            *result = nonTransparentWindow;
-+            *hwnd = nonTransparentChild;
-+            return true;
-+        }
-+    }
-+    *hwnd = child;
-+    return true;
-+}
-+
-+QWindowsWindow *QWindowsContext::findPlatformWindowAt(HWND parent,
-+                                                          const QPoint \
                &screenPointIn,
-+                                                          unsigned cwex_flags) \
                const
-+{
-+    QWindowsWindow *result = 0;
-+    const POINT screenPoint = { screenPointIn.x(), screenPointIn.y() };
-+    while (findPlatformWindowHelper(screenPoint, cwex_flags, this, &parent, \
                &result)) {}
-+    return result;
-+}
-+
-+QWindowsMimeConverter &QWindowsContext::mimeConverter() const
-+{
-+    return d->m_mimeConverter;
-+}
-+
-+QWindowsScreenManager &QWindowsContext::screenManager()
-+{
-+    return d->m_screenManager;
-+}
-+
-+QWindowsTabletSupport *QWindowsContext::tabletSupport() const
-+{
-+#if QT_CONFIG(tabletevent)
-+    return d->m_tabletSupport.data();
-+#else
-+    return 0;
-+#endif
-+}
-+
-+/*!
-+    \brief Convenience to create a non-visible, message-only dummy
-+    window for example used as clipboard watcher or for GL.
-+*/
-+
-+HWND QWindowsContext::createDummyWindow(const QString &classNameIn,
-+                                        const wchar_t *windowName,
-+                                        WNDPROC wndProc, DWORD style)
-+{
-+    if (!wndProc)
-+        wndProc = DefWindowProc;
-+    QString className = registerWindowClass(classNameIn, wndProc);
-+    return CreateWindowEx(0, reinterpret_cast<LPCWSTR>(className.utf16()),
-+                          windowName, style,
-+                          CW_USEDEFAULT, CW_USEDEFAULT,
-+                          CW_USEDEFAULT, CW_USEDEFAULT,
-+                          HWND_MESSAGE, NULL, \
                static_cast<HINSTANCE>(GetModuleHandle(0)), NULL);
-+}
-+
-+// Re-engineered from the inline function _com_error::ErrorMessage().
-+// We cannot use it directly since it uses swprintf_s(), which is not
-+// present in the MSVCRT.DLL found on Windows XP (QTBUG-35617).
-+static inline QString errorMessageFromComError(const _com_error &comError)
-+{
-+     TCHAR *message = nullptr;
-+     FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
-+                   NULL, DWORD(comError.Error()), \
                MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
-+                   message, 0, NULL);
-+     if (message) {
-+         const QString result = QString::fromWCharArray(message).trimmed();
-+         LocalFree(static_cast<HLOCAL>(message));
-+         return result;
-+     }
-+     if (const WORD wCode = comError.WCode())
-+         return QString::asprintf("IDispatch error #%u", uint(wCode));
-+     return QString::asprintf("Unknown error 0x0%x", uint(comError.Error()));
-+}
-+
-+/*!
-+    \brief Common COM error strings.
-+*/
-+
-+QByteArray QWindowsContext::comErrorString(HRESULT hr)
-+{
-+    QByteArray result = QByteArrayLiteral("COM error 0x")
-+        + QByteArray::number(quintptr(hr), 16) + ' ';
-+    switch (hr) {
-+    case S_OK:
-+        result += QByteArrayLiteral("S_OK");
-+        break;
-+    case S_FALSE:
-+        result += QByteArrayLiteral("S_FALSE");
-+        break;
-+    case E_UNEXPECTED:
-+        result += QByteArrayLiteral("E_UNEXPECTED");
-+        break;
-+    case E_ACCESSDENIED:
-+        result += QByteArrayLiteral("E_ACCESSDENIED");
-+        break;
-+    case CO_E_ALREADYINITIALIZED:
-+        result += QByteArrayLiteral("CO_E_ALREADYINITIALIZED");
-+        break;
-+    case CO_E_NOTINITIALIZED:
-+        result += QByteArrayLiteral("CO_E_NOTINITIALIZED");
-+        break;
-+    case RPC_E_CHANGED_MODE:
-+        result += QByteArrayLiteral("RPC_E_CHANGED_MODE");
-+        break;
-+    case OLE_E_WRONGCOMPOBJ:
-+        result += QByteArrayLiteral("OLE_E_WRONGCOMPOBJ");
-+        break;
-+    case CO_E_NOT_SUPPORTED:
-+        result += QByteArrayLiteral("CO_E_NOT_SUPPORTED");
-+        break;
-+    case E_NOTIMPL:
-+        result += QByteArrayLiteral("E_NOTIMPL");
-+        break;
-+    case E_INVALIDARG:
-+        result += QByteArrayLiteral("E_INVALIDARG");
-+        break;
-+    case E_NOINTERFACE:
-+        result += QByteArrayLiteral("E_NOINTERFACE");
-+        break;
-+    case E_POINTER:
-+        result += QByteArrayLiteral("E_POINTER");
-+        break;
-+    case E_HANDLE:
-+        result += QByteArrayLiteral("E_HANDLE");
-+        break;
-+    case E_ABORT:
-+        result += QByteArrayLiteral("E_ABORT");
-+        break;
-+    case E_FAIL:
-+        result += QByteArrayLiteral("E_FAIL");
-+        break;
-+    case RPC_E_WRONG_THREAD:
-+        result += QByteArrayLiteral("RPC_E_WRONG_THREAD");
-+        break;
-+    case RPC_E_THREAD_NOT_INIT:
-+        result += QByteArrayLiteral("RPC_E_THREAD_NOT_INIT");
-+        break;
-+    default:
-+        break;
-+    }
-+    _com_error error(hr);
-+    result += QByteArrayLiteral(" (");
-+    result += errorMessageFromComError(error);
-+    result += ')';
-+    return result;
-+}
-+
-+static inline QWindowsInputContext *windowsInputContext()
-+{
-+    return qobject_cast<QWindowsInputContext \
                *>(QWindowsIntegration::instance()->inputContext());
-+}
-+
-+
-+// Child windows, fixed-size windows or pop-ups and similar should not be resized
-+static inline bool resizeOnDpiChanged(const QWindow *w)
-+{
-+    bool result = false;
-+    if (w->isTopLevel()) {
-+        switch (w->type()) {
-+        case Qt::Window:
-+        case Qt::Dialog:
-+        case Qt::Sheet:
-+        case Qt::Drawer:
-+        case Qt::Tool:
-+            result = !w->flags().testFlag(Qt::MSWindowsFixedSizeDialogHint);
-+            break;
-+        default:
-+            break;
-+        }
-+    }
-+    return result;
-+}
-+
-+static bool shouldHaveNonClientDpiScaling(const QWindow *window)
-+{
-+    return QOperatingSystemVersion::current() >= QOperatingSystemVersion::Windows10
-+        && window->isTopLevel()
-+        && !window->property(QWindowsWindow::embeddedNativeParentHandleProperty).isValid()
                
-+#if QT_CONFIG(opengl) // /QTBUG-62901, EnableNonClientDpiScaling has problems with \
                GL
-+        && (window->surfaceType() != QSurface::OpenGLSurface
-+            || QOpenGLContext::openGLModuleType() != QOpenGLContext::LibGL)
-+#endif
-+       ;
-+}
-+
-+static inline bool isInputMessage(UINT m)
-+{
-+    switch (m) {
-+    case WM_IME_STARTCOMPOSITION:
-+    case WM_IME_ENDCOMPOSITION:
-+    case WM_IME_COMPOSITION:
-+    case WM_TOUCH:
-+    case WM_MOUSEHOVER:
-+    case WM_MOUSELEAVE:
-+    case WM_NCHITTEST:
-+    case WM_NCMOUSEHOVER:
-+    case WM_NCMOUSELEAVE:
-+    case WM_SIZING:
-+    case WM_MOVING:
-+    case WM_SYSCOMMAND:
-+    case WM_COMMAND:
-+    case WM_DWMNCRENDERINGCHANGED:
-+    case WM_PAINT:
-+        return true;
-+    default:
-+        break;
-+    }
-+    return (m >= WM_MOUSEFIRST && m <= WM_MOUSELAST)
-+        || (m >= WM_NCMOUSEMOVE && m <= WM_NCXBUTTONDBLCLK)
-+        || (m >= WM_KEYFIRST && m <= WM_KEYLAST);
-+}
-+
-+/*!
-+     \brief Main windows procedure registered for windows.
-+
-+     \sa QWindowsGuiEventDispatcher
-+*/
-+
-+bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
-+                                  QtWindows::WindowsEventType et,
-+                                  WPARAM wParam, LPARAM lParam,
-+                                  LRESULT *result,
-+                                  QWindowsWindow **platformWindowPtr)
-+{
-+    *result = 0;
-+
-+    MSG msg;
-+    msg.hwnd = hwnd;         // re-create MSG structure
-+    msg.message = message;   // time and pt fields ignored
-+    msg.wParam = wParam;
-+    msg.lParam = lParam;
-+    msg.pt.x = msg.pt.y = 0;
-+    if (et != QtWindows::CursorEvent && (et & (QtWindows::MouseEventFlag | \
                QtWindows::NonClientEventFlag))) {
-+        msg.pt.x = GET_X_LPARAM(lParam);
-+        msg.pt.y = GET_Y_LPARAM(lParam);
-+        // For non-client-area messages, these are screen coordinates (as expected
-+        // in the MSG structure), otherwise they are client coordinates.
-+        if (!(et & QtWindows::NonClientEventFlag)) {
-+            ClientToScreen(msg.hwnd, &msg.pt);
-+        }
-+    } else {
-+        GetCursorPos(&msg.pt);
-+    }
-+
-+    QWindowsWindow *platformWindow = findPlatformWindow(hwnd);
-+    *platformWindowPtr = platformWindow;
-+
-+    // Run the native event filters. QTBUG-67095: Exclude input messages which are \
                sent
-+    // by QEventDispatcherWin32::processEvents()
-+    if (!isInputMessage(msg.message) && filterNativeEvent(&msg, result))
-+        return true;
-+
-+    if (platformWindow && filterNativeEvent(platformWindow->window(), &msg, \
                result))
-+        return true;
-+
-+    if (et & QtWindows::InputMethodEventFlag) {
-+        QWindowsInputContext *windowsInputContext = ::windowsInputContext();
-+        // Disable IME assuming this is a special implementation hooking into \
                keyboard input.
-+        // "Real" IME implementations should use a native event filter intercepting \
                IME events.
-+        if (!windowsInputContext) {
-+            QWindowsInputContext::setWindowsImeEnabled(platformWindow, false);
-+            return false;
-+        }
-+        switch (et) {
-+        case QtWindows::InputMethodStartCompositionEvent:
-+            return windowsInputContext->startComposition(hwnd);
-+        case QtWindows::InputMethodCompositionEvent:
-+            return windowsInputContext->composition(hwnd, lParam);
-+        case QtWindows::InputMethodEndCompositionEvent:
-+            return windowsInputContext->endComposition(hwnd);
-+        case QtWindows::InputMethodRequest:
-+            return windowsInputContext->handleIME_Request(wParam, lParam, result);
-+        default:
-+            break;
-+        }
-+    } // InputMethodEventFlag
-+
-+    switch (et) {
-+    case QtWindows::GestureEvent:
-+        return sessionManagerInteractionBlocked() || \
d->m_mouseHandler.translateGestureEvent(platformWindow->window(), hwnd, et, msg, \
                result);
-+    case QtWindows::InputMethodOpenCandidateWindowEvent:
-+    case QtWindows::InputMethodCloseCandidateWindowEvent:
-+        // TODO: Release/regrab mouse if a popup has mouse grab.
-+        return false;
-+    case QtWindows::DestroyEvent:
-+        if (platformWindow && \
                !platformWindow->testFlag(QWindowsWindow::WithinDestroy)) {
-+            qWarning() << "External WM_DESTROY received for " << \
                platformWindow->window()
-+                       << ", parent: " << platformWindow->window()->parent()
-+                       << ", transient parent: " << \
                platformWindow->window()->transientParent();
-+            }
-+        return false;
-+    case QtWindows::ClipboardEvent:
-+        return false;
-+    case QtWindows::UnknownEvent:
-+        return false;
-+    case QtWindows::AccessibleObjectFromWindowRequest:
-+#ifndef QT_NO_ACCESSIBILITY
-+        return QWindowsUiaAccessibility::handleWmGetObject(hwnd, wParam, lParam, \
                result);
-+#else
-+        return false;
-+#endif
-+    case QtWindows::DisplayChangedEvent:
-+        if (QWindowsTheme *t = QWindowsTheme::instance())
-+            t->displayChanged();
-+        return d->m_screenManager.handleDisplayChange(wParam, lParam);
-+    case QtWindows::SettingChangedEvent:
-+        return d->m_screenManager.handleScreenChanges();
-+    default:
-+        break;
-+    }
-+
-+    // Before CreateWindowEx() returns, some events are sent,
-+    // for example WM_GETMINMAXINFO asking for size constraints for top levels.
-+    // Pass on to current creation context
-+    if (!platformWindow && !d->m_creationContext.isNull()) {
-+        switch (et) {
-+        case QtWindows::QuerySizeHints:
-+            d->m_creationContext->applyToMinMaxInfo(reinterpret_cast<MINMAXINFO \
                *>(lParam));
-+            return true;
-+        case QtWindows::ResizeEvent: {
-+            const QSize size(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) - \
                d->m_creationContext->menuHeight);
-+            d->m_creationContext->obtainedGeometry.setSize(size);
-+        }
-+            return true;
-+        case QtWindows::MoveEvent:
-+            d->m_creationContext->obtainedGeometry.moveTo(GET_X_LPARAM(lParam), \
                GET_Y_LPARAM(lParam));
-+            return true;
-+        case QtWindows::NonClientCreate:
-+            if (shouldHaveNonClientDpiScaling(d->m_creationContext->window))
-+                enableNonClientDpiScaling(msg.hwnd);
-+            return false;
-+        case QtWindows::CalculateSize:
-+            return \
QWindowsGeometryHint::handleCalculateSize(d->m_creationContext->customMargins, msg, \
                result);
-+        case QtWindows::GeometryChangingEvent:
-+            return QWindowsWindow::handleGeometryChangingMessage(&msg, \
                d->m_creationContext->window,
-+                                                                 \
                d->m_creationContext->margins + d->m_creationContext->customMargins);
-+        default:
-+            break;
-+        }
-+    }
-+    if (platformWindow) {
-+        // Suppress events sent during DestroyWindow() for native children.
-+        if (platformWindow->testFlag(QWindowsWindow::WithinDestroy))
-+            return false;
-+        if (QWindowsContext::verbose > 1)
-+            qCDebug(lcQpaEvents) << "Event window: " << platformWindow->window();
-+    } else {
-+        qWarning("%s: No Qt Window found for event 0x%x (%s), hwnd=0x%p.",
-+                 __FUNCTION__, message,
-+                 QWindowsGuiEventDispatcher::windowsMessageName(message), hwnd);
-+        return false;
-+    }
-+
-+    switch (et) {
-+    case QtWindows::DeviceChangeEvent:
-+        if (d->m_systemInfo & QWindowsContext::SI_SupportsTouch)
-+            break;
-+        // See if there are any touch devices added
-+        if (wParam == DBT_DEVNODES_CHANGED)
-+            initTouch();
-+        break;
-+    case QtWindows::KeyboardLayoutChangeEvent:
-+        if (QWindowsInputContext *wic = windowsInputContext())
-+            wic->handleInputLanguageChanged(wParam, lParam);
-+        Q_FALLTHROUGH();
-+    case QtWindows::KeyDownEvent:
-+    case QtWindows::KeyEvent:
-+    case QtWindows::InputMethodKeyEvent:
-+    case QtWindows::InputMethodKeyDownEvent:
-+    case QtWindows::AppCommandEvent:
-+        return sessionManagerInteractionBlocked() ||  \
                d->m_keyMapper.translateKeyEvent(platformWindow->window(), hwnd, msg, \
                result);
-+    case QtWindows::MenuAboutToShowEvent:
-+        if (sessionManagerInteractionBlocked())
-+            return true;
-+        if (QWindowsPopupMenu::notifyAboutToShow(reinterpret_cast<HMENU>(wParam)))
-+            return true;
-+        if (platformWindow == nullptr || platformWindow->menuBar() == nullptr)
-+            return false;
-+        return platformWindow->menuBar()->notifyAboutToShow(reinterpret_cast<HMENU>(wParam));
                
-+    case QtWindows::MenuCommandEvent:
-+        if (sessionManagerInteractionBlocked())
-+            return true;
-+        if (QWindowsPopupMenu::notifyTriggered(LOWORD(wParam)))
-+            return true;
-+        if (platformWindow == nullptr || platformWindow->menuBar() == nullptr)
-+            return false;
-+        return platformWindow->menuBar()->notifyTriggered(LOWORD(wParam));
-+    case QtWindows::MoveEvent:
-+        platformWindow->handleMoved();
-+        return true;
-+    case QtWindows::ResizeEvent:
-+        platformWindow->handleResized(static_cast<int>(wParam));
-+        return true;
-+    case QtWindows::QuerySizeHints:
-+        platformWindow->getSizeHints(reinterpret_cast<MINMAXINFO *>(lParam));
-+        return true;// maybe available on some SDKs revisit WM_NCCALCSIZE
-+    case QtWindows::CalculateSize:
-+        return QWindowsGeometryHint::handleCalculateSize(platformWindow->customMargins(), \
                msg, result);
-+    case QtWindows::NonClientHitTest:
-+        return platformWindow->handleNonClientHitTest(QPoint(msg.pt.x, msg.pt.y), \
                result);
-+    case QtWindows::GeometryChangingEvent:
-+        return platformWindow->QWindowsWindow::handleGeometryChanging(&msg);
-+    case QtWindows::ExposeEvent:
-+        return platformWindow->handleWmPaint(hwnd, message, wParam, lParam);
-+    case QtWindows::NonClientMouseEvent:
-+        if (platformWindow->frameStrutEventsEnabled())
-+            return sessionManagerInteractionBlocked() || \
d->m_mouseHandler.translateMouseEvent(platformWindow->window(), hwnd, et, msg, \
                result);
-+        break;
-+    case QtWindows::EnterSizeMoveEvent:
-+        platformWindow->setFlag(QWindowsWindow::ResizeMoveActive);
-+        return true;
-+    case QtWindows::ExitSizeMoveEvent:
-+        platformWindow->clearFlag(QWindowsWindow::ResizeMoveActive);
-+        platformWindow->checkForScreenChanged();
-+        return true;
-+    case QtWindows::ScrollEvent:
-+        return sessionManagerInteractionBlocked() || \
                d->m_mouseHandler.translateScrollEvent(platformWindow->window(), \
                hwnd, msg, result);
-+    case QtWindows::MouseWheelEvent:
-+    case QtWindows::MouseEvent:
-+    case QtWindows::LeaveEvent:
-+        {
-+            QWindow *window = platformWindow->window();
-+            while (window && (window->flags() & Qt::WindowTransparentForInput))
-+                window = window->parent();
-+            if (!window)
-+                return false;
-+            return sessionManagerInteractionBlocked() || \
                d->m_mouseHandler.translateMouseEvent(window, hwnd, et, msg, result);
-+        }
-+    case QtWindows::TouchEvent:
-+        return sessionManagerInteractionBlocked() || \
d->m_mouseHandler.translateTouchEvent(platformWindow->window(), hwnd, et, msg, \
                result);
-+    case QtWindows::FocusInEvent: // see QWindowsWindow::requestActivateWindow().
-+    case QtWindows::FocusOutEvent:
-+        handleFocusEvent(et, platformWindow);
-+        return true;
-+    case QtWindows::ShowEventOnParentRestoring: // QTBUG-40696, prevent Windows \
                from re-showing hidden transient children (dialogs).
-+        if (!platformWindow->window()->isVisible()) {
-+            *result = 0;
-+            return true;
-+        }
-+        break;
-+    case QtWindows::HideEvent:
-+        platformWindow->handleHidden();
-+        return false;// Indicate transient children should be hidden by windows \
                (SW_PARENTCLOSING)
-+    case QtWindows::CloseEvent:
-+        QWindowSystemInterface::handleCloseEvent(platformWindow->window());
-+        return true;
-+    case QtWindows::ThemeChanged: {
-+        // Switch from Aero to Classic changes margins.
-+        if (QWindowsTheme *theme = QWindowsTheme::instance())
-+            theme->windowsThemeChanged(platformWindow->window());
-+        return true;
-+    }
-+    case QtWindows::CompositionSettingsChanged:
-+        platformWindow->handleCompositionSettingsChanged();
-+        return true;
-+    case QtWindows::ActivateWindowEvent:
-+        if (platformWindow->window()->flags() & Qt::WindowDoesNotAcceptFocus) {
-+            *result = LRESULT(MA_NOACTIVATE);
-+            return true;
-+        }
-+#if QT_CONFIG(tabletevent)
-+        if (!d->m_tabletSupport.isNull())
-+            d->m_tabletSupport->notifyActivate();
-+#endif // QT_CONFIG(tabletevent)
-+        if (platformWindow->testFlag(QWindowsWindow::BlockedByModal))
-+            if (const QWindow *modalWindow = QGuiApplication::modalWindow()) {
-+                QWindowsWindow *platformWindow = \
                QWindowsWindow::windowsWindowOf(modalWindow);
-+                Q_ASSERT(platformWindow);
-+                platformWindow->alertWindow();
-+            }
-+        break;
-+    case QtWindows::MouseActivateWindowEvent:
-+        if (platformWindow->window()->flags() & Qt::WindowDoesNotAcceptFocus) {
-+            *result = LRESULT(MA_NOACTIVATE);
-+            return true;
-+        }
-+        break;
-+#ifndef QT_NO_CONTEXTMENU
-+    case QtWindows::ContextMenu:
-+        return handleContextMenuEvent(platformWindow->window(), msg);
-+#endif
-+    case QtWindows::WhatsThisEvent: {
-+#ifndef QT_NO_WHATSTHIS
-+        QWindowSystemInterface::handleEnterWhatsThisEvent();
-+        return true;
-+#endif
-+    }   break;
-+    case QtWindows::DpiChangedEvent: {
-+        if (!resizeOnDpiChanged(platformWindow->window()))
-+            return false;
-+        platformWindow->setFlag(QWindowsWindow::WithinDpiChanged);
-+        const RECT *prcNewWindow = reinterpret_cast<RECT *>(lParam);
-+        SetWindowPos(hwnd, NULL, prcNewWindow->left, prcNewWindow->top,
-+                     prcNewWindow->right - prcNewWindow->left,
-+                     prcNewWindow->bottom - prcNewWindow->top, SWP_NOZORDER | \
                SWP_NOACTIVATE);
-+        platformWindow->clearFlag(QWindowsWindow::WithinDpiChanged);
-+        return true;
-+    }
-+#if QT_CONFIG(sessionmanager)
-+    case QtWindows::QueryEndSessionApplicationEvent: {
-+        QWindowsSessionManager *sessionManager = platformSessionManager();
-+        if (sessionManager->isActive()) { // bogus message from windows
-+            *result = sessionManager->wasCanceled() ? 0 : 1;
-+            return true;
-+        }
-+
-+        sessionManager->setActive(true);
-+        sessionManager->blocksInteraction();
-+        sessionManager->clearCancellation();
-+
-+        QGuiApplicationPrivate *qGuiAppPriv = \
                static_cast<QGuiApplicationPrivate*>(QObjectPrivate::get(qApp));
-+        qGuiAppPriv->commitData();
-+
-+        if (lParam & ENDSESSION_LOGOFF)
-+            fflush(NULL);
-+
-+        *result = sessionManager->wasCanceled() ? 0 : 1;
-+        return true;
-+    }
-+    case QtWindows::EndSessionApplicationEvent: {
-+        QWindowsSessionManager *sessionManager = platformSessionManager();
-+
-+        sessionManager->setActive(false);
-+        sessionManager->allowsInteraction();
-+        const bool endsession = wParam != 0;
-+
-+        // we receive the message for each toplevel window included internal hidden \
                ones,
-+        // but the aboutToQuit signal should be emitted only once.
-+        QGuiApplicationPrivate *qGuiAppPriv = \
                static_cast<QGuiApplicationPrivate*>(QObjectPrivate::get(qApp));
-+        if (endsession && !qGuiAppPriv->aboutToQuitEmitted) {
-+            qGuiAppPriv->aboutToQuitEmitted = true;
-+            int index = \
                QGuiApplication::staticMetaObject.indexOfSignal("aboutToQuit()");
-+            qApp->qt_metacall(QMetaObject::InvokeMetaMethod, index,0);
-+            // since the process will be killed immediately quit() has no real \
                effect
-+            QGuiApplication::quit();
-+        }
-+        return true;
-+    }
-+#endif // !defined(QT_NO_SESSIONMANAGER)
-+    default:
-+        break;
-+    }
-+    return false;
-+}
-+
-+/* Compress activation events. If the next focus window is already known
-+ * at the time the current one receives focus-out, pass that to
-+ * QWindowSystemInterface instead of sending 0 and ignore its consecutive
-+ * focus-in event.
-+ * This helps applications that do handling in focus-out events. */
-+void QWindowsContext::handleFocusEvent(QtWindows::WindowsEventType et,
-+                                       QWindowsWindow *platformWindow)
-+{
-+    QWindow *nextActiveWindow = 0;
-+    if (et == QtWindows::FocusInEvent) {
-+        QWindow *topWindow = QWindowsWindow::topLevelOf(platformWindow->window());
-+        QWindow *modalWindow = 0;
-+        if (QGuiApplicationPrivate::instance()->isWindowBlocked(topWindow, \
                &modalWindow) && topWindow != modalWindow) {
-+            modalWindow->requestActivate();
-+            return;
-+        }
-+        // QTBUG-32867: Invoking WinAPI SetParent() can cause focus-in for the
-+        // window which is not desired for native child widgets.
-+        if (platformWindow->testFlag(QWindowsWindow::WithinSetParent)) {
-+            QWindow *currentFocusWindow = QGuiApplication::focusWindow();
-+            if (currentFocusWindow && currentFocusWindow != \
                platformWindow->window()) {
-+                currentFocusWindow->requestActivate();
-+                return;
-+            }
-+        }
-+        nextActiveWindow = platformWindow->window();
-+    } else {
-+        // Focus out: Is the next window known and different
-+        // from the receiving the focus out.
-+        if (const HWND nextActiveHwnd = GetFocus())
-+            if (QWindowsWindow *nextActivePlatformWindow = \
                findClosestPlatformWindow(nextActiveHwnd))
-+                if (nextActivePlatformWindow != platformWindow)
-+                    nextActiveWindow = nextActivePlatformWindow->window();
-+    }
-+    if (nextActiveWindow != d->m_lastActiveWindow) {
-+         d->m_lastActiveWindow = nextActiveWindow;
-+         QWindowSystemInterface::handleWindowActivated(nextActiveWindow);
-+    }
-+}
-+
-+#ifndef QT_NO_CONTEXTMENU
-+bool QWindowsContext::handleContextMenuEvent(QWindow *window, const MSG &msg)
-+{
-+    bool mouseTriggered = false;
-+    QPoint globalPos;
-+    QPoint pos;
-+    if (msg.lParam != int(0xffffffff)) {
-+        mouseTriggered = true;
-+        globalPos.setX(msg.pt.x);
-+        globalPos.setY(msg.pt.y);
-+        pos = QWindowsGeometryHint::mapFromGlobal(msg.hwnd, globalPos);
-+
-+        RECT clientRect;
-+        if (GetClientRect(msg.hwnd, &clientRect)) {
-+            if (pos.x() < clientRect.left || pos.x() >= clientRect.right ||
-+                pos.y() < clientRect.top || pos.y() >= clientRect.bottom)
-+            {
-+                // This is the case that user has right clicked in the window's \
                caption,
-+                // We should call DefWindowProc() to display a default shortcut \
                menu
-+                // instead of sending a Qt window system event.
-+                return false;
-+            }
-+        }
-+    }
-+
-+    QWindowSystemInterface::handleContextMenuEvent(window, mouseTriggered, pos, \
                globalPos,
-+                                                   \
                QWindowsKeyMapper::queryKeyboardModifiers());
-+    return true;
-+}
-+#endif
-+
-+bool QWindowsContext::asyncExpose() const
-+{
-+    return d->m_asyncExpose;
-+}
-+
-+void QWindowsContext::setAsyncExpose(bool value)
-+{
-+    d->m_asyncExpose = value;
-+}
-+
-+QTouchDevice *QWindowsContext::touchDevice() const
-+{
-+    return d->m_mouseHandler.touchDevice();
-+}
-+
-+static DWORD readDwordRegistrySetting(const wchar_t *regKey, const wchar_t *subKey, \
                DWORD defaultValue)
-+{
-+    DWORD result = defaultValue;
-+    HKEY handle;
-+    if (RegOpenKeyEx(HKEY_CURRENT_USER, regKey, 0, KEY_READ, &handle) == \
                ERROR_SUCCESS) {
-+        DWORD type;
-+        if (RegQueryValueEx(handle, subKey, 0, &type, 0, 0) == ERROR_SUCCESS && \
                type == REG_DWORD) {
-+            DWORD value;
-+            DWORD size = sizeof(result);
-+            if (RegQueryValueEx(handle, subKey, 0, 0, reinterpret_cast<unsigned \
                char *>(&value), &size) == ERROR_SUCCESS)
-+                result = value;
-+        }
-+        RegCloseKey(handle);
-+    }
-+    return result;
-+}
-+
-+DWORD QWindowsContext::readAdvancedExplorerSettings(const wchar_t *subKey, DWORD \
                defaultValue)
-+{
-+    return readDwordRegistrySetting(L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
                
-+                                    subKey, defaultValue);
-+}
-+
-+static inline bool isEmptyRect(const RECT &rect)
-+{
-+    return rect.right - rect.left == 0 && rect.bottom - rect.top == 0;
-+}
-+
-+static inline QMargins marginsFromRects(const RECT &frame, const RECT &client)
-+{
-+    return QMargins(client.left - frame.left, client.top - frame.top,
-+                    frame.right - client.right, frame.bottom - client.bottom);
-+}
-+
-+static RECT rectFromNcCalcSize(UINT message, WPARAM wParam, LPARAM lParam, int n)
-+{
-+    RECT result = {0, 0, 0, 0};
-+    if (message == WM_NCCALCSIZE && wParam)
-+        result = reinterpret_cast<const NCCALCSIZE_PARAMS *>(lParam)->rgrc[n];
-+    return result;
-+}
-+
-+static inline bool isMinimized(HWND hwnd)
-+{
-+    WINDOWPLACEMENT windowPlacement;
-+    windowPlacement.length = sizeof(WINDOWPLACEMENT);
-+    return GetWindowPlacement(hwnd, &windowPlacement) && windowPlacement.showCmd == \
                SW_SHOWMINIMIZED;
-+}
-+
-+static inline bool isTopLevel(HWND hwnd)
-+{
-+    return (GetWindowLongPtr(hwnd, GWL_STYLE) & WS_CHILD) == 0;
-+}
-+
-+/*!
-+    \brief Windows functions for actual windows.
-+
-+    There is another one for timers, sockets, etc in
-+    QEventDispatcherWin32.
-+
-+    \ingroup qt-lighthouse-win
-+*/
-+
-+extern "C" LRESULT QT_WIN_CALLBACK qWindowsWndProc(HWND hwnd, UINT message, WPARAM \
                wParam, LPARAM lParam)
-+{
-+    LRESULT result;
-+    const QtWindows::WindowsEventType et = windowsEventType(message, wParam, \
                lParam);
-+    QWindowsWindow *platformWindow = nullptr;
-+    const RECT ncCalcSizeFrame = rectFromNcCalcSize(message, wParam, lParam, 0);
-+    const bool handled = QWindowsContext::instance()->windowsProc(hwnd, message, \
                et, wParam, lParam, &result, &platformWindow);
-+    if (QWindowsContext::verbose > 1 && lcQpaEvents().isDebugEnabled()) {
-+        if (const char *eventName = \
                QWindowsGuiEventDispatcher::windowsMessageName(message)) {
-+            qCDebug(lcQpaEvents).nospace() << "EVENT: hwd=" << hwnd << ' ' << \
                eventName
-+                << " msg=0x" << hex << message << " et=0x" << et << dec << " wp="
-+                << int(wParam) << " at " << GET_X_LPARAM(lParam) << ','
-+                << GET_Y_LPARAM(lParam) << " handled=" << handled;
-+        }
-+    }
-+    if (!handled)
-+        result = DefWindowProc(hwnd, message, wParam, lParam);
-+
-+    // Capture WM_NCCALCSIZE on top level windows and obtain the window margins by
-+    // subtracting the rectangles before and after processing. This will correctly
-+    // capture client code overriding the message and allow for per-monitor margins
-+    // for High DPI (QTBUG-53255, QTBUG-40578).
-+    if (message == WM_NCCALCSIZE && !isEmptyRect(ncCalcSizeFrame) && \
                isTopLevel(hwnd) && !isMinimized(hwnd)) {
-+        const QMargins margins =
-+            marginsFromRects(ncCalcSizeFrame, rectFromNcCalcSize(message, wParam, \
                lParam, 0));
-+        if (margins.left() >= 0) {
-+            if (platformWindow) {
-+                platformWindow->setFrameMargins(margins);
-+            } else {
-+                const QSharedPointer<QWindowCreationContext> ctx = \
                QWindowsContext::instance()->windowCreationContext();
-+                if (!ctx.isNull())
-+                    ctx->margins = margins;
-+            }
-+        }
-+    }
-+    return result;
-+}
-+
-+
-+static inline QByteArray nativeEventType() { return \
                QByteArrayLiteral("windows_generic_MSG"); }
-+
-+// Send to QAbstractEventDispatcher
-+bool QWindowsContext::filterNativeEvent(MSG *msg, LRESULT *result)
-+{
-+    QAbstractEventDispatcher *dispatcher = QAbstractEventDispatcher::instance();
-+    long filterResult = 0;
-+    if (dispatcher && dispatcher->filterNativeEvent(nativeEventType(), msg, \
                &filterResult)) {
-+        *result = LRESULT(filterResult);
-+        return true;
-+    }
-+    return false;
-+}
-+
-+// Send to QWindowSystemInterface
-+bool QWindowsContext::filterNativeEvent(QWindow *window, MSG *msg, LRESULT *result)
-+{
-+    long filterResult = 0;
-+    if (QWindowSystemInterface::handleNativeEvent(window, nativeEventType(), &msg, \
                &filterResult)) {
-+        *result = LRESULT(filterResult);
-+        return true;
-+    }
-+    return false;
-+}
-+
-+QT_END_NAMESPACE
--- 
-2.17.1
-
diff --git a/3rdparty/ext_qt/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch \
b/3rdparty/ext_qt/gerrit-189539-ANGLE-mingw-fix.patch similarity index 86%
copy from 3rdparty/ext_qt/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch
copy to 3rdparty/ext_qt/gerrit-189539-ANGLE-mingw-fix.patch
index 629530cbc48..93bb2a47ea6 100644
--- a/3rdparty/ext_qt/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch
+++ b/3rdparty/ext_qt/gerrit-189539-ANGLE-mingw-fix.patch
@@ -1,16 +1,5 @@
-From 55100c8f5bb5d951fe20255ef99e02d26f5a8323 Mon Sep 17 00:00:00 2001
-From: Boudewijn Rempt <boud@valdyas.org>
-Date: Mon, 23 Jul 2018 11:53:53 +0200
-Subject: [PATCH 7/8] gerrit-189539-ANGLE-mingw-fix.patch
-
----
- qtbase/src/angle/src/common/common.pri | 16 +------
- qtbase/src/gui/configure.json          | 14 ++++--
- qtbase/src/gui/configure.pri           | 64 ++++++++++++++++++++------
- 3 files changed, 59 insertions(+), 35 deletions(-)
-
 diff --git a/qtbase/src/angle/src/common/common.pri \
                b/qtbase/src/angle/src/common/common.pri
-index c1fad1495..6a558a957 100644
+index c1fad14951..6a558a957b 100644
 --- a/qtbase/src/angle/src/common/common.pri
 +++ b/qtbase/src/angle/src/common/common.pri
 @@ -21,20 +21,6 @@ lib_replace.replace = \$\$\$\$[QT_INSTALL_LIBS]
@@ -36,10 +25,10 @@ index c1fad1495..6a558a957 100644
  
  static: DEFINES *= LIBGLESV2_EXPORT_H_ ANGLE_EXPORT=
 diff --git a/qtbase/src/gui/configure.json b/qtbase/src/gui/configure.json
-index 219385a10..41241597f 100644
+index 28c8034c75..77cfb6b592 100644
 --- a/qtbase/src/gui/configure.json
 +++ b/qtbase/src/gui/configure.json
-@@ -656,11 +656,14 @@
+@@ -615,11 +615,14 @@
              "label": "DirectX SDK",
              "type": "directX",
              "files": [
@@ -57,7 +46,7 @@ index 219385a10..41241597f 100644
          "egl-x11": {
              "label": "EGL on X11",
              "type": "compile",
-@@ -909,10 +912,11 @@
+@@ -842,10 +845,11 @@
          "angle": {
              "label": "ANGLE",
              "autoDetect": "features.opengles2 || features.opengl-dynamic",
@@ -72,7 +61,7 @@ index 219385a10..41241597f 100644
          },
          "angle_d3d11_qdtd": {
 diff --git a/qtbase/src/gui/configure.pri b/qtbase/src/gui/configure.pri
-index fcd2d1f73..39a5b987a 100644
+index aaffa835dc..566686b4f6 100644
 --- a/qtbase/src/gui/configure.pri
 +++ b/qtbase/src/gui/configure.pri
 @@ -15,22 +15,12 @@ defineTest(qtConfLibrary_freetype) {
@@ -138,7 +127,7 @@ index fcd2d1f73..39a5b987a 100644
 +                    }
 +                }
 +            }
-+       }
++        }
 +    }
 +
 +    !isEmpty(fxc):exists($$fxc) {
@@ -151,9 +140,6 @@ index fcd2d1f73..39a5b987a 100644
 +    return(false)
 +}
 +
- defineTest(qtConfTest_qpaDefaultPlatform) {
-     name =
-     !isEmpty(config.input.qpa_default_platform): name = \
                $$config.input.qpa_default_platform
--- 
-2.17.1
-
+ defineTest(qtConfTest_xkbConfigRoot) {
+     qtConfTest_getPkgConfigVariable($${1}): return(true)
+ 
diff --git a/3rdparty/ext_qt/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch \
b/3rdparty/ext_qt/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch index \
                629530cbc48..ff9ddf96e14 100644
--- a/3rdparty/ext_qt/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch
+++ b/3rdparty/ext_qt/gerrit-212811_qtbase-angle-d3d11-warp-crash-fix.patch
@@ -1,159 +1,50 @@
-From 55100c8f5bb5d951fe20255ef99e02d26f5a8323 Mon Sep 17 00:00:00 2001
-From: Boudewijn Rempt <boud@valdyas.org>
-Date: Mon, 23 Jul 2018 11:53:53 +0200
-Subject: [PATCH 7/8] gerrit-189539-ANGLE-mingw-fix.patch
+commit 644ff9428853f138649de0419de4b49bf41bc738
+Author: Oliver Wolff <oliver.wolff@qt.io>
+Date:   Tue Nov 28 13:30:52 2017 +0100
 
----
- qtbase/src/angle/src/common/common.pri | 16 +------
- qtbase/src/gui/configure.json          | 14 ++++--
- qtbase/src/gui/configure.pri           | 64 ++++++++++++++++++++------
- 3 files changed, 59 insertions(+), 35 deletions(-)
+    ANGLE: D3D11: Fix shared handle support detection for WARP when MinGW is used
+    
+    The MinGW version we support supports IsWindows8OrGreater so that we can
+    check the windows version properly. As the OpenGL detection falls back
+    to WARP in case of RDP it was possible, that shared handles were wrongly
+    stated as supported, which caused crashes in users' code.
+    
+    Task-number: QTBUG-64657
+    Change-Id: Iaca2bd169f2764cf6ec68a1d36112a735246b29a
+    Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
+    Reviewed-by: Andy Shaw <andy.shaw@qt.io>
+    (cherry picked from commit 6508fdca1dcc7105947befadba272d0fd4bbc27f)
 
-diff --git a/qtbase/src/angle/src/common/common.pri \
                b/qtbase/src/angle/src/common/common.pri
-index c1fad1495..6a558a957 100644
---- a/qtbase/src/angle/src/common/common.pri
-+++ b/qtbase/src/angle/src/common/common.pri
-@@ -21,20 +21,6 @@ lib_replace.replace = \$\$\$\$[QT_INSTALL_LIBS]
- lib_replace.CONFIG = path
- QMAKE_PRL_INSTALL_REPLACE += lib_replace
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp \
b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp +index \
0173311bc6..5118bdbe9c 100644 +--- \
a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp ++++ \
b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.cpp +@@ -2645,7 \
+2645,7 @@ bool Renderer11::getShareHandleSupport() const  
--# DirectX is included in the Windows 8 Kit, but everything else requires the DX \
                SDK.
--winrt|msvc {
--    FXC = fxc.exe
--} else {
--    DX_DIR = $$(DXSDK_DIR)
--    isEmpty(DX_DIR) {
--        error("Cannot determine DirectX SDK location. Please set DXSDK_DIR \
                environment variable.")
--    }
--
--    equals(QMAKE_TARGET.arch, x86_64) {
--        FXC = \"$${DX_DIR}Utilities\\bin\\x64\\fxc.exe\"
--    } else {
--        FXC = \"$${DX_DIR}Utilities\\bin\\x86\\fxc.exe\"
--    }
--}
-+FXC = $$QMAKE_FXC_LOCATION
- 
- static: DEFINES *= LIBGLESV2_EXPORT_H_ ANGLE_EXPORT=
-diff --git a/qtbase/src/gui/configure.json b/qtbase/src/gui/configure.json
-index 219385a10..41241597f 100644
---- a/qtbase/src/gui/configure.json
-+++ b/qtbase/src/gui/configure.json
-@@ -656,11 +656,14 @@
-             "label": "DirectX SDK",
-             "type": "directX",
-             "files": [
--                "d3dcompiler.h",
--                "d3d11.lib",
--                "fxc.exe"
-+                "d3dcompiler.h"
-             ]
-         },
-+        "fxc": {
-+            "label": "DirectX Shader Compiler",
-+            "type": "fxc",
-+            "log": "value"
-+        },
-         "egl-x11": {
-             "label": "EGL on X11",
-             "type": "compile",
-@@ -909,10 +912,11 @@
-         "angle": {
-             "label": "ANGLE",
-             "autoDetect": "features.opengles2 || features.opengl-dynamic",
--            "condition": "config.win32 && tests.directx",
-+            "condition": "config.win32 && tests.directx && tests.fxc",
-             "output": [
-                 "publicFeature",
--                { "type": "define", "name": "QT_OPENGL_ES_2_ANGLE" }
-+                { "type": "define", "name": "QT_OPENGL_ES_2_ANGLE" },
-+                { "type": "varAssign", "name": "QMAKE_FXC_LOCATION", "value": \
                "tests.fxc.value" }
-             ]
-         },
-         "angle_d3d11_qdtd": {
-diff --git a/qtbase/src/gui/configure.pri b/qtbase/src/gui/configure.pri
-index fcd2d1f73..39a5b987a 100644
---- a/qtbase/src/gui/configure.pri
-+++ b/qtbase/src/gui/configure.pri
-@@ -15,22 +15,12 @@ defineTest(qtConfLibrary_freetype) {
-     return(true)
- }
- 
--# Check for Direct X SDK (include, lib, and direct shader compiler 'fxc').
--# Up to Direct X SDK June 2010 and for MinGW, this is pointed to by the
--# DXSDK_DIR variable. Starting with Windows Kit 8, it is included in
--# the Windows SDK. Checking for the header is not sufficient, since it
--# is also present in MinGW.
-+# For MSVC everything DirectX related is included in Windows Kit >= 8,
-+# so we do not do any magic in this case.
-+# For MinGW we need the shader compiler (fxc.exe), which
-+# are not part of MinGW. They can either be obtained from a DirectX SDK
-+# (keep the old approach working) or Windows Kit (>= 8).
- defineTest(qtConfTest_directX) {
--    dxdir = $$getenv("DXSDK_DIR")
--    !isEmpty(dxdir) {
--        EXTRA_INCLUDEPATH += $$dxdir/include
--        equals(QT_ARCH, x86_64): \
--            EXTRA_LIBDIR += $$dxdir/lib/x64
--        else: \
--            EXTRA_LIBDIR += $$dxdir/lib/x86
--        EXTRA_PATH += $$dxdir/Utilities/bin/x86
--    }
--
-     $$qtConfEvaluate("features.sse2") {
-         ky = $$size($${1}.files._KEYS_)
-         $${1}.files._KEYS_ += $$ky
-@@ -42,6 +32,50 @@ defineTest(qtConfTest_directX) {
-     return(false)
- }
- 
-+defineTest(qtConfTest_fxc) {
-+    !mingw {
-+        fxc = $$qtConfFindInPath("fxc.exe")
-+    } else {
-+        dxdir = $$getenv("DXSDK_DIR")
-+        winkitdir = $$getenv("WindowsSdkDir")
-+        !isEmpty(dxdir) {
-+            equals(QT_ARCH, x86_64): \
-+                fxc = $$dxdir/Utilities/bin/x64/fxc.exe
-+            else: \
-+                fxc = $$dxdir/Utilities/bin/x86/fxc.exe
-+        } else: !isEmpty(winkitdir) {
-+            equals(QT_ARCH, x86_64): \
-+                fxc = $$winkitdir/bin/x64/fxc.exe
-+            else: \
-+                fxc = $$winkitdir/bin/x86/fxc.exe
-+
-+            !exists($$fxc) {
-+                binsubdirs = $$files($$winkitdir/bin/*)
-+                for (dir, binsubdirs) {
-+                    equals(QT_ARCH, x86_64): \
-+                        finalBinDir = $$dir/x64
-+                    else: \
-+                        finalBinDir = $$dir/x86
-+
-+                    fxc = $${finalBinDir}/fxc.exe
-+                    exists($$fxc) {
-+                        break()
-+                    }
-+                }
-+            }
-+       }
-+    }
-+
-+    !isEmpty(fxc):exists($$fxc) {
-+        $${1}.value = $$fxc
-+        export($${1}.value)
-+        $${1}.cache += value
-+        export($${1}.cache)
-+        return(true)
-+    }
-+    return(false)
-+}
-+
- defineTest(qtConfTest_qpaDefaultPlatform) {
-     name =
-     !isEmpty(config.input.qpa_default_platform): name = \
                $$config.input.qpa_default_platform
--- 
-2.17.1
-
+     if (deviceType == d3d11::ANGLE_D3D11_DEVICE_TYPE_WARP)
+     {
+-#if !defined(ANGLE_ENABLE_WINDOWS_STORE) && !defined(__GNUC__)
++#ifndef ANGLE_ENABLE_WINDOWS_STORE
+         if (!IsWindows8OrGreater())
+         {
+             // WARP on Windows 7 doesn't support shared handles
+diff --git a/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch \
b/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch +index \
dc091b0497..f42ff2141b 100644 +--- \
a/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch ++++ \
b/src/angle/patches/0002-ANGLE-Fix-compilation-with-MinGW.patch +@@ -405,15 +405,6 @@ \
index ea84783..62badcc 100644 +  
+      if (mD3d11Module)
+      {
+-@@ -2618,7 +2642,7 @@ bool Renderer11::getShareHandleSupport() const
+- 
+-     if (deviceType == d3d11::ANGLE_D3D11_DEVICE_TYPE_WARP)
+-     {
+--#ifndef ANGLE_ENABLE_WINDOWS_STORE
+-+#if !defined(ANGLE_ENABLE_WINDOWS_STORE) && !defined(__GNUC__)
+-         if (!IsWindows8OrGreater())
+-         {
+-             // WARP on Windows 7 doesn't support shared handles
+ diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h \
b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h + index \
62e9816..b4e7761 100644 + --- \
                a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Renderer11.h
diff --git a/3rdparty/ext_qt/mac-default.patch b/3rdparty/ext_qt/mac-default.patch
new file mode 100644
index 00000000000..016240c48c4
--- /dev/null
+++ b/3rdparty/ext_qt/mac-default.patch
@@ -0,0 +1,11 @@
+--- old/default_pre.prf	2016-06-10 02:48:56.000000000 -0400
++++ new/default_pre.prf	2016-09-21 02:39:08.000000000 -0400
+@@ -12,7 +12,7 @@
+         error("Xcode is not installed in $${QMAKE_XCODE_DEVELOPER_PATH}. Please use \
xcode-select to choose Xcode installation path.") + 
+     # Make sure Xcode is set up properly
+-    isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null"))): \
++    isEmpty($$list($$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null"))): \
+         error("Xcode not set up properly. You may need to confirm the license \
agreement by running /usr/bin/xcodebuild.") + }
+ 
diff --git a/3rdparty/ext_qt/mac_standardpaths_qtbug-61159.diff \
b/3rdparty/ext_qt/mac_standardpaths_qtbug-61159.diff new file mode 100644
index 00000000000..b0a33ed8337
--- /dev/null
+++ b/3rdparty/ext_qt/mac_standardpaths_qtbug-61159.diff
@@ -0,0 +1,59 @@
+diff --git a/src/corelib/io/qstandardpaths_mac.mm \
b/src/corelib/io/qstandardpaths_mac.mm +index e25339a..3bb7a78 100644
+--- a/src/corelib/io/qstandardpaths_mac.mm
++++ b/src/corelib/io/qstandardpaths_mac.mm
+@@ -196,42 +196,31 @@
+              it != masks.end(); ++it) {
+             const QString path = baseWritableLocation(type, *it, true);
+             if (!path.isEmpty() && !dirs.contains(path))
+                 dirs.append(path);
+         }
+     }
+ 
+     if (type == AppDataLocation || type == AppLocalDataLocation) {
+         CFBundleRef mainBundle = CFBundleGetMainBundle();
+         if (mainBundle) {
+-            CFURLRef bundleUrl = CFBundleCopyBundleURL(mainBundle);
+-            CFStringRef cfBundlePath = CFURLCopyFileSystemPath(bundleUrl, \
kCFURLPOSIXPathStyle); +-            QString bundlePath = \
QString::fromCFString(cfBundlePath); +-            CFRelease(cfBundlePath);
+-            CFRelease(bundleUrl);
+-
+-            CFURLRef resourcesUrl = CFBundleCopyResourcesDirectoryURL(mainBundle);
+-            CFStringRef cfResourcesPath = CFURLCopyFileSystemPath(resourcesUrl,
+-                kCFURLPOSIXPathStyle);
+-            QString resourcesPath = QString::fromCFString(cfResourcesPath);
+-            CFRelease(cfResourcesPath);
+-            CFRelease(resourcesUrl);
+-
+-            // Handle bundled vs unbundled executables. CFBundleGetMainBundle() \
returns +-            // a valid bundle in both cases. \
CFBundleCopyResourcesDirectoryURL() returns +-            // an absolute path for \
unbundled executables. +-            if (resourcesPath.startsWith(QLatin1Char('/')))
+-                dirs.append(resourcesPath);
+-            else
+-                dirs.append(bundlePath + resourcesPath);
+-        }
+-    }
++            if (QCFType<CFURLRef> resourcesURL = \
CFBundleCopyResourcesDirectoryURL(mainBundle)) { ++                if \
(QCFType<CFURLRef> absoluteResouresURL = CFURLCopyAbsoluteURL(resourcesURL)) { ++     \
if (QCFType<CFStringRef> path = CFURLCopyFileSystemPath(absoluteResouresURL, ++       \
kCFURLPOSIXPathStyle)) { ++                        \
dirs.append(QString::fromCFString(path)); ++                    }
++                }
++            }
++        }
++    }
++
+     const QString localDir = writableLocation(type);
+     if (!localDir.isEmpty())
+         dirs.prepend(localDir);
+     return dirs;
+ }
+ 
+ #ifndef QT_BOOTSTRAPPED
+ QString QStandardPaths::displayName(StandardLocation type)
+ {
+     // Use "Home" instead of the user's Unix username
+
diff --git a/3rdparty/ext_qt/macdeploy-qt.diff b/3rdparty/ext_qt/macdeploy-qt.diff
index 7c8dafcba1a..f871cff882b 100644
--- a/3rdparty/ext_qt/macdeploy-qt.diff
+++ b/3rdparty/ext_qt/macdeploy-qt.diff
@@ -1,27 +1,22 @@
-From ce15361bb0f077267454216a8e7e0ccfa6b56020 Mon Sep 17 00:00:00 2001
-From: Boudewijn Rempt <boud@valdyas.org>
-Date: Mon, 23 Jul 2018 12:04:52 +0200
-Subject: [PATCH 8/8] macdeploy-qt.diff
+commit 26d6c76d5a51504ebabec5f4ea2643069743f962
+Author: Boudewijn Rempt <boud@valdyas.org>
+Date:   Sat Nov 4 14:15:25 2017 +0100
 
----
- qttools/src/macdeployqt/macdeployqt/main.cpp | 16 ++++++-
- qttools/src/macdeployqt/shared/shared.cpp    | 47 ++++++++++++++++++++
- qttools/src/macdeployqt/shared/shared.h      |  1 +
- 3 files changed, 62 insertions(+), 2 deletions(-)
+    Fix macdeployqt
 
 diff --git a/qttools/src/macdeployqt/macdeployqt/main.cpp \
                b/qttools/src/macdeployqt/macdeployqt/main.cpp
-index 90a5412b2..537af266b 100644
+index 5488a5f..1e90c72 100644
 --- a/qttools/src/macdeployqt/macdeployqt/main.cpp
 +++ b/qttools/src/macdeployqt/macdeployqt/main.cpp
-@@ -54,6 +54,7 @@ int main(int argc, char **argv)
+@@ -53,6 +53,7 @@ int main(int argc, char **argv)
+         qDebug() << "   -codesign=<ident>  : Run codesign with the given identity \
                on all executables";
          qDebug() << "   -appstore-compliant: Skip deployment of components that use \
                private API";
          qDebug() << "   -libpath=<path>    : Add the given path to the library \
                search path";
-         qDebug() << "   -fs=<filesystem>   : Set the filesystem used for the .dmg \
disk image (defaults to HFS+)";  +        qDebug() << "   -extra-plugins=<d> : Deploy \
plugins from given extra directory";  qDebug() << "";
          qDebug() << "macdeployqt takes an application bundle as input and makes \
                it";
          qDebug() << "self-contained by copying in the Qt frameworks and plugins \
                that";
-@@ -96,6 +97,7 @@ int main(int argc, char **argv)
+@@ -94,6 +95,7 @@ int main(int argc, char **argv)
      extern QString codesignIdentiy;
      extern bool appstoreCompliant;
      extern bool deployFramework;
@@ -29,10 +24,10 @@ index 90a5412b2..537af266b 100644
  
      for (int i = 2; i < argc; ++i) {
          QByteArray argument = QByteArray(argv[i]);
-@@ -171,6 +173,13 @@ int main(int argc, char **argv)
-                 LogError() << "Missing filesystem type";
-             else
-                 filesystem = argument.mid(index+1);
+@@ -162,6 +164,14 @@ int main(int argc, char **argv)
+             LogDebug() << "Argument found:" << argument;
+             deployFramework = true;
+ 
 +         } else if (argument.startsWith(QByteArray("-extra-plugins"))) {
 +             LogDebug() << "Argument found:" << argument;
 +             int index = argument.indexOf('=');
@@ -40,10 +35,11 @@ index 90a5412b2..537af266b 100644
 +                 LogError() << "Missing extra plugins directory";
 +             else
 +                 extraPluginDirectories << argument.mid(index+1);
++
          } else if (argument.startsWith("-")) {
              LogError() << "Unknown argument" << argument << "\n";
              return 1;
-@@ -201,10 +210,13 @@ int main(int argc, char **argv)
+@@ -192,10 +202,13 @@ int main(int argc, char **argv)
          deploymentInfo.deployedFrameworks = \
deploymentInfo.deployedFrameworks.toSet().toList();  }
  
@@ -60,10 +56,10 @@ index 90a5412b2..537af266b 100644
      }
  
 diff --git a/qttools/src/macdeployqt/shared/shared.cpp \
                b/qttools/src/macdeployqt/shared/shared.cpp
-index bef3543dc..0e57d9063 100644
+index 9575090..477f7a0 100644
 --- a/qttools/src/macdeployqt/shared/shared.cpp
 +++ b/qttools/src/macdeployqt/shared/shared.cpp
-@@ -1130,6 +1130,43 @@ void deployPlugins(const ApplicationBundleInfo \
&appBundleInfo, const QString &pl +@@ -1120,6 +1120,43 @@ void deployPlugins(const \
ApplicationBundleInfo &appBundleInfo, const QString &pl  }
  }
  
@@ -107,7 +103,7 @@ index bef3543dc..0e57d9063 100644
  void createQtConf(const QString &appBundlePath)
  {
      // Set Plugins and imports paths. These are relative to App.app/Contents.
-@@ -1171,6 +1208,16 @@ void deployPlugins(const QString &appBundlePath, \
DeploymentInfo deploymentInfo, +@@ -1161,6 +1198,16 @@ void deployPlugins(const \
                QString &appBundlePath, DeploymentInfo deploymentInfo,
      deployPlugins(applicationBundle, deploymentInfo.pluginPath, \
pluginDestinationPath, deploymentInfo, useDebugLibs);  }
  
@@ -125,7 +121,7 @@ index bef3543dc..0e57d9063 100644
  {
      QString importDestinationPath = appBundlePath + "/Contents/Resources/qml/" + \
importName;  diff --git a/qttools/src/macdeployqt/shared/shared.h \
                b/qttools/src/macdeployqt/shared/shared.h
-index c4d60ea0a..0b8d576fe 100644
+index c173846..cceac3a 100644
 --- a/qttools/src/macdeployqt/shared/shared.h
 +++ b/qttools/src/macdeployqt/shared/shared.h
 @@ -116,6 +116,7 @@ DeploymentInfo deployQtFrameworks(const QString &appBundlePath, \
const QStringLis @@ -136,6 +132,3 @@ index c4d60ea0a..0b8d576fe 100644
  bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInfo, \
QStringList &qmlDirs);  void changeIdentification(const QString &id, const QString \
&binaryPath);  void changeInstallName(const QString &oldName, const QString &newName, \
                const QString &binaryPath);
--- 
-2.17.1
-
diff --git a/3rdparty/ext_qt/qopengldebug-gles.patch \
b/3rdparty/ext_qt/qopengldebug-gles.patch index 8242ccbbfdb..448364ebbf4 100644
--- a/3rdparty/ext_qt/qopengldebug-gles.patch
+++ b/3rdparty/ext_qt/qopengldebug-gles.patch
@@ -1,14 +1,5 @@
-From 6f5a3165c03e285690e37fbcbeabe5fc16c5b932 Mon Sep 17 00:00:00 2001
-From: Boudewijn Rempt <boud@valdyas.org>
-Date: Mon, 23 Jul 2018 11:51:38 +0200
-Subject: [PATCH 6/8] qopengldebug-gles.patch
-
----
- qtbase/src/gui/opengl/qopengldebug.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
 diff --git a/qtbase/src/gui/opengl/qopengldebug.cpp \
                b/qtbase/src/gui/opengl/qopengldebug.cpp
-index f6c3af37d..70bf7530e 100644
+index f6c3af37dd..70bf7530e1 100644
 --- a/qtbase/src/gui/opengl/qopengldebug.cpp
 +++ b/qtbase/src/gui/opengl/qopengldebug.cpp
 @@ -1413,7 +1413,7 @@ bool QOpenGLDebugLogger::initialize()
@@ -20,6 +11,3 @@ index f6c3af37d..70bf7530e 100644
      );
  
      GET_DEBUG_PROC_ADDRESS(glDebugMessageControl);
--- 
-2.17.1
-
diff --git a/3rdparty/ext_qt/qt-no-motion-compression.diff \
b/3rdparty/ext_qt/qt-no-motion-compression.diff new file mode 100644
index 00000000000..bac29953b99
--- /dev/null
+++ b/3rdparty/ext_qt/qt-no-motion-compression.diff
@@ -0,0 +1,20 @@
+diff --git a/qtbase/src/plugins/platforms/xcb/qxcbconnection.cpp \
b/qtbase/src/plugins/platforms/xcb/qxcbconnection.cpp +index 05c0224..8fa9345 100644
+--- a/qtbase/src/plugins/platforms/xcb/qxcbconnection.cpp
++++ b/qtbase/src/plugins/platforms/xcb/qxcbconnection.cpp
+@@ -1687,8 +1687,13 @@ void QXcbConnection::processXcbEvents()
+             continue;
+         }
+ 
+-        if (compressEvent(event, i, eventqueue))
+-            continue;
++
++        /**
++         * (Krita) Do *NOT* compress any motion events! This is the
++         * most weird thing one can do for a painting application!
++         */
++        // if (compressEvent(event, i, eventqueue))
++        //     continue;
+ 
+         bool accepted = false;
+         if (clipboard()->processIncr())
diff --git a/3rdparty/ext_qt/qtgui-private-headers.diff \
b/3rdparty/ext_qt/qtgui-private-headers.diff index 81cf1fd9e53..3e719feab61 100644
--- a/3rdparty/ext_qt/qtgui-private-headers.diff
+++ b/3rdparty/ext_qt/qtgui-private-headers.diff
@@ -1,31 +1,12 @@
-From 74271b0ebb277d51ed4baa70cfb1572acd7dae8d Mon Sep 17 00:00:00 2001
-From: Boudewijn Rempt <boud@valdyas.org>
-Date: Mon, 23 Jul 2018 11:43:18 +0200
-Subject: [PATCH 2/8] qtgui-private-headers.diff
-
----
- qtbase/mkspecs/features/create_cmake.prf | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
 diff --git a/qtbase/mkspecs/features/create_cmake.prf \
                b/qtbase/mkspecs/features/create_cmake.prf
-index 2ed708e08..b82393854 100644
+index 11fb52a..aec9ea9 100644
 --- a/qtbase/mkspecs/features/create_cmake.prf
 +++ b/qtbase/mkspecs/features/create_cmake.prf
-@@ -28,10 +28,10 @@ CMAKE_OUT_DIR = $$MODULE_BASE_OUTDIR/lib/cmake
- 
- CMAKE_MODULE_NAME = $$cmakeModuleName($${MODULE})
- 
--!generated_privates {
--    isEmpty(SYNCQT.INJECTED_PRIVATE_HEADER_FILES):isEmpty(SYNCQT.PRIVATE_HEADER_FILES): \
                \
--        CMAKE_NO_PRIVATE_INCLUDES = true
--}
-+#!generated_privates {
-+#    isEmpty(SYNCQT.INJECTED_PRIVATE_HEADER_FILES):isEmpty(SYNCQT.PRIVATE_HEADER_FILES): \
                \
-+#        CMAKE_NO_PRIVATE_INCLUDES = true
-+#}
+@@ -30,7 +30,6 @@ CMAKE_MODULE_NAME = $$cmakeModuleName($${MODULE})
  
  split_incpath {
      CMAKE_ADD_SOURCE_INCLUDE_DIRS = true
--- 
-2.17.1
-
+-    CMAKE_NO_PRIVATE_INCLUDES = true # Don't add private includes in the build dir \
which don't exist +     CMAKE_SOURCE_INCLUDES = \
+         $$cmakeTargetPaths($$QT_MODULE_INCLUDE_BASE \
$$QT_MODULE_INCLUDE_BASE/Qt$${CMAKE_MODULE_NAME}) +     CMAKE_SOURCE_PRIVATE_INCLUDES \
= \


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic