summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.9' into 5.11Liang Qi2018-02-1421-322/+278
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/corelib/animation/qvariantanimation.cpp src/corelib/global/qglobal.cpp src/corelib/global/qlogging.cpp src/corelib/io/qprocess_win.cpp src/corelib/json/qjsonarray.cpp src/corelib/tools/qsimd_p.h src/corelib/tools/qtimezoneprivate_p.h src/corelib/xml/qxmlstream_p.h src/gui/kernel/qsimpledrag.cpp src/gui/kernel/qsimpledrag_p.h src/plugins/generic/generic.pro src/plugins/platforms/cocoa/qcocoamenu.mm src/widgets/styles/qmacstyle_mac.mm tests/auto/concurrent/qtconcurrentmap/BLACKLIST tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp tests/auto/gui/kernel/qwindow/BLACKLIST tests/auto/widgets/dialogs/qmessagebox/BLACKLIST Change-Id: I508d686cf20f7f8cc6a7119b9bc7c3bbb505c58e
| * Fix build failure when QtNetwork module is not buildPasi Petäjäjärvi2018-02-131-1/+1
| | | | | | | | | | | | | | Affected plugins: tuiotouch, vnc Change-Id: Iabf72e3da0a25de0de2a861c69a29b3887ca81c3 Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
| * Make use of our egl convenience code for QNX QPAAdam Treat2018-02-089-295/+159
| | | | | | | | | | | | | | | | | | This fixes various problems that occur because the current egl context assumes OpenGL ES 2.0 and does not support newer versions of ES. Task-number: QTBUG-64306 Change-Id: I81466ba5cf028b47ca5a2ebcdc702167aff655a2 Reviewed-by: James McDonnell <jmcdonnell@blackberry.com>
| * macOS: fix menu positioning on high-DPIJ-P Nurmi2018-02-051-2/+4
| | | | | | | | | | | | | | | | | | | | | | The target position is passed in physical native pixels, so call QPlatformScreen::availableGeometry() and QPlatformWindow::mapToGlobal() instead of QScreen::availableSize() and QWindow::mapToGlobal(). The latter two operate on logical pixels. Task-number: QTBUG-55251 Change-Id: I281f47baee727bc0f4738fd6d6cdf12c9f462b0f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * Fix QXcbWindow::mapFrom/ToGlobal()J-P Nurmi2018-02-051-2/+2
| | | | | | | | | | | | | | | | | | | | Call the base class implementations to avoid returning an unmapped values for non-embedded windows. Task-number: QTBUG-55251 Change-Id: Ib05fd530498dd4d72d3d4ef37caf4e2f0ebcd2e4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
| * Fix window activation in QWindowsWindow::setCustomMargins()Dominik Haumann2018-02-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, code paths that call QWindowsWindow:setCustomMargins() automatically also activate the window (=give the window focus). The reason for this is the call of SetWindowPos (Windows API) without the flag SWP_NOACTIVATE. From the Windows API documentation about SetWindowPos() about the flag SWP_NOACTIVATE: Does not activate the window. If this flag is not set, the window is activated and moved to the top of either the topmost or non-topmost group (depending on the setting of the hWndInsertAfter parameter). It seems the flag SWP_NOACTIVATE is accidentally missing in the call of SetWindowPos() in setCustomMargins(), especially since the flag is present in pretty much all other calls of SetWindowPos(). The obvious fix is to add the flag SWP_NOACTIVATE to the call of SetWindowPos() in setCustomMargins(). So far, this issue exists for a long time, an was possibly introduced with commit f5fd5346038, where setCustomMargins() was initially added. Change-Id: Id3f058f8762df17eb3f033ab0b3e1791283937fc Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Fix QFileDialog::defaultSuffix on macOSNathan Collins2018-02-011-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't prepend the default suffix to the NSSavePanel allowedFileTypes. "If no extension is given by the user, the first item in the allowedFileTypes array will be used as the extension for the save panel." The user expects to get the suffix displayed to them in the drop down filter, not the default suffix set by the developer. Apply the default suffix if neither the user or the NSSavePanel provide a suffix. Task-number: QTBUG-66066 Change-Id: I64093b9f3178bd2377a7b65d6f23aed6214a4119 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
| * Check selection handles positionBogDan Vatra2018-01-271-6/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes the strange behavior when selecting text. This patch (on a Left To Right text) makes sure that: - the left handle will select text only on the left & above of the right handle - the right handle will select text only on the right & below of the left handle For RTL is way more complicated: - the left handle is acuatually the right handle but on the left side and it acts as a right handle - the right handle is acuatually the left handle but on the right side and it acts as a left handle Change-Id: Ifca591398103199d5aef479f0a080161c9f44c0e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
| * Android: Hide handler(s) if the cursor is not visible anymoreBogDan Vatra2018-01-271-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | On Android if the edit control is bigger than the remaining screen we resize it, this caused the handler(s) to remain outside the control. A better fix will be to ensure that the cursor/selection remains visible when the control is resized but I don't know if this is the desired behavior on all platforms. Task-number: QTBUG-62994 Task-number: QTBUG-58700 Change-Id: If43eb7bc1ecde426697694a8f26118e95fccb80c Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
| * Remove traces of Growl in QSystemTrayIcon code and documentationKonstantin Tokarev2018-01-261-2/+0
| | | | | | | | | | | | | | Growl support was removed in Qt 5.8. Change-Id: I00a36cd955194ca8ceee52841a89ca579da01284 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| * Android: Fix compilation with warnings-are-errorsEskil Abrahamsen Blomfeldt2018-01-261-1/+0
| | | | | | | | | | | | | | | | Variable was added in e2e874415e1f1c6a96915d9dc85dd31c61f73e24 but is not used anywhere. Change-Id: Iff1e7c20317bb489978eb77d24b8da12493d7e45 Reviewed-by: BogDan Vatra <bogdan@kdab.com>
| * Fix compilation with -no-feature-regularexpressionJoni Poikelin2018-01-251-4/+23
| | | | | | | | | | Change-Id: I4d213a266034d388af723337deeeb4cdd1f5cbdb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Cocoa: Explicitly hide popup windows when the application is hiddenAndy Shaw2018-01-251-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the application is hidden then Qt will hide the popup windows associated with it when it has lost the activation for the application. However, when it gets to this point it believes the popup windows to be hidden already due to the fact that the application itself is hidden. As a result, when the application is restored it causes a problem with the still visible popup window as it is taking the input events without responding to them. Therefore we need to explicitly hide the windows right before the application is hidden to ensure that they are actually hidden correctly. Task-number: QTBUG-58727 Change-Id: I4be1e1c0b1388d0c9ec872e7732185670998b7af Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
| * glx: Avoid losing the stereo flag in QSurfaceFormatLaszlo Agocs2018-01-231-0/+4
| | | | | | | | | | | | Task-number: QTBUG-59636 Change-Id: I38394009993e92ab9db853a1450687fc48e471f5 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
| * Support for Q_OS_ANDROID_EMBEDDED and android-embedded build flagsOtto Ryynänen2018-01-203-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | The Embedded Android build (Boot to Qt Android injection) is defined by having both Q_OS_ANDROID and Q_OS_ANDROID_EMBEDDED flags defined, as well as having Qt config android-embedded. This commit enables the possibility to build embedded Android builds. (i.e. Qt build for Android baselayer only, without JNI) Change-Id: I8406e959fdf1c8d9efebbbe53f1a391fa25f336a Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | macOS: Add more granular logging categories for window eventsTor Arne Vestbø2018-02-134-7/+11
| | | | | | | | | | Change-Id: I202e2cecfb5438ba9edc82efaf80b6ecebafb835 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* | winrt: Correctly check if mouse button was clickedOliver Wolff2018-02-121-1/+1
| | | | | | | | | | | | | | | | | | | | The idea behind this code was to check, whether no button was pressed. !isPressed only checks, whether XButton2 was pressed though. Change-Id: I358816fa62d230abf82116f0da7bc3a5e43fbaf6 Reviewed-by: Andre de la Rocha <andre.rocha@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* | winrt: Keep track of affected window for mouse eventsOliver Wolff2018-02-121-18/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | With the previous implementation mouseLeave events were broken as we did not remember, which window was initially affected by events and naturally there was no window under the mouse for these events. Now we save the currently affected window and use this information for leave events. Change-Id: I4036ce5e6621b507232d258dbb54c7f40a345899 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* | winrt: Fix mouse releases that happen outside a windowOliver Wolff2018-02-121-0/+6
| | | | | | | | | | | | | | | | | | | | If the mouse button is released outside of a window, we did not trigger a mouse release event. Task-number: QTBUG-66088 Change-Id: I3ef6234cc922c8c59ac3aa6350783fae4ba36bda Reviewed-by: Andre de la Rocha <andre.rocha@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* | winrt: mouse handling: Fix detection of affected windowOliver Wolff2018-02-121-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | With the previous implementation the detection of the affected window (windowAt which uses QWindow::geometry) only worked for the upper left quarter of the window, when used on a High DPI screen. As QWindow does not use native positions, the mouse cursor's position has to be mapped before checking the window under the mouse. Change-Id: I1a30b9669ec3e4c573cf83aed57c20d65675ff16 Reviewed-by: Andre de la Rocha <andre.rocha@qt.io> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
* | Windows QPA: Implement QPlatformWindow::startSystemMove()Alexander Volkov2018-02-112-0/+11
| | | | | | | | | | | | Task-number: QTBUG-58044 Change-Id: I15639d505683159b4cc31d762cb0bebbfc57e594 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Remove code paths for macOS < 10.11Jake Petroules2018-02-112-21/+1
| | | | | | | | | | | | | | Change-Id: I5ae02d88aa3dcd97d1f2ebf6255a68643e5d6daa Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* | Load Qt libs from Qt threadBogDan Vatra2018-02-111-55/+52
| | | | | | | | | | | | | | | | | | | | | | [ChangeLog][Android] The application and dependent Qt libraries are now loaded on the same thread as main() is run on, ensuring that global static initializers, constructor functions, and main() are all run on the same thread. The same applies during application shutdown, for destructors of global objects, and destructor functions. Change-Id: Id4bfece1ed2a0532ed2e8fb7d8ffd6e55d5a10dc Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* | Merge "Merge remote-tracking branch 'origin/dev' into 5.11" into ↵Jani Heikkinen2018-02-107-31/+95
|\ \ | | | | | | | | | refs/staging/5.11
| * \ Merge remote-tracking branch 'origin/dev' into 5.11Liang Qi2018-02-107-31/+95
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qvarlengtharray.qdoc src/corelib/tools/qvector.qdoc Resolved documentation changes in favor of 017569f702b6dd0, which keeps the move overloads along with its const-ref sibling. Change-Id: I0835b0b3211a418e5e50defc4cf315f0964fab79
| | * | Modernize logging in CoreFoundation and iOS event dispatchersTor Arne Vestbø2018-02-051-20/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of manually handling logging enablement, we use Qt's categorized logging system. Change-Id: I8d942601f76876030084c9fb130b7215ff6cc404 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * | Use new QString::remove(QLatin1String)Anton Kudryavtsev2018-02-051-1/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: I5b3560709a8fb230a177511c701fd0bf25938f0f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| | * | XCB: Implement native window dump for diaglibFriedemann Kleint2018-01-245-10/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extract a helper function to determine the window title from QXcbConnection and add an invokable function to the native interface that dumps the window tree similar to existing functionality on Windows. Change-Id: I5544d69ea2b801eb16d3b5b8d64021b3e567b0d8 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | | eglfs_kms_vsp2: Try to recover when failing in the middle of a blendJohan Klokkhammer Helsing2018-02-071-11/+6
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | Blending can fail if one of the input buffers is destroyed in the middle of the streaming operation. In that case, turn streaming off so blending can be attempted again after disabling the input. Change-Id: Id5c82b22a2ed0858ab20902395830efa0e64177d Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | eglfs_kms_vsp2: Add support for setting layer alphaJohan Klokkhammer Helsing2018-02-058-0/+54
| | | | | | | | | | | | | | | | | | | | | Exposed through QEglFSFunctions::vsp2SetLayerAlpha. Change-Id: I2a600971d5a2aa56d4bf7cde03df3323f17249cd Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | QPlatformWindow: add startSystemMove()Alexander Volkov2018-02-044-25/+41
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | It can be used by custom widgets or for example by the Breeze style from KDE, which allows to drag windows by some widgets. It's important on X11 because _NET_WM_MOVERESIZE requests induced by touch sequences require support from Qt. Task-number: QTBUG-58044 Change-Id: I31c37534555a9050cf361cad85bdef13c2808572 Reviewed-by: Johan Helsing <johan.helsing@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | QOffscreenIntegration: add missing overrideAnton Kudryavtsev2018-01-241-2/+2
| | | | | | | | | | Change-Id: I8165b44e28bd8da637e75e5b11bc429cdf2deb02 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Merge "Merge remote-tracking branch 'origin/5.10' into dev" into ↵Liang Qi2018-01-2113-63/+45
|\ \ | | | | | | | | | refs/staging/dev
| * \ Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-2013-63/+45
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp Change-Id: If089d5010d15c33b3c1f13912d4386207456c1a9
| | * | Merge remote-tracking branch 'origin/5.9' into 5.10Tor Arne Vestbø2018-01-169-47/+22
| | |\| | | | | | | | | | | | | Change-Id: I896b0cf54f317c4336cc3d3db319a0b89e421728
| | | * Merge remote-tracking branch 'origin/5.9.4' into 5.9Liang Qi2018-01-1110-47/+23
| | | |\ | | | | | | | | | | | | | | | Change-Id: Ic23e90146470d69060313628562f76a710696bab
| | | | * macOS: Namespace FullScreenProperty category on NSWindowTor Arne Vestbø2018-01-101-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I48e1bf91ebcfe10bd8b6a2df510c8b6a3e19e1d9 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| | | | * macOS: Simplify mangling of QNSPanelDelegate protocolTor Arne Vestbø2018-01-104-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: If29bc36ecab2feb4ce3372153d0d1566cdffc719 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| | | | * macOS: Namespace QNSWindowProtocol when building with -qtnamespaceTor Arne Vestbø2018-01-101-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise the protocol name might clash with existing protocols when using Qt as a plugin, and those existing protocols may have lived in images that since have been unloaded, causing crashes. Change-Id: I68fbe290bcbf2fabf463647c960f686971e066dd Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| | | | * macOS: Replace category methods with functionsPavol Markovic2018-01-104-42/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Objective-C category methods prohibit safe unloading of dynamic libraries / plugins statically linked to Qt. Although they can be called in convenient way they can be replaced with standalone functions without noticeable drawback. Remove unused qt_validModesForFontPanel category method. Remove empty NSStatusItem (Qt) category. Task-number: QTBUG-59884 Change-Id: I69503a115b1177623da91c67b62d72e56f43ffcf Reviewed-by: Jake Petroules <jake.petroules@qt.io>
| | * | | macOS: Copy QNSWindowProtocol without referencing it by nameTor Arne Vestbø2018-01-151-10/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The protocol may be namespaced, in which case the string lookup would fail, so we iterate the protocols of QNSWindow instead (of which there is only one, QNSWindowProtocol). Change-Id: Ic45752c9e3a40f5d42ec82c4287402a3d7a47b09 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
| | * | | XCB: Replace qDebug with qCDebugOrgad Shaneh2018-01-153-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: I984c3e3288aa4d0b7185ea88ae0c4cf4627a2da3 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* | | | | Windows QPA: Avoid 'large' mouse cursors over RDPFrank Richter2018-01-211-1/+13
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On some combinations of RDP client and server a large mouse cursor results in a hang of the RDP session. However, the 'touch' drag facility (creating a transparent window) works just fine, so use that when encountering a large cursor on RDP. (The threshold of 96 for a 'large' cursor was extracted from the spec, as that is the largest supported size mentioned.) Change-Id: I9782c45e8bd6640f36bb5a392961681a99e214e6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | | | eglfs/kms : implement nativeResourceForScreenLionel CHAZALLON2018-01-202-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This will return the crtc_id for the given screen. Change-Id: Ia4510a730e2d98c705f382644e2ab5a432612c02 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | | eglfs: Forward nativeRes.ForScreen.() to backendsLionel CHAZALLON2018-01-203-2/+10
| | | | | | | | | | | | | | | | | | | | Change-Id: I928f97483806ee74ca844941eed455ff4f9d9508 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | | Cocoa: Prevent crash on focusObjectChanged()Morten Johan Sørvig2018-01-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don’t crash on focusObjectChanged to a QWindow with a null QPlatformWindow. Change-Id: Ibf426521d6c8f8b2b2e94d5b92020fa510a74133 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | | | Cocoa: Use the whole geometry when in fullscreen mode for popup menusAndy Shaw2018-01-161-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When in full screen, then the geometry available is the whole screen not including the menubar or dock area. This ensures that it does not leave space for the dock area. Task-number: QTBUG-39403 Change-Id: I15d7b7764d83282e1ee057628680a338b72711a6 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* | | | Add missing dead key symbolsMatt Whitlock2018-01-152-5/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt was missing symbols for many dead keys defined in <X11/keysymdef.h>. These dead keys were thus ignored by the "compose" input module. This commit adds the missing dead key symbols. [ChangeLog][Linux/XCB] Added missing dead key symbols, enabling their use with the "compose" input module. Task-number: QTBUG-56452 Change-Id: Ib5c37168990c9d9fa99fdd50f63b934c793e8dc4 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io> Reviewed-by: Matt Whitlock <qt@mattwhitlock.name>
* | | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-1115-189/+269
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/harfbuzz-ng/src/hb-private.hh src/sql/doc/snippets/code/doc_src_sql-driver.cpp src/sql/doc/src/sql-driver.qdoc Change-Id: I38f0e82fcd37926cbf3c1915e009a731040d4598
| * | | Fix license headersJani Heikkinen2018-01-1113-182/+260
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove usage of outdated header.LGPL21 and replace those with proper one (header.LGPL in src, header.GPL-EXCEPT in tests) Change-Id: Ia4d1c0d84b77f09787fe7c30670747a1fe2aff29 Reviewed-by: Liang Qi <liang.qi@qt.io>