aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
Commit message (Collapse)AuthorAgeFilesLines
* Retrieve the attached properties base type without recursionUlf Hermann2019-11-185-32/+29
| | | | | | | | | This is probably faster and avoids the deprecation warnings stemming from deprecated functions calling themselves recursively. Task-number: QTBUG-80040 Change-Id: I2f65aad3bc7f85b7a7de66d3e76dac1233a58db8 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Disable deprecation warnings in function that are themselves deprecatedUlf Hermann2019-11-181-0/+8
| | | | | | | | | Deprecated functions calling each other is not worthy of warning, as they will all be removed at the same time. Task-number: QTBUG-80040 Change-Id: I4c2b31474e3ee8168fd48796cf99ead266dffb37 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Fix deprecation warning about QString from character literalUlf Hermann2019-11-181-1/+1
| | | | | | Task-number: QTBUG-80040 Change-Id: I6dddf65582c15b8cb8e42de5dbcc38ebe8d5867a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Merge remote-tracking branch 'origin/5.13' into 5.14Qt Forward Merge Bot2019-11-142-52/+21
|\ | | | | | | Change-Id: I06578422b4558feabf7a77426b01e77953ab60e2
| * QQmlVMEMetaObject: Scope MemberData for allocating writeUlf Hermann2019-11-052-52/+21
| | | | | | | | | | | | | | | | | | | | If we need to allocate in order to write a property of the object, we need to make sure that the member data is not garbage collected during that allocation. Change-Id: I885cdc547588c1b20450e1586765cd0266b4c4f0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | Fix warning about non-relative paths in qmldir filesSimon Hausmann2019-11-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Permit the use of resource urls in qmldir files to allow for the use-case of a plugin including its .qml files in resources and optionally compiling them ahead of time. When the resources are bundled in the plugin, qmlplugindump might or might not work. Task-number: QTBUG-48809 Change-Id: Icb331c7575f26316b5c2bcc604b9c6d793977a9f Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Doc: Fix documentation warningsTopi Reinio2019-11-119-93/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There were a lot of documentation warnings introduced by the separation of QtQml.Models and QtQml.WorkerScript modules from the QtQml documentation project into their own sub-projects. Fix the above, and also ensure that the experimental Qt.labs.qmlmodels QML types are listed in the documentation, and add them also on the QML module page for QtQml.Models. A few warnings remain, they may be indicative of issues not in the scope of this commit. Fixes: QTBUG-79812 Change-Id: Idc25c976e4c96feab4aae893519d6c9245f57a64 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | RuntimeHelpers: Short-circuit stringToNumber on huge stringsUlf Hermann2019-11-071-0/+9
| | | | | | | | | | | | | | | | | | We don't need to iterate such a monster, or even convert it to latin1. It won't be a valid number anyway. Fixes: QTBUG-78955 Change-Id: Iaa35d924511885f804abe2d5c74235adcad55b27 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.13' into 5.14Qt Forward Merge Bot2019-10-311-3/+9
|\| | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/qml/common/qv4compileddata_p.h src/qml/types/qqmlbind.cpp tests/auto/qml/qqmlproperty/tst_qqmlproperty.cpp Change-Id: I6a137907e63445f17a3d6181b832a6bd76135bb2
| * QQmlProperty: handle reads of QQmlPropertyMap correctlyFabian Kosmale2019-10-301-3/+9
| | | | | | | | | | | | Fixes: QTBUG-79614 Change-Id: Iaf84c0178dc88072a367da2b42b09554b85c7d57 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Merge remote-tracking branch 'origin/5.13.2' into 5.13Qt Forward Merge Bot2019-10-291-0/+4
| |\ | | | | | | | | | Change-Id: I2b55bea338aa854d940a6da9b6703866209e6ba6
| | * Merge 5.13 into 5.13.2Frederik Gladhorn2019-10-112-7/+25
| | |\ | | | | | | | | | | | | Change-Id: Ib1a7bdda1cde721efb356b2d043b26e2db7386ae
| | * | Doc: Add a \note about the (broken) Binding value restoration policyUlf Hermann2019-10-091-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-78566 Change-Id: Ic76b6212f4ccc3ce8b9199166223e92c203272a5 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
| * | | qv4compileddata: do not use raw constexprFabian Kosmale2019-10-281-1/+1
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | Necessary after change 50481fb909c2bbbc26a193e23783e5b0151168b9 in qtbase Fixes: QTBUG-79563 Change-Id: I72c94cd87b881f2fb3fee005f73583f64cbf68e4 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | Update flowchart to reflect addition of new methodsFabian Kosmale2019-10-242-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Removed reference to setContextProperty, as we want to deprecate them - Added qmlRegisterSingletonInstance as a different way to register a singleton and as a replacement for setContextProperty - Replaced no-argument qmlRegisterType with qmlRegisterAnonymousType - Restructured graph, removing a few choices Task-number: QTBUG-78952 Change-Id: I1882d3fdd281fd15ae9940127d078457f2942edb Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | QML: Consistently check for debugger before loading cache filesUlf Hermann2019-10-244-18/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | In debug mode we don't want to load cache files. Fixes: QTBUG-79443 Change-Id: Ie3e2c70d54e66f24846070aee952a86934099695 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | | Fix typoRobert Loehning2019-10-211-2/+2
| | | | | | | | | | | | | | | Change-Id: I6bdb4ca295853d4c179198adcc0856d86b182656 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* | | Pass suitable nFormals when constructing JS stack frameUlf Hermann2019-10-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | The extra formal parameters for signal handlers are not passed in "registers" and therefore should not be given here. Fixes: QTBUG-78486 Change-Id: I18594e0139a7a23d4e53b41e8b00b1e9f2e07aeb Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Fix interface handling in bindingsFabian Kosmale2019-10-211-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a type had a property with an interface type, we did not support the case where the assigned binding value is convertible to the interface. This is now fixed by adding a last new check to QQmlPrivate::write Fixes: QTBUG-78721 Change-Id: I0b85fbfdf8561ba43610ac343001ae380287a674 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | Document recent change in allowed alias usageFabian Kosmale2019-10-211-9/+11
| | | | | | | | | | | | | | | | | | | | | | | | This amends e5f3e7149b7e130c375c1419f1f804dfeaf578aa Task-number: QTBUG-48150 Change-Id: I64c7426143c82d6ee45b07a40e961b7b7c1faf16 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | Use QV4 namespace for ValueTimo Aarnipuro2019-10-172-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "Value" is a globally defined type on INTEGRITY platform, which causes the compiler to become confused about ambiguous use. Change-Id: Ic01ce9cf3a8a2c901b3fbe1aa68b419f2778b089 Reviewed-by: Kimmo Ollila <kimmo.ollila@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | QFlagPointer/QBiPointer: insert static assertions in addition to dynamicThiago Macieira2019-10-161-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | Static assertions weren't really a thing back in 2012 when Aaron wrote this code. Change-Id: I8d95fbaf90e842b9b44dfffd15cde4c154e22810 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | | QML: Extend QML loader thread's stack sizeErik Verbruggen2019-10-161-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | By default, on some platforms non-main threads have a very limited stack size. Extend it so that we can parse more deeply nested QML/JS files. The parser expects a stack size of 8MB. Task-number: QTBUG-71078 Change-Id: I5edd6630c870e45c3dbe66e6a2a178f5c6991677 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | | Android: Fix crash in release modeBogDan Vatra2019-10-161-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When using the "auto" keyword, we would keep a reference to the QStringBuilder, instead of converting it to a QString. This object would in turn keep references to the pluginName string, which the compiler would delete, and we would get a crash later on, when the actual conversion took place. So this is a sneaky compiler bug and the work-around is to explicitly convert the QStringBuilder to a QString right away. Fixes: QTBUG-79230 Change-Id: I0759645c84d6f995f26063ea098cdaea61e924ab Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> Reviewed-by: BogDan Vatra <bogdan@kdab.com>
* | | Make ScopedValue's CHECK_EXCEPTION also check isInterruptedUlf Hermann2019-10-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While there should be no way to generate an infinite loop from any of the affected methods, you can certainly generate a really long loop, for example with Array(1E9).join(). We should be able to interrupt this. Also, the various call()s could return with isInterrupted set. We should respect that and immediately return. Fixes: QTBUG-78955 Change-Id: I7e18b24db0bf39df03134027b2b5dba452ac7c1c Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | | Check for invalid context in QQmlContextPrivate::dropDestroyedQObjectUlf Hermann2019-10-161-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the context is invalid we won't be able to look up the object by name anymore. In that case there is nothing to do. Fixes: QTBUG-78326 Change-Id: I011ccb6b02a84725c1d5eae24b494516ae2d5fee Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | | qqmlprivate.h: Fix include directiveFriedemann Kleint2019-10-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add the module, unbreaking the Qt for Python build. Amends 2b371a50cbc1f54284fcea3834834ca58fc28fd0. Change-Id: Ic717f00e5225190c698b4ae8322cbee88087b265 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Fix float value binding to an integerTeemu Holappa2019-10-111-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | Also NaN values are casted to an integer which causes illegal integer values. Task-number: QTBUG-72442 Change-Id: I3ff3c8e4dc493600360448ea30d949c0017da8c3 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/5.13' into 5.14Liang Qi2019-10-102-7/+25
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/scenegraph/openvg/qsgopenvgcontext.cpp tests/auto/quick/qquickpathview/tst_qquickpathview.cpp Change-Id: I117c8d62b21800329d1035021d312d9924f83a1b
| * | Be more fussy about the MakeDay() calculationEdward Welbourne2019-10-081-5/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ES Date spec goes into minute detail about doing various algorithms in the dumbest possible way (like InLeapYear() calling DaysInYear(), rather than the other way round) but, in MakeDay(), leaves the implementation to solve the problem of finding the start of the first day of a specified month in a given year. So exercise the freedom we have in that to be a little more robust; and actually check we have met the conditions the spec requires, returning NaN (as specified) if not. Added tests for some denormal dates and date-times and for a date mentioned in QTBUG-78996. Task-number: QTBUG-78996 Change-Id: I8d9a841dd1f1d9995273a3de8f6f9130207c7c2b Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
| * | Doc: Add example on how to access types in imported QML from javascriptNico Vertriest2019-10-071-2/+5
| |/ | | | | | | | | | | Task-number: QTBUG-66194 Change-Id: Ifd81db18a344557f610e45d7c2d4208f014e94b9 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* | Output a message when changing the target of a Binding from elsewhereUlf Hermann2019-10-092-3/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Explicitly created Binding elements should not be silently disabled when writing their target property. That would be rather confusing. Instead, the binding stays active and updates the target property again on the next change. This behavior is still somewhat confusing. Therefore, if the qt.qml.binding.removal logging category is enabled, output a helpful message. Fixes: QTBUG-78566 Change-Id: Idcd8e51e1cd7eaf78d70b15f065fd9159521ff20 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Postpone the Binding restore mode behavior change to Qt 6.0Ulf Hermann2019-10-091-5/+12
| | | | | | | | | | | | | | | | | | | | | | | | Also, add a note to the "when" property about it. [ChangeLog] The change in the default behavior of Binding elements regarding literal values has been postponed to Qt 6.0. Task-number: QTBUG-78566 Change-Id: I2cc6f01230589b176b08f53a45c02123bb961020 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Free dynamic metaobjects when destroying QQmlTypePrivateUlf Hermann2019-10-081-0/+2
| | | | | | | | | | | | | | | | | | | | The metaobjects are created by QMetaObjectBuilder and the documentation of toMetaObject() states that we should free() the memory when we're done with it. Change-Id: Ie75d284982bf7cd23b7e389b44443ee6d3b3501e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Add initial support for deep aliasesFabian Kosmale2019-10-074-55/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch reuses the existing support for value types to support aliases of depth 2. This covers the initial use case in QTBUG-48150. Adding support for "deeper" aliases would require storing the complete "property path", which in turn would require increasing the size of the Alias data. This is currently considered out of scope, at least until a clear use-case appears. Fixes: QTBUG-48150 Change-Id: Id2ac4dd175003a37eba2919e7604d0a3be54d29f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | QML Binding: do not convert stringsFabian Kosmale2019-10-073-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The root cause for the issue is that QQmlObjectCreator::setPropertyValue calls QQmlStringConverters::variantFromString on strings if the property is of type QVariant. Unfortunately, this cannot be changed easily as the current behavior is explicitly documented and tested in tst_qqmllanguage, thus making it a breaking change. As a workaround, QML Binding does now take a QJSValue instead of a QVariant (making value a var property), which does not trigger the conversion path. Fixes: QTBUG-78943 Change-Id: I0b64dffdb6b84b2bab2bb85a8cb263e530c18570 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Small performance improvements suggested by clang-tidyAlbert Astals Cid2019-10-079-9/+10
| | | | | | | | | | | | | | | | | | mostly add const &, a few std::move and in particular case, remove const so the std::move being done over the variable actually has effect Change-Id: Id611cd31bc012f219d7a17d4626b1c2a5fbddd66 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | qmlRegisterSingletonInstance: Do not crash if instance gets deletedFabian Kosmale2019-10-073-3/+10
| | | | | | | | | | | | | | | | | | | | Use a QPointer, so that we notice if the object has been deleted. Also ensure that in the documentation the function is in a single line, as qdoc will otherwise silently omit it. Change-Id: Idecd370d00089997cd18b3247ad2290a561b2b69 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Convert a few sizeof(array)/sizeof(element0) fors to range forsAlbert Astals Cid2019-10-042-6/+5
| | | | | | | | | | | | | | | | Increases readability Change-Id: I46d82fac83e538988cea79a053d70b954a3cb9f1 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Re-add the warnings about deprecated default binding restore modeUlf Hermann2019-10-041-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | We _really_ want people to port away from this. And yes, we are going to change it. Amends commit c273175ffec925a4164de41a79c21d785a1761a7. Task-number: QTBUG-33444 Task-number: QTBUG-78566 Change-Id: Iab50b8c7bad043528602e2e617c772de06d18b1e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Pierre-Yves Siret <gr3cko@gmail.com>
* | QQmlBind: Mark restoreMode as explicitly also when set to default valueUlf Hermann2019-10-021-1/+1
| | | | | | | | | | Change-Id: I8aa36cbba95a64498b34c689086e45c115ce542b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Android: Load QML plugins directly from APK libs dirBogDan Vatra2019-10-011-0/+22
| | | | | | | | | | | | | | | | | | | | | | Also register qrc:/android_rcc_bundle/qml as the folder where declarative engine finds the other QML files (qmldir, *.qml, *.js, etc.). [ChangeLog][Android] load QML plugins directly from APK libs dir and use qrc:/android_rcc_bundle/qml to search for QML files. Change-Id: I9552121411d21537befc41646cdd161ce0cec760 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* | Delete type half-built type resolution caches on compile errorsUlf Hermann2019-09-301-0/+1
| | | | | | | | | | | | | | | | Otherwise they leak. Change-Id: I744f67e039ffb9cacbf16394bd5558ee72028177 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Fix property cache leaksUlf Hermann2019-09-301-3/+7
| | | | | | | | | | | | | | | | | | | | | | Leaks happened when using unqualified context property lookups and when looking up properties of singletons. We need to release the caches when unlinking. Fixes: QTBUG-78859 Change-Id: I8b86bcf72f71a463fb259eb6ae6c46be62729d72 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Use a QQmlRefPointer for QQmlScriptData::typeNameCacheUlf Hermann2019-09-303-8/+4
| | | | | | | | | | | | | | | | | | | | The cache can get overwritten. We want the reference to the old one to be dropped then. Fixes: QTBUG-78865 Change-Id: I8ebba4ae242c3bf8ae4db5cffc65b26bab265b8a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | Convert QTime to V4 Date on a date with no DST in forceEdward Welbourne2019-09-271-7/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sadly the third centennary of Cassini's birth isn't such a good date after all, since round-tripping will ignore DST on the QDateTime leg but include it in V4's implementation of ES's ill-conceived spec for handling DST and time-zone transitions; and June 8th is in summer for much of the world. So use a date which (as far as I can tell) appears to have been DST-free everywhere; and after the start of 1970 so that, even if we find ourselves working with a zone in which it did have DST, we'll apply DST consistently during round-tripping. Fixes: QTBUG-78706 Change-Id: I25be2548e2c97eae2c4f6c5bbe661dea2f35aaba Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Merge remote-tracking branch 'origin/5.13' into 5.14Qt Forward Merge Bot2019-09-271-0/+1
|\| | | | | | | Change-Id: I73d9e896c05f7d944f3092b51a3a95c7e6e284b8
| * QMLJS: Fix exception handling in promisesFabian Kosmale2019-09-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | If an exception is thrown inside a promise's resolve or reject handler, the promise needs to resolve into a rejected state with the exceptions value. The value was previously not set. Fixes: QTBUG-78554 Change-Id: Ic22faa6ef1e519e4cae6732c69bb14f7053d13da Reviewed-by: Ulf Hermann <ulf.hermann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* | Don't leak references to QQmlTypePrivateUlf Hermann2019-09-251-0/+1
| | | | | | | | | | | | Change-Id: I1cad0d8aa81b26a91e97a869f3c8539ae3cf1ad6 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | Don't leak resolved types of failed compilationsUlf Hermann2019-09-252-5/+6
| | | | | | | | | | | | | | | | | | | | If the compilation fails QQmlTypeCompiler::compile() returns nullptr. In that case, there is no ExecutableCompilationUnit to own the resolved types. Therefore, delete them. Change-Id: Ia8f4ef78438642cb064538c7266ca636ec7eb0c1 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>