aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
| | * Disable deferring when referenced as a grouped propertyJ-P Nurmi2017-09-066-1/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to fix QTBUG-50992 - the issue with most votes in QQC2. Task-number: QTBUG-63036 Change-Id: I996cd1128582b80e0c8480ae143d682c1e8eb8fe Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
| | * Fix crashes with closures created in QML componentsLars Knoll2017-09-0616-106/+257
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When closures created inside QML components are called after the surrounding component (and consequently QML context) has been destroyed, we are in a somewhat limited environment. Initially we would just crash as the calling QML context is not valid anymore. We can alleviate that by introducing reference counting on the context and letting the QML context wrapper keep a strong reference. This avoids the crashes and also ensures that at least imports continue to be accessible within these contexts (as the singleton test case demonstrates). Task-number: QTBUG-61781 Change-Id: I893f171842d01b0863d95a02ea738adc2620e236 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * Qml Tooling: Replace bare pointers with QScopedPointerUlf Hermann2017-09-064-27/+18
| | | | | | | | | | | | | | | | | | | | | This way we don't have to manually initialize and delete them. Change-Id: I0104c744dba380e957271d0924498e3643856e9e Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Stabilize the threadSignal() testSimon Hausmann2017-09-063-14/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We've seen the case in the CI where we delete the worker thread object before it has had a chance (resulting in a crash). This patch attempts to stabilize this by waiting for the thread to terminate properly. In addition QSignalSpy's connection to the done(QString) signal is forced to be direct, which means the spy's internal list is accessed from the gui thread (via QCOMPARE) at the same time as the thread may be emitting the signal and calling the signalspy's slot (metacall), which helgrind complains about (rightly so). I don't see any purpose in connecting to the signal, so let's remove that code. The test continues to cover the threading code in QQmlData::signalEmitted, once as the thread is triggered via C++ and once via QML (doIt invocation). Change-Id: I5e8a4ae65e2d0890a26491d25c73de1ba33a6668 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| | * Add change file for Qt 5.6.3Jani Heikkinen2017-09-061-0/+78
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-62707 Change-Id: I5ff6ddc2dfb1d495f20e257cbd014232cac335b7 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * Fix QtQml crashing with GHS compiler when using AOTSimon Hausmann2017-09-051-13/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to support compilers that do not support the packing attribute, replace the use of the pack macros with static assertions about the structure size, to ensure that what is generated by host tools (qmlcachegen, qqc) is compatible with what's loaded by the target at run-time. This requires padding and re-ordering some structures. Task-number: QTBUG-61468 Change-Id: I3d82457f086a9b066d1c6df4c46d9f154dd5f208 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * Change mirror vertical for software QSGLayers to trueAllan Sandfeld Jensen2017-09-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the default for OpenGL and D3D12 QSGLayer implementations, and means that code using QSGLayer can end up rendering upside down if switched the software backend. Task-number: QTBUG-62929 Change-Id: Ib34b10c4eb834d2ef52e9005866242886b3addeb Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * QmlProfiler: Avoid race conditions in QQmlTypeLoaderUlf Hermann2017-09-055-16/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have to make sure all profiler calls to one adapter are done from the same thread. It turns out that all the calls from QQmlTypeLoader are done from the type loader thread. By using a separate adapter for that, we avoid any extra locking. Task-number: QTBUG-62987 Change-Id: I5cffcc30b84dd4154daa0c56312a1141ce2033e1 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * tst_qquickmultipointtoucharea nonOverlapping: add visual feedbackShawn Rutledge2017-09-051-5/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | It's difficult to troubleshoot autotests like this without being able to either see what's happening while it runs or test it manually. Task-number: QTBUG-59960 Change-Id: Iba7b03036f2f631c9b6d34d563ebae2de77acf1f Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | Register uncreateable types PointerHandler, EventPoint, EventTouchPointShawn Rutledge2017-09-201-1/+6
|/ / | | | | | | | | | | | | | | | | | | | | If PointerHandler had the intended pressed/updated/released signals, it would be useful for handling EventPoints in arbitrary ways in Javascript. But we are deferring that feature for fear of abuse. And users will never need to create EventPoints, but they can be exposed to QML in rare cases. Change-Id: If86c4e1ba1904f18fb417f23282bd084206da3db Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | QuickTest: initialize import and plugin paths before TestCaseCollectorJ-P Nurmi2017-09-151-4/+4
| | | | | | | | | | | | | | | | | | | | | | 215c0145 broke QQC1 auto tests. The problem seems to be that TestCaseCollector created a QQmlComponent instance before the import and plugin paths were set. Later on, when running the actual tests, a cached component was used and the paths were missing. Task-number: QTBUG-63220 Change-Id: Ifec163899db9ea088fdabc179181cc150534fc4d Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Use the qEnvironmentVariable function from QtCoreThiago Macieira2017-09-142-6/+6
| | | | | | | | | | | | | | | | | | | | This corrects the encoding of QML2_IMPORT_PATH environment variable, since it contains paths. For the other cases, it's just improving the code. Task-number: QTBUG-62328 Change-Id: I0f2ce894387048f78465ffff141ca50208f6845a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | improve documentation of PinchHandlerShawn Rutledge2017-09-145-12/+244
| | | | | | | | | | | | Change-Id: If7acf359731a046637248d9b415b9e865365a068 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | qmltest: Enumerate test cases / functions without evaluating QMLTor Arne Vestbø2017-09-133-29/+152
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Most, if not all, QML tests are written without any sort of dynamic instantiation of the test data, so doing view.setSource() will evaluate the whole source file, compute bindings, create items, windows, etc. This is less then ideal when all you want is to list the test functions using -functions, or when running a single test from the command line, as in both cases we'll still actually evaluate every single QML file. This makes it really hard to evaluate test output, e.g. from the CI, especially with logging enabled, as even if a single test is requested, the logs are filled with results from the loading of the other tests. To improve the situation we use a non-instantiated QML component that we then inspect its compilation data, looking for test cases and functions. In the future the implementation of TestCase's qtest_run* machinery should be built on top of QTestLib instead of being reimplemented in JavaScript, but this is left for later. Change-Id: Ie5448208daf786e335583ab6bdfbc195891ec1f5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | PinchHandler: correct the usage of min/max x/y for movement boundsShawn Rutledge2017-09-121-1/+1
| | | | | | | | | | | | | | QRectF constructor takes x, y, width, height not x1, y1, x2, y2 Change-Id: I84f9e62ef7a6587a319ed33d8937365f94fdba3b Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | Example: Switch to google finance URLVenugopal Shivashankar2017-09-125-63/+94
| | | | | | | | | | | | | | | | | | The yahoo finance URL that was used earlier is not available anymore Task-number: QTBUG-60630 Change-Id: Id3302a60c0f39c34ab0053806c95c28c6aec5b91 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | PinchHandler: make the properties useful when target is nullShawn Rutledge2017-09-122-18/+21
| | | | | | | | | | | | | | | | | | | | An example is forthcoming in the form of a documentation snippet. Also, translation is a relative measurement, so its type is now QVector2D rather than QPointF. This doesn't change the QML API: x and y properties are still defined. Change-Id: I00f9a02a45c30899a568fe827f47cae9b4cc0f42 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | QQuickMultiPointHandler::eligiblePoints: use parent not targetShawn Rutledge2017-09-121-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If a PinchHandler for example is declared with target: null, it was crashing here. The eligible points are contained within the Item within which the Handler is declared; it's OK to do a pinch gesture within one Item but manipulate another Item instead. In such a case, the parent and target are different. Alternatively, target can be set to null, if the user is only interested in reacting to the Handler's properties in some other way rather than directly manipulating some target. Change-Id: Ia077006be1285c242fe7ba71ea89850cd7717c7c Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | rename TapHandler.isPressed property to pressedShawn Rutledge2017-09-1210-20/+20
| | | | | | | | | | | | | | | | | | This is for the sake of convention. Unfortunately (and the reason it wasn't done this way at the outset), it may prevent us from ever having a signal called "pressed" in this handler or its base class. Change-Id: Iafa117410e0e33562290b87df59bc8c0085c217d Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | don't re-deliver events to an item which already filteredShawn Rutledge2017-09-113-15/+17
| | | | | | | | | | | | | | | | | | That is, if the filtering parent intercepts an event (returns true from childMouseEventFilter), it does not also need direct delivery of the same event. Change-Id: I24003f72875b309fa10b2d316916c5f86702cb57 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | FakeFlickable: returnToBounds only on axes which need itShawn Rutledge2017-09-111-34/+21
| | | | | | | | | | | | | | | | If you flick in such a way that y is within bounds but x is out of bounds, then returnToBounds should not change y; and vice-versa. Change-Id: I156a2f6e28bdcd6aecce35e639acaa05e55ee382 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | refactor sendFilteredMouseEvent to match sendFilteredPointerEventShawn Rutledge2017-09-112-17/+16
| | | | | | | | | | | | | | and eliminate more temporary QSets. Change-Id: I03b556295b75f919c2c22f8f8884b1d54d6654c0 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | Remove unused member variablev5.10.0-alpha1Lars Knoll2017-09-081-1/+0
| | | | | | | | | | | | | | | | And fix a valgrind warning about the other variables in the bitfield being used uninitialized. Change-Id: I1f3730873ef2b95e8298d0cb8f4014aa4a221dd3 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Drain the markStack while collecting rootsLars Knoll2017-09-081-1/+4
| | | | | | | | | | | | | | | | | | | | | | This avoids overflows in the markStack for test cases where we have a huge amount of compilation units with many runtime strings that all want to get marked. Task-number: QTBUG-63063 Change-Id: I7c1df0fdb9afada1830f8c218a0e52ebcd093850 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* | Fix double-free in QQmlTypePrivate for enum valuesErik Verbruggen2017-09-081-1/+1
| | | | | | | | | | | | | | Reported by ASan. Change-Id: I8e5e6561e6e721ba7fe37a4658480d14b8c437ae Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | singlePointHandlerProperties manual test fixesShawn Rutledge2017-09-081-1/+2
| | | | | | | | | | | | | | | | | | | | | | After 2617ac5b9df7dfdecf0cb02d5933c40df1a55bbc the point.pos properties are renamed. We need to accept all buttons in order to show feedback for middle and right clicks. Change-Id: I2dce1b14c4ac94ffac7b8ed3ecc12938067a434c Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | Add test for mouse event propagation and filteringJan Arve Sæther2017-09-081-0/+349
| | | | | | | | | | Change-Id: I190936abda0900822e758a19be5308a5e1da586f Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | sendFilteredPointerEvent: go back to parent traversalShawn Rutledge2017-09-082-134/+103
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The filteringParentItems vector-of-pairs is getting more and more questionable: it needs to have more pairs than we thought, then we need to remove them to prevent multiple-filtering, and then we also need to keep track of which ones we removed plus which ones are actually filtering, in order to avoid direct delivery of pointer events to the same Item after it already filtered from its children. The overhead doesn't seem worthwhile anymore. So this conceptually reverts 9b5fc80af28580e9672792dd511d876a93947882 but with some improvements. Also, do not deliver events to child-filtering items which have already filtered. Change-Id: I9d4f977dba695de7eb78ab536e0e6e8fd6a253a7 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | Blacklist tst_QQuickShape tests on macOS CI runsTor Arne Vestbø2017-09-071-0/+8
| | | | | | | | | | | | | | | | Can not be reproduced locally on 10.11 or 10.12. Task-number: QTBUG-63035 Change-Id: I0d9bfc123be8e580ca143aacb41f2a5d9e34cbc6 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* | QByteArray gets mapped to ArrayBufferAlbert Astals Cid2017-09-051-0/+5
| | | | | | | | | | Change-Id: I884e6c747af6dfffce23fa21fc320be53951a7d4 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | rename QQuickEventPoint pos properties to positionShawn Rutledge2017-09-0512-46/+46
| | | | | | | | | | | | | | | | For consistency we always spell it out, although it does make some of these properties inconveniently verbose. Change-Id: I64a08c3aa261c0ab89e09472dd47510abafbf7ca Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | qmltest: Run each test in a separate QQuickView for test isolationTor Arne Vestbø2017-09-051-34/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | We don't want the individual tests to affect each other by what state they leave the QQuickView (and corresponding QWindow and platform window) in when they finish. Task-number: QTBUG-62963 Change-Id: I90ad2364c8e9b769afc61eb762c4a604a567a856 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | shapes: Reduce stroke/fill node dataLaszlo Agocs2017-09-052-27/+14
| | | | | | | | | | | | | | Do not store the superfluous window and geometry pointers. Change-Id: Ib9cf4e62bdc6f32dc99cda25eddfebdfa05d579b Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2017-09-0540-84/+114
|\| | | | | | | | | | | | | | | Conflicts: src/quick/items/qquickwindow.cpp src/quick/scenegraph/qsgrenderloop.cpp Change-Id: Idd7106995b5545fcac869e9056a365ef9edb36ca
| * qmlimportscanner: Only skip debug/release directories if the path ends with themAndy Shaw2017-09-041-2/+2
| | | | | | | | | | | | | | | | | | Since the preceding path may contain debug or release in it, then we only want to check if the path ends with it as opposed to containing it. Change-Id: Ib4d466987fccb75771fcd2fa018b6f1375df7dc4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Marco Benelli <marco.benelli@qt.io>
| * Make releaseResources() free the renderer's shader cacheLaszlo Agocs2017-09-047-3/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Normally all shader programs from materials are cached in a simple table that is alive as long as the renderer exists, in practice this means being tied to the QQuickWindow which is often the entire lifetime of an application. Use releaseResources(), which is mostly a no-op on the scenegraph level at the moment, to free this cache. Task-number: QTBUG-62392 Change-Id: I279e595874fee1ab4fe0dede0843a3686dea5806 Reviewed-by: Gunnar Sletta <gunnar@crimson.no>
| * QQuickListView: ensure we re-layout when a delegate is placed at the last ↵Richard Moe Gustavsen2017-08-301-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | visible pos The current implementation would only return true if the added delegate was positioned below the last visible pixel. This caused a problem when the position ended up at exactly the last visible position, since then we would return false, meaning that a re-layout would not be done. Since we use the same calculations several places, this patch will factor it out into lastVisiblePos, and also fix up the places where we test on it. Especially this includes making sure that we set visibleAffected to true if we actually enter the for-loop that adds the item to visibleItems. To make the code more readable (and to ensure that we are consistent), we set it to true inside the for-loop. Task-number: QTBUG-61537 Change-Id: Ie697b5b6d9f4236ee856bde75fd9bc0a07dda7ea Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| * Doc: Minor fixes to Loader QML type documentationTopi Reinio2017-08-293-7/+10
| | | | | | | | | | | | | | | | | | | | - Convert section titles to bookcase - Minimize line length for code snippets that are embedded in tables to prevent overflow. Change-Id: I316fc0fc4c3663397110d1ad1b8b83abce4af02e Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * Doc: Fix capitalization in section titlesTopi Reinio2017-08-2925-57/+57
| | | | | | | | | | | | | | | | ...and fix some section titles to be less confusing. Change-Id: If83c3faffead9e2e9be7fc0fb360f1c5b8b1bb51 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
| * Don't copy the bytecode data from the cached compilation unitLars Knoll2017-08-291-6/+0
| | | | | | | | | | | | | | | | There hasn't been a need to copy the data since some time, as we are not patching the bytecode anymore. Change-Id: I2303d5a2fceb611933905311aaedb041a78c42ac Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Doc: add missing word to Item::enabledMitch Curtis2017-08-281-1/+1
| | | | | | | | | | Change-Id: I4f30dcc92ebd20a66fb18615f8cc82675380c450 Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
| * Update doc to clarify the slot parameter for connectNotifySignalAndy Shaw2017-08-251-0/+3
| | | | | | | | | | Change-Id: I89da2d258d6e5663d45497bd4b7fa105a11e46e7 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
| * Fix crash in mouseGrabberItemSune Vuorela2017-08-231-2/+1
| | | | | | | | | | | | | | | | | | | | Under certain circumstances, point can be null. All users of mouseGrabberItem does check for nullpointers, so it should be safe. Task-number: QTBUG-62055 Change-Id: I1d53b7980efa4fe149714a65f35d05fa306efb06 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Revert "Make QtQuickTest::mouseEvent use QTest::mouseX"Jani Heikkinen2017-09-047-186/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | It seems this is causing QTBUG-62925 and QTBUG-62926 so revert is the best option at this point to proceed This reverts commit 4c46dce8fd9c9dddddd1d07f56396b3eabb2efc4. Change-Id: Ia8ea85c1ac1ada1752b29c9fbd8439f5963d46d2 Reviewed-by: J-P Nurmi <jpnurmi@qt.io> Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Rename single and multi pointer handler classnamesJan Arve Sæther2017-09-0311-52/+52
| | | | | | | | | | | | | | | | | | Renames: QQuickPointerSingleHandler -> QQuickSinglePointHandler QQuickMultiPointerHandler -> QQuickMultiPointHandler Change-Id: I10c54944f85ca7cac374ebc6241d61793e2d38bf Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Merge dev into 5.10Frederik Gladhorn2017-09-0227-130/+343
|\ \ | | | | | | | | | Change-Id: I4376b711fbf02ea978f5d347d34a4a6a0c95dab2
| * | QtQuickTest::mouseEvent: when clicking a Window, use the given coordsShawn Rutledge2017-09-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | If the given item is a Window, pos was left default-initialized, and then a later check for isNull converted it to the center of the window. Use the given coordinates instead in this case. Change-Id: I659af9b665890084c29415394a84874e381ffcbe Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| * | Add QQuickItemPrivate::filterKeyEvent()J-P Nurmi2017-08-302-21/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows Qt Quick Controls 2 to support attached Keys signal handlers for an editable ComboBox by forwarding its internal text editor's key events to the attached Keys handler of the ComboBox control. Task-number: QTBUG-61135 Change-Id: Ib642133a19389beb04a3b53375c083d17e185500 Reviewed-by: J-P Nurmi <jpnurmi@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Liang Qi <liang.qi@qt.io>
| * | Make QtQuickTest::mouseEvent use QTest::mouseXAlbert Astals Cid2017-08-307-81/+186
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes QQuickItem::isUnderMouse returning wrong information when moving the mouse cursor with QtQuickTest::mouseX Also changes TestCase.mouseDrag to actually resemble more what real life does, i.e. send mouse moves with the same localPos if the item has already moved and update tst_drag.qml accordingly Change-Id: I80e4ab097da90d21ba987466c1b82467755a6b56 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * | QQmlSettings: use categorised loggingMitch Curtis2017-08-291-13/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | This makes it possible to e.g. easily see where the settings are saved to without having to define the macro and recompile the code. Change-Id: I9c65e6702929d86b1e439f3d836c881b3ebad14f Reviewed-by: Kai Koehne <kai.koehne@qt.io> Reviewed-by: J-P Nurmi <jpnurmi@qt.io>