aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* no-thread: build fix for when networking is enabledv5.12.0-beta1Lorn Potter2018-10-011-1/+1
| | | | | Change-Id: I5e9601d056d43fe4ba1ecf874a68c1986110e447 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.11' into 5.12" into ↵Liang Qi2018-10-017-17/+28
|\ | | | | | | refs/staging/5.12
| * Merge remote-tracking branch 'origin/5.11' into 5.12Liang Qi2018-10-017-17/+28
| |\ | | | | | | | | | | | | | | | | | | Conflicts: src/quick/items/qquickevents_p_p.h Change-Id: I8c699aeb46903e2ea80a97a346cb5af460859a98
| | * Add QT_CONFIG(filesystemwatcher) guard for includeLiang Qi2018-10-011-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | This is needed by 555a6b5d in qtbase. Change-Id: I4c8379c2db704f7d7f2f9a933b062285dd9d8e26 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
| | * Fix Integrity OS allocator memory attributesJanne Koskinen2018-09-283-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | Correctly set the attributes when allocation is extending to more than one page. Code spanning multiple pages can now be executed. Task-number: QTBUG-70350 Change-Id: I02af1add274f80befda5662d9670bfd2052c3c52 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * Doc: Remove wrong ';' from Q_PROPERTY exampleKai Koehne2018-09-271-1/+1
| | | | | | | | | | | | | | | | | | | | | This won't compile. Change-Id: I823435673ebe47900dd8ba2a2a9f6f49e4a31539 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
| | * Prevent PathView's parent stealing mouse grab during double-flickChris Adams2018-09-241-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit fixes an issue where mouse events could be stolen by the parent of a PathView due to the PathView not correctly setting the keep-mouse-grab flag in handleMousePressEvent(). This commit ensures that the flag is correctly set, so that the second flick in a double flick is handled by the PathView rather than being stolen by the parent. Task-number: QTBUG-59620 Change-Id: Iccdfe16e7e80e6d1d31f95c3dba9c8839b20f30f Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * Merge remote-tracking branch 'origin/5.11.2' into 5.11Qt Forward Merge Bot2018-09-112-10/+13
| | |\ | | | | | | | | | | | | Change-Id: I2fe338065152bc8186c32cf3f56966c6bc9dc10c
| | | * Add some null pointer checks to avoid some rare crashesv5.11.2Jan Arve Sæther2018-09-112-10/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The crashes happened because somebody was calling processEvents() from a mouse/touch event handler that was running for a long time. If we called processEvents() from the onPressed handler, and we released the mouse while still not having returned from the onPressed handler, it meant that we were actually delivering the release event before the press event was fully delivered... This should normally not be a problem, but QQuickWindow is reusing the QQuickPointerEvent object for each incoming QEvent, which meant that when we were delivering the release event, it would reuse (and overwrite) the QQuickPointerEvent that the press event handler is still using.... This then caused some assumptions that the code made to be wrong. This only avoids the crashes, and doesn't really fix the "out-of-order" delivery and the state inconsistency that this can lead to (e.g. mouse button states might be still wrong). But on the other hand, it is not the recommended way of making a long-running handler not block the application. The proper way is to create a thread that will run in the background, so that there would be no need to call processEvents() in the event handler. Change-Id: I6fa5d4f5748ef30d082a210f03ef382922bd4b29 Task-number: QTBUG-65454 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | | Doc: Fix QDoc warningsPaul Wicking2018-10-015-7/+7
|/ / / | | | | | | | | | | | | Change-Id: I19545953bde10d4ccc2f37843dcda2569dc77df4 Reviewed-by: Martin Smith <martin.smith@qt.io>
* | | Doc: Remove references to Qt Quick 1Kai Koehne2018-10-0113-49/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt Quick 1 is dead since Qt 5.0, so it doesn't make much sense anymore to link to different names there, or highlight behavioral differences. Task-number: QTBUG-70780 Change-Id: Iac5e0b226621f127714e722a11208ca1b21d977f Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* | | QQuickTableView: improve performance when scrolling with scrollbarsRichard Moe Gustavsen2018-09-292-23/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When flicking, the current implementation would load and unload edges around the table until the new viewport was covered. The downside of that strategy is that you if you move the viewport a long distance in one go, you will need to load and unload edges hidden outside the viewport until it catches up with the new viewport. It gets even worse if you flick with a scrollbar, since then you can end up flicking thousands of rows in one go. And this will keep tableview busy loading and unloading edges for a "long" time. This patch will fix this issue by checking how much the viewport changes during a flick, and select a strategy based on that. So if the viewport moves more than a page (which is the size of the viewport), it will schedule a rebuild of the table from the viewports new location, rather than trying to load and unload edges until it catches up. Fixes: QTBUG-70704 Change-Id: I88909e118ec0759a7b7a305c19ccc6670af6263b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | Add missing Q_FLAG declarations in QObject subclassesShawn Rutledge2018-09-286-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This should make debugging easier (qDebug() << value will print the name rather than the number). This patch does not address remaining enums in private classes, namespaces and non-QObject classes. Change-Id: I1d28e5b15de5a4f267e280ff1823bc5982ac29ca Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | | Remove redundant Q_ENUM declarations in QQuickEventPointShawn Rutledge2018-09-281-3/+0
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-70374 Change-Id: Ic382bef1f6155ecd4d4b0a5a4e7b28b3dcb257ff Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | | QmlPreview: Change license to LGPL/GPL/CommercialUlf Hermann2018-09-2814-57/+211
| | | | | | | | | | | | | | | | | | Change-Id: I17484583ca02f98d6120816611ccc7e8b0ce43e3 Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
* | | Make a method constErik Verbruggen2018-09-281-1/+1
| | | | | | | | | | | | | | | Change-Id: I70043699d15daf858c47d30018060aef31810abb Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Disable GL_NV_path_rendering unless explicitly requestedLaszlo Agocs2018-09-272-12/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Flip the default value of enableVendorExtensions, so that we use the generic Shape backend (triangulating + QSGGeometryNode) by default, even on NVIDIA systems. The Nvpr backend is only tried when enableVendorExtensions is set to true by the application. This makes the offering more stable over all since applications will not run into confusing glitches that only reproduce on certain systems while behaving differently on others. [ChangeLog][QtQuick] The Shape item is changed not to try using GL_NV_path_rendering by default, unless explicitly requested. Thus the default value of enableVendorExtensions is now false. Task-number: QTBUG-66843 Task-number: QTBUG-66457 Change-Id: I564708b672bd08a8e760af689d64349aab4ead82 Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
* | | Remove unused variable 'EmptyTag'Liang Qi2018-09-271-1/+0
| | | | | | | | | | | | | | | Change-Id: I5970e3261a8a0891965c99d4d8c352ebf4cc6681 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Remove unused member variableLars Knoll2018-09-271-1/+0
| | | | | | | | | | | | | | | Change-Id: I6bf4f97d147f13a19a30e3bfdcadefe55fb656f8 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Get rid of ArrayData::ComplexLars Knoll2018-09-274-4/+4
| | | | | | | | | | | | | | | | | | | | | It's been pretty much unused. ArrayData::Simple does the job. Change-Id: I0fbd0b7787499244f4c8ca00b3ba7330a6640b75 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Speed up instanceof operationsLars Knoll2018-09-277-32/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce a shortcut if the rhs is a functionobject with the regular function proto as prototype. Add an optimized instanceOf implementation when we already have some checks done, and inline some methods. Change-Id: Iab9b648ae7bbec749b319e883b6ae90a23875454 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Unify layout of function objectsLars Knoll2018-09-273-12/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ensure we have the proto property at always the same place. This will be used in a subsequent commit to optimize accesses to the prototype property e.g. when doing instanceof operations or constructor calls. Change-Id: I6e9a19e0b7d0e8ab583648a60d1978f5cf838b06 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Refactor deletion of propertiesLars Knoll2018-09-274-40/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In line with the previous commit, allow entries with a valid PropertyKey, but invalid attributes in the InternalClass. Those entries mark a deleted property. This cleans up/unifies some of the code in the internal class implementation and allows re-using the slot if a deleted property gets added again. Change-Id: I1bada697486e3cafce7689bae87b7f884200dd99 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Don't move any property slots in Objects anymoreLars Knoll2018-09-272-70/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Until now, changing an existing property into an accessor property would cause the slots in the object to get re-arranged to make space for the additional setter required. Change this by dropping the requirement that getter and setter slot have to be next to each other. This has the advantage, that any slot we define to be at a certain position in the internal class/object will stay there and we can use that assumption to optimize accesses to the slot. Change-Id: Ib37c2a49fc6aae42ea4b2da36ac1dc3036540c12 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Get rid of remaining assumptions about setter being next to gettersLars Knoll2018-09-2710-111/+136
| | | | | | | | | | | | | | | | | | | | | | | | The only place where we now assume that getters and setters are next to each other in the MemberData is in the internal class. Change-Id: I3285f3abb1cbfe051853e808339cd360eb602262 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Differentiate between finding for get and set in InternalClassLars Knoll2018-09-277-26/+38
| | | | | | | | | | | | | | | | | | | | | | | | This is required, so we can get rid of the requirement that getter and setter live next to each other in the member data. Change-Id: I2ed57a171628af4dfecd1836d00e958c6bed9d4f Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Refactor InternalClass::find()Lars Knoll2018-09-2711-66/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | Specialize find() into several methods for different purposes. Prepares for further cleanups and being able to split up getter and setter for accessor properties. Change-Id: Id4ec5509ac1a1361e2170bbfc2347b89b520c782 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Small refactoring of PropertyHash::lookup()Lars Knoll2018-09-272-10/+13
| | | | | | | | | | | | | | | Change-Id: I0c8cbf0914b8de4613ab203876636746f41d9718 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | QQuickItemView: Don't change the viewport while in layoutUlf Hermann2018-09-271-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | Moving the viewport in the middle of a layout operation is a bad idea as it causes the visible items to change. Task-number: QTBUG-49224 Change-Id: I45a214560e00b65ed53b9385e7a539bb4304b7d9 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | | QML: Demote incubation problems to info levelUlf Hermann2018-09-272-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the context or object in question gets destroyed during incubation, that is not a major problem. We just clean up the mess and continue. Especially, failure to create a delegate for an item view is not fatal. This routinely happens if the whole view has been dropped between object creation and incubation. Since 0412de08fd65c5fef9d010a68b40a256f521ef61 info and warning levels are properly separated. Task-number: QTBUG-49224 Change-Id: Ie59dfca8edf91b80dcf33e742766863feba9c8fa Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | QQuickTableView: only preload items when rebuilding the table from scratchRichard Moe Gustavsen2018-09-271-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We preload delegate items when the table is built from scratch to ensure that we have enough items in circulation before the user starts to flick. But when we only rebuild a section of the table after e.g adding or removing rows, we already have enough items in circulation. So only preload when building for RebuildOption::All. Change-Id: I96aa9518e8032ecaba25f92fe6a0fbf17ea34c7d Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | Doc: Add description of QML_USE_GLYPHCACHE_WORKAROUND env varPaul Wicking2018-09-261-0/+8
| | | | | | | | | | | | | | | | | | Change-Id: I71e2fcaa4358a20bc6ec5b1c89a24b23549f1334 Fixes: QTBUG-59992 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* | | Software Adaptation: Improve bounding rect claculation for glyph nodesAndy Nichols2018-09-261-1/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is not enough to call QGlyphRun::boundingRect() to determine the true bounding rect of a series of glyphs. This issue would manifest itself when rendering italic text. Now we calculate the bounding rect for a QGlyphRun when they are changed in the node so that that the clip rect for glyphnodes reflect what is set on the node. Task-number: QTBUG-68085 Change-Id: I834a7312052c8c5a4ad62f28333108c051d7f7b8 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | | Make QQuickShaderEffectMesh subclassable and exportedEskil Abrahamsen Blomfeldt2018-09-262-2/+10
| | | | | | | | | | | | | | | | | | | | | | | | This can be very useful to access from external modules and plugins, to allow customizing the meshes used in ShaderEffects. Change-Id: I6ed62d6292f1550eb5bc0e690ec42ce7c35fe3d0 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | | QQuickTableView: fix clang warningsRichard Moe Gustavsen2018-09-251-27/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | The latest version of QtCreator is detecting issues in the code that the compiler doesn't warn about. This patch will fix those issues. Change-Id: Iab6a75196161ab253f0590929d3722bec5ea4b31 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | Doc: Remove documentation for deprecated QML typesVenugopal Shivashankar2018-09-2512-146/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | VisualDataModel, VisualDataGroup, and VisualItemModel are replaced with DelegateModel, DelegateModelGroup, and ObjectModel respectively (since 7cad0e52c5a020bd29635e9912fd8946a6b48124). Also renamed/deleted a few snippet files and an image. Task-number: QTBUG-37725 Change-Id: I5fa93993a31d8f9b08e7a282d5550ddd9bfb813f Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | Limit the repeater model size for integer modelsErik Verbruggen2018-09-242-1/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | Otherwise you might be able to put INT_MAX in, which would cause problems with things like memory allocations. Task-number: QTBUG-54752 Change-Id: I758d04af65049181c0c741ff42e92a6450963201 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | | Add test cleanup function for C++ partsRainer Keller2018-09-242-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows to do cleanup in C++ before other parts being destructed. It QtOpcUa we need to destruct a subprocess. Until now it was done in the destructor of the setup class. When the destructor is called the eventloop already died but the process is still sending output when being terminated. In the windows event handling a nullptr is being dereferenced in this case, see QTBUG-70641. When terminating this process somewhat earlier, when the eventloop is still available, the event dispatcher is able to handle those events without crashing. Another reason to have this function is because there is applicationAvailable() being called to initialize C++ code and there should be an equivalent function for cleaning up. [ChangeLog][QtQml][QtTest] Add cleanupTestCase() to be called before starting destruction Change-Id: I24f7a51ec5276a449892609f5b2cfe7957c27668 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | Fix use of lexically scoped variables in modulesSimon Hausmann2018-09-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Their use may trigger setting c->requiresExecutionContext on the module context, which is correct. However, unlike functions, modules at instantiation time always have their context created ahead of time (to populate imports). Therefore we must not emit call context creating byte code instructions where we'd end up storing exports in the wrong place. Change-Id: Id1264f1cfa6a7f1cd94247ffe71938bc9c5c3ff9 Fixes: QTBUG-70632 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Better inheritance structure for functionsLars Knoll2018-09-236-33/+63
| | | | | | | | | | | | | | | | | | | | | | | | Give Arrow functions their own representation. This also prepares for further optimizations especially for the instanceof operator. Change-Id: I1f70c0271169a237e1acdeb7fe855be957ba2ea5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Cleanup init method for ScriptFunctionLars Knoll2018-09-233-6/+16
| | | | | | | | | | | | | | | Change-Id: I913f9429a9238860a5b4e9dc84d217ec824f25c1 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Remove unused argumentLars Knoll2018-09-232-9/+8
| | | | | | | | | | | | | | | Change-Id: I1f2c796b50d05c238fad36434b2545604a401fbf Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | Make Object::getOwnProperty() constLars Knoll2018-09-2319-25/+25
| | | | | | | | | | | | | | | | | | | | | | | | Object::getOwnProperty never modifies the object, so make it a const member function. Change-Id: I175bb45d61a66a1d9f577c087129562d44d62e17 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* | | QPacketProtocol: Remove aboutToClose() methodUlf Hermann2018-09-202-14/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It doesn't serve any useful purpose. The cleanup is done on destruction anyway, and re-opening the underlying device after it was closed isn't supported. Furthermore, clearing the sendingPackets leads to a crash when the device sends another bytesWritten() signal after aboutToClose(). That can happen, for example with local sockets on windows, when flushing the remaining data. Fixes: QTBUG-70638 Change-Id: Icd636efc9794a127a3869a1c3e999d2286593067 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | QQuickTableView: build the table when the component is finalizedRichard Moe Gustavsen2018-09-173-0/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | componentComplete() is called on us after all static values have been assigned, but before bindings to any ancestors have been evaluated. Especially this means that if our size is bound to the parents size, it will not be ready at that point. Since we cannot build the table without knowing our own size, we waited for the updatePolish() call before we started to build the table. The problem with that strategy, is that any asynchronous loaders that TableView might be inside would already be finished by the time we received the updatePolish() call. The result would be that we ended up loading all the delegate items synchronously instead of asynchronously. (As soon as a loader has finished loading the initial item, async loading will no longer be used). This patch will therefore add a componentFinalized function that gets called after all bindings have been evaluated, but before the loader has finished. When receiving this call, we load the delegate items (and build the table). A nice side effect is that the table will also be ready by the time Component.onCompeted is emitted to the QML app. This means that e.g contentWidth/Height has valid values. Change-Id: Ief92d2fecfaea54f6191da116ed4ba79cc673b01 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | Cleanups in Value/PrimitiveLars Knoll2018-09-1779-602/+565
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Get rid of Primitive and move the corresponding methods directly into Value. Mark many methods in Value as constexpr and turn Value into a POD type again. Keep Primitive as a pure alias to Value for source compatibility of other modules that might be using it. Change-Id: Icb47458947dd3482c8852e95782123ea4346f5ec Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Some more optimizations to Object::internalPut()Lars Knoll2018-09-161-0/+12
| | | | | | | | | | | | | | | Change-Id: Ib1b224ad27428ca37450f269b491cfa9d82e559a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Optimize Object::virtualGet()Lars Knoll2018-09-162-22/+36
| | | | | | | | | | | | | | | | | | | | | | | | Optimize virtualGet() for the common case where the proto chain are all regular objects. Change-Id: I51eea9a4b96033be4effc2072fedc5b9b08e8440 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Store InternalClass::nameMap in a MemberDataLars Knoll2018-09-165-22/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This helps make that memory known to the GC as well, and makes marking of internal classes much more efficient, as we don't mark the property keys repeatedly (even if they are shared between different internal classes) Change-Id: Ibb7e5383672d7657926bd08bf13f73f7680a9f31 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Optimize the JIT helpersLars Knoll2018-09-143-14/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | Match the argument order to the lookup functions being called to minimize register shuffling that needs to be done inside the function. Change-Id: I0c55234d0c86b524dad021a519c6416d62d34c52 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>