aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* QML: Only release types if they aren't referenced anymorev5.7.0Ulf Hermann2016-06-111-1/+2
| | | | | | | | | | | Just checking for references on m_compiledData is not enough. The actual component can also be referenced. Thus it won't be deleted on release(), but cannot be found in the type cache anymore. Task-number: QTBUG-53761 (cherry picked from commit 2ac19881f92c94f4e9427bd9ff513210675f259e) Change-Id: If254d5bca1f41ec948ec1438df0d37bf8d531bdf Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.6.1' into 5.7.0" into ↵Jani Heikkinen2016-05-241-0/+5
|\ | | | | | | refs/staging/5.7.0
| * Merge remote-tracking branch 'origin/5.6.1' into 5.7.0Liang Qi2016-05-231-0/+5
| |\ | | | | | | | | | Change-Id: I5c636ff0d203747bad88c57abec176dec34deb47
| | * Workaround for crashes in QtQml code relating to null this pointersv5.6.1Thiago Macieira2016-05-201-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When compiled in release mode with GCC 6, QtQml crashes. This option gets works around the issue by instructing the compiler not to delete null pointer checks for pointers that the standard says cannot be null, yet apparently are. This is a temporary workaround until a proper solution is found. Change-Id: Id3aab65533904562a6cbfffd14501a185fc91179 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | | Fix QQuickItem change listenersJ-P Nurmi2016-05-242-39/+45
|/ / | | | | | | | | | | | | | | | | | | | | All listeners should get invoked, even if they remove themselves while iterating the listeners. An index-based loop would skip the next listener in the list. This change replaces the QPODVector with a QVector, so we can make a cheap copy before iterating the listeners. Change-Id: I2430b3763184a40ad1c5c3a68d36fecafcadb3ee Task-number: QTBUG-53453 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | V4: allow inlining of ExecutionEngine::{qml,js}Engine()Erik Verbruggen2016-05-2034-17/+49
| | | | | | | | | | | | | | | | All other changes are just to be able to include qv8engine_p.h in qv4engine_p.h Change-Id: I71ba2ec42cdc20d5c7d97a74b99b4d1ada1a5ed8 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | V4: create a fast-path for QObjectWrapper::wrapErik Verbruggen2016-05-202-5/+21
| | | | | | | | | | | | | | | | | | The typical case is that there's already a QQmlData for a QObject, so fast-path this, and fall back to the general case if there is none (or it is deleted, etc.) Change-Id: I00c890e5fe7abdd743c4e99316a7ce93eb3db9df Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Always use ::copysign instead of std::copysign where availableRalf Nolden2016-05-201-8/+0
| | | | | | | | | | | | | | | | | | | | Change to remove the Q_OS_ANDROID define for using ::copysign there instead of std::copysign as other systems are affected as well (FreeBSD 9.3 with gcc 4.8 in particular). The distinction does cause more problems than simply using ::copysign everywhere. Change-Id: I1fe42fdee9c1c1bbb3e5930573ff29c600dfb5e0 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | Don't render when width is zero and elide is not NoneKari Hautamäki2016-05-201-0/+5
| | | | | | | | | | | | | | | | | | Works now similarly as with very small text lengths (smaller than elide characted length). Change-Id: I0c4aafbcc50343bb0ec8b5f335045e1048a499fd Task-number: QTBUG-34990 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
* | Fix compiler warnings.Erik Verbruggen2016-05-201-34/+35
| | | | | | | | | | | | | | | | | | | | Fixed a whole bunch of the following warnings: warning: 'interface_cast' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] Change-Id: I6cd6c16a6465d23e5e7c61d04ba87652df727bc1 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-05-1924-185/+117
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/qmltooling/qmldbg_profiler/qqmlprofilerservice.cpp src/qml/jsruntime/qv4engine.cpp src/qml/jsruntime/qv4engine_p.h Change-Id: I89ffccd699bee675732758d039e22224b275d60d
| * | Merge remote-tracking branch 'origin/5.6.1' into 5.6Liang Qi2016-05-1916-62/+48
| |\| | | | | | | | | | Change-Id: Ib7f8c60143c1efab279476dba390a3d9837ccc37
| | * Fix crashes when incubating objects asynchronously with initial propertiesSimon Hausmann2016-05-186-10/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a regression from commit 94e337fa95425d259e81b4d21f4d0853108553bd where we accidentally ended up not having a calling QML context set anymore when initializing the properties on newly incubated objects as provided by the caller. The QML context is necessary as for example when we set a URL property, the URL can be relative and it will be resolved to the base url of the context when written, such as in in QQmlPropertyPrivate::write. Change-Id: I1d896381fc92f653a7d76f4d82174bca48828f5e Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
| | * QML: Fix asynchronous cached loading.Erik Verbruggen2016-05-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When calling CachedLoader::loadAsync, queue the load on the QML thread instead of asking the thread to load it synchronously. The problem showed when a QML file triggered a plugin load, that would ask the engine to create a component while initializing that plugin. Change-Id: I3714ef285e432eb1aa294c4fd0208ba188d97ee9 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| | * Doc: Remove repository name from examplesinstallpathTopi Reinio2016-05-132-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Examples in binary packages now directly match the install path. Change-Id: I8cbef85c8bef840d6ff87ac308e2e82a835adcc7 Task-number: QTBUG-52953 Reviewed-by: Antti Kokko <antti.kokko@qt.io>
| | * make use of COPIESOswald Buddenhagen2016-05-131-14/+1
| | | | | | | | | | | | | | | Change-Id: I479c9523a89be1d64364e8205daa5860e16882cc Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| | * move builtins.qmltypes to an own subdirOswald Buddenhagen2016-05-133-32/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | shadowing doesn't actually work from within a subdirs project, so we need to put it into a separate aux project. it would be possible to put the project file in the same directory, but then a simple "make qmltypes" wouldn't work due to the different Makefile name. Change-Id: Ib90914e4ea5d75f7199399c7e2825690774081c5 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| | * Merge 5.6 into 5.6.1Oswald Buddenhagen2016-05-127-118/+52
| | |\ | | | | | | | | | | | | Change-Id: If83c0d59fccf0620446a5da8d271a5037c9be106
| | * | QmlDebug: Drop explicit Q_IMPORT_PLUGIN statementsUlf Hermann2016-05-093-16/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qmake is clever enough to include the plugins without this. Furthermore, the explicit imports duplicate the plugins in static builds and they lead to cross linking from QtQml to QtQuick. Task-number: QTBUG-50306 Change-Id: I822e000481f583f513b863f54f65eb8ff772c0c3 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| * | | Revert "Remove this piece of code"Simon Hausmann2016-05-181-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit bad007360a0f6fba304d8f4c99826a1250fd886c. The lookup in the global object is necessary to detect whether we've seen any unresolved properties. This is used for the optimization of skipping binding refresh updates when a context property changes. Task-number: QTBUG-53431 Change-Id: Idb39a32e4b58b915496bbb9d8a098dc17a6f688a Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
| * | | QQuickWidget: update() when resetting updatePending in showEvent()Ulf Hermann2016-05-171-3/+7
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | If updatePending is set, that means we want to call update() eventually. If we just reset updatePending without calling update(), we produce UI glitches. Change-Id: Ie7353b2f5da567e196dbee8c113920e0e4702304 Task-number: QTCREATORBUG-16022 Reviewed-by: Robert Loehning <robert.loehning@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
| * | Remove workaround for the pointer size in bootstrapped tool buildsThiago Macieira2016-05-111-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | The pointer size is now correctly set in qprocessordetection.h even for bootstrapped builds. Change-Id: I7e6338336dd6468ead24ffff1410d4ba8b1cbdad Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
| * | V4: Limit call depth by count, not by checking the native stack.Erik Verbruggen2016-05-112-106/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Getting the native stack size can be really expensive. For example, on Linux/x86_64 (Ubuntu 15.04), it is at least 200,000 instructions for a single-threaded application. With more threads (like qmlscene) it typically ends up around 1M(!) instructions. Worse, it is called twice in the ExecutionEngine constructor. So, now we limit the depth of JavaScript calls to a fixed number, 1234 by default. This can be changed by setting the environment variable QV4_MAX_CALL_DEPTH to the desired depth. Change-Id: Ic13c8efb2769e64fbc73deee6f6fa39d7c0b7af5 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| * | Fix warning about mixing basic font type's pointSize and pixelSizeMitch Curtis2016-05-111-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We didn't properly read the font property of TextFieldStyle (which is declared in QML) before writing the pointSize property (see bug report), so it was using the value of a previous assignment. Change-Id: I7746c258d1f3a6e031583da7f007bd0dc4087082 Task-number: QTBUG-52920 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| * | Flickable: start movementEndingTimer consistently only on OSXShawn Rutledge2016-05-111-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Amends 1929fee8e17e9ca66e7fe08faa9ed9fa7fdbb127 to prevent extra bounce at the ends. Task-number: QTBUG-47697 Task-number: QTBUG-53177 Change-Id: I23e63d8e0555e1503ff028ad2f0767b05ef39432 Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
| * | QAccessibleQuickItem: Implement QAccessibleInterface::window().Friedemann Kleint2016-05-062-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | The window is required to be able to determine the correct scale factor for the screen when High DPI scaling is active. Task-number: QTBUG-52943 Change-Id: If74914659bd64395db23ccfc752ee35e8d43592f Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
* | | Flickable: add AutoFlickIfNeeded as an option for flickableDirectionShawn Rutledge2016-05-132-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you want to disable all movement when the user tries to flick or drag, you previously had to set interactive: false. Maybe you need to bind that to some calculation to determine whether the content fits completely inside the Flickable or not. This way is easier. BTW the AutoFlickIfNeeded can be ORed with HorizontalFlick or VerticalFlick, but we don't document it because AutoFlickDirection=0, so it's not useful to OR that with anything. Task-number: QTBUG-31121 Change-Id: Ib03b0f223cb40f0338510c318aa37e70ce71514d Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
* | | Fix anchor enum again, now for more broken versions of GCC.Erik Verbruggen2016-05-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Apparently only very recent versions of gcc can correctly deduce that the Anchor enum can be stored in a 7-bit bitfield. So to be sure we don't run into compiler errors, do not specify the base type for any GCC version. Task-number: QTBUG-53317 Change-Id: I825946862dea1eabfb68a3fbe8cbd31bc71bdd10 Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
* | | Eradicate Q_FOREACH loops from headersMarc Mutz2016-05-114-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | They may prevent use of QT_NO_FOREACH in other Qt modules. Change-Id: Iafc04a73579a90492f3ff303978b78b71eec4e55 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | | QML: Fill QtObject lazily.Erik Verbruggen2016-05-112-11/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only iterate over the enumerations/enumerators in the staticQtMetaObject when a get() is done, and the key/value is not yet in stored in the underlying Object. The whole cost of the iteration is now moved to get() and advanceIterator(). The latter will add all items in one swoop, but iteration over QtObject isn't used much (if at all). The get() will add all key/value pairs up until it finds the requested key. Checking a number of applications shows that none of them use all (or the "last") key, so it will actually save entries (which equals memory) too. This change reduces the instruction count for QtObject from 2.7M instructions down to 95k. As this initialization is done from the QQmlEngine constructor, it also speeds up that initialization. Task-number: QTBUG-43770 Change-Id: I71331ff76bdacdd4790f7ff0430c4cbc214fe0ab Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | | Teach the QML engine to find static Qt Quick Controls 2 stylesJ-P Nurmi2016-05-111-10/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The styles are installed to eg. qml/QtQuick/Controls.2/Material. That is, the version is in the parent module. See 3c5e438 for more details. Change-Id: Icdeccb356554ada74dd1116b99be198565c98de6 Task-number: QTBUG-53284 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
* | | QML: Fix anchors on Windows.Erik Verbruggen2016-05-111-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using an enum type for a bitfield (i.e. Anchors foo : 7), MSVC will somehow store (or interpret) it as signed, while clang/gcc will do it unsigned. This behavior can be made less exciting by specifying the storage type of the enum. However, as the exception that confirms the rule: gcc 4.8 on OpenSUSE 13 will complain that it can't store all Anchor values in a 7 bit bitfield, but ONLY when a base type for an enum is specified. Change-Id: I7514dd613017d321de55560affb9b355fa75fa2e Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | | QML: Remove internal field padding from QQuickAnchorPrivate.Erik Verbruggen2016-05-105-253/+334
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't store QQuickAnchorLine, but store both fields separately in QQuickAnchorPrivate. This prevents padding of QQuickAnchorLine, saving 48 bytes on x86_64 (or any platform where structs are 8-byte aligned). On x86_64, this also removes ~180 instructions for each QQuickAnchor creation/removal, and speeds up the constructor by 25%. While in the neighborhood, do a drive-by change and merge QQuickAnchorLine::AnchorLine and QQuickAnchors::Anchor by removing the former. Change-Id: I50ab6252b1903f5f1a075174e6185c3048a8f8ec Reviewed-by: Robin Burchell <robin.burchell@viroteck.net> Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
* | | Merge remote-tracking branch 'origin/5.6.1' into 5.7Simon Hausmann2016-05-092-2/+2
|\ \ \ | | |/ | |/| | | | Change-Id: I6648a0ce49e0fd2b0881444bd38b9a10c093dc18
| * | Revert parts of 392c7b99348e2a96ef11adb5712095fbd13fb780Simon Hausmann2016-05-091-1/+1
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | Revert the plugin loading check for Qt 5.6.x. It turns out that making this check strict broke multiple static plugin builds beyond the qtdeclarative repository. Let's not cause unnecessary breakage in a patch release of Qt to fix a bug that has existed for much longer. I'll revert this change in the dev branch for Qt 5.8, together with an entry in the change log to inform the developers that a behavioral change in their code is necessary (the use of the interface id variable). Change-Id: I3c658433eaa125ac0d272806e3bbbf016cf6d3cb Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| * QQuickItem: force clear subFocusItem from ancestorsJ-P Nurmi2016-05-041-1/+1
| | | | | | | | | | | | | | | | | | Make sure ancestor items don't end up with dangling subFocusItem pointers. Change-Id: I79015abe8215b807b02577c25de58c44bfc70f9e Task-number: QTBUG-51080 Reviewed-by: Liang Qi <liang.qi@qt.io>
* | Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7Erik Verbruggen2016-05-069-28/+41
|\ \
| * | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-05-069-28/+41
| |\| | | | | | | | | | Change-Id: I3c6a93917cb46868cdb9dd50566b90c70f67102e
| | * AnimatedImage: Fix value of sourceSize propertyTobias Koenig2016-05-022-10/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cache the source size of the internal QMovie object during the change of the 'source' property to ensure that always a valid source size is returned without emitting more sourceSizeChanged() signals than necessary. Change-Id: I637b80efb133197b7345b09fcf8a7bb80c5643c9 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
| | * Fix crash when trying to call a property of the scope or context objectSimon Hausmann2016-05-011-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For calls on properties of the scope or context object the thisObject parameter in the callData is a reference to the QmlContext, not a real object - therefore the toString conversion fails. Task-number: QTBUG-52340 Change-Id: I08d01cc5c05920c2fac46ddd40fa41e630bcade3 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
| | * Fix EnterKey::type docsJ-P Nurmi2016-04-291-1/+1
| | | | | | | | | | | | | | | | | | | | | It's an attached property, not an ordinary property. Change-Id: I08123670953288b21daca8bd56129c1e14e36365 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
| | * Add version tag to QQmlExtensionInterface_iidJoni Poikelin2016-04-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 392c7b99348e2a96ef11adb5712095fbd13fb780 introduced version checking that checks QML extension plugin interface version name. Unfortunately many plugins inside and outside qtdeclarative already defined the string with interface version, leading to plugin not being loaded. Task-number: QTBUG-53090 Change-Id: I792df4ba06753bc21eab4adcd6f2068543d02368 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| | * Doc: Document Window.contentItem QML propertyTopi Reinio2016-04-281-0/+6
| | | | | | | | | | | | | | | | | | | | | Change-Id: I6914919675e8787312824ac958e3ea3fb6dc5264 Task-number: QTBUG-53045 Reviewed-by: J-P Nurmi <jpnurmi@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
| | * Make some of the shader manager privateUlf Hermann2016-04-281-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | There is no need for other classes to directly access the shader cache, and if we ever want a way to invalidate pieces of it, we better prevent such access. Change-Id: I79949b375854445c46b9d8bf6072bb53030b8dac Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| | * Revert "Avoid rebuiding batches during a material animation"Gunnar Sletta2016-04-271-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 26a230ee0ed68d39d4d13bfeaafd9839ee2a2a00. This optimization breaks when we have a single material change in the scene within a batch as the geometry node does not get visited on the next render. Task-number: QTBUG-52983 Change-Id: Ib385407a9fc35ca03ab18727d1e7b550431416f1 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Jocelyn Turcotte (Woboq GmbH) <jturcotte@woboq.com>
| | * QQuickDragAttached: fix updating of "active" propertyAlberto Mardegan2016-04-261-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | The d->active member variable should be changed regardless of the value of Drag.dragType. Task-number: QTBUG-52540 Change-Id: I7fa39ccf11b1200e9c2f6fe57cba58657b6cff74 Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
* | | QQuickWindowPrivate: Only update transform on polish if neededRichard Moe Gustavsen2016-05-061-1/+31
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As it stood, whenever QtQuick did a polish we would update IM transform. The result would be that we signaled changes to e.g cursor rectangle and input rectangle each time the cursor was redrawn. This of course caused code elsewhere, e.g in the platform plugins, to recalculate overlays such as cursor handles when nothing with regards to input item transform had actually changed. This patch will add some extra checks that the effective transform of the focus object has really changed before telling IM to update. Change-Id: If7057e4dd8f41e251a27d68fcaebdb10da953ee7 Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
* | V4: make QQmlEnginePrivate::dereferenceScarceResources inlinable.Erik Verbruggen2016-05-042-22/+32
| | | | | | | | | | | | | | | | Done by giving the "expensive" part its own function, that's even unlikely to be called anyway. Change-Id: I35621fb0a764879f9339b9e23f210c66971ff5b7 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Docs: Prefer Q_ENUM over Q_ENUMSKai Uwe Broulik2016-05-031-3/+3
| | | | | | | | | | Change-Id: Ic00e15136b2e4fe977270b081eaf5e765cf5fb7f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add QVector support to JS sequencesKevin Ottens2016-05-032-0/+18
| | | | | | | | | | | | Change-Id: I731355aa1754721236f3711a65af4f96781cebc0 Task-number: QTBUG-51467 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>