aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
Commit message (Collapse)AuthorAgeFilesLines
* Fix leaking textures and animation resources by software backendKirill Burtsev2018-11-142-3/+7
| | | | | | | | | | | | QQuickStyleItem1::updatePaintNode assumes every instance of QSGNinePathNode (QSGSoftwareNinePatchNode for software backend) to own new texture object on setTexture. Instance of QQuickAnimationController is also assumed to be deleted by render loop on window destroy. Fixes: QTBUG-69290 Change-Id: Ibd22229108c986c1c115600280482cea01bf4160 Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* Accessible: Return StaticText if there is no explicit role setAndy Shaw2018-10-191-4/+6
| | | | | | | | | | Before, it would assume that StaticText was the role if the item could be cast to a QQuickText. It should only do this if the role is not explicitly set, in case it is not really StaticText in the attached property. Change-Id: I800810f1347fc9aa412c4ca5d180f78d27a89b38 Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
* At least warn when triggering a rendering limitationAllan Sandfeld Jensen2018-10-181-0/+3
| | | | | | | | | We can only have up to 65536/4 tiles since we are indexing with quint16. Task-number: QTBUG-58924 Change-Id: I55b5a9f2a3fb4582e327859482dd978b61b21e4e Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Warn, don't crash during nested delivery of mouse or touch pressesShawn Rutledge2018-10-132-0/+10
| | | | | | | | | | | | | If during delivery of a mouse press, user code calls qApp->sendEvent() with another mouse press, then when delivery of the nested event is finished, we call QQuickPointerMouseEvent::reset(nullptr). Then when delivery of the original mouse press resumes, crashes are possible because most of the code assumes that QQuickPointerEvent::m_event is not null during delivery. Change-Id: Id65b1f2f64351e40d03bcd4f4d16693d616729da Fixes: QTBUG-70898 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix crash in QQuickAnimatorProxyJob::sceneGraphInitialized()Andrew Smolko2018-10-051-2/+4
| | | | | | | | Check for null pointer to controller. Fixes: QTBUG-64402 Change-Id: Ic84bdc9c5cde0e65da436e1c85b40eaf6e3ed77a Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* QQuickItem: document which events are accepted by defaultMitch Curtis2018-10-042-1/+51
| | | | | Change-Id: I64a2ab811b48d2a231e18c493fb1f6087fd02905 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Don't get confused about the grabber during replayDelayedPressShawn Rutledge2018-10-031-35/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Re-apply a fix equivalent to 8bdf33051aa679db1f060314c6ccab1cb9a77a7a which seemingly never got included in 5.10 or newer branches. If a ListView with pressDelay contains a MouseArea in a delegate, and you tap the MouseArea on a touchscreen, QQuickFlickablePrivate::replayDelayedPress() sends a saved copy of the original QMouseEvent, and then a synthetic release, without marking it as synthetic. (QQuickFlickable is not touch-aware in any way: it thinks the mouse events it receives are real ones.) As a result of sending the delayed press through, QQuickWindowPrivate::setMouseGrabber() is called and sets the touchpoint's grabber to the MouseArea, but does not set the core pointer's eventpoint's grabber. Flickable then ungrabs for itself, so we have to ensure that the ungrab affects either the actual mouse or the synth-mouse, whichever was in use. Then because the synthetic release is not known to come from a touchscreen, QQuickWindowPrivate::deliverMouseEvent() was checking the core pointer's grabber and concluding that there is no grabber. In such a case, it now checks whether touchMouseId is set, meaning that we are somewhere between sending a synthesized press and release, gets the touchpoint's grabber (which is MouseArea, because it didn't reject the press), and sends the release there. Task-number: QTBUG-61144 Fixes: QTBUG-69059 Change-Id: Ie027bef4c8de16e1cbf5d19e120cb22a3df4c037 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Add QQuickItemPrivate::updateOrAddItemChangeListener()Mitch Curtis2018-10-022-0/+11
| | | | | | | | | | | | | | | | This is identical to the existing updateOrAddGeometryChangeListener(), except that it updates the regular "types" member, not "gTypes". This function will allow preventing duplicate change listeners, at the expensive of a call to QVector::indexOf(). It's useful when there is no other way for calling code to check if a listener will be a duplicate before adding it. Task-number: QTBUG-69056 Task-number: QTBUG-70729 Change-Id: Idba039f355023e8d45a8b46e4af95aa81c13c3f4 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@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>
* 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>
* Delete textures even if one of the windows is invisibleVaL Doroshchuk2018-08-271-5/+7
| | | | | | | | | | | | | If there is an invisible window that will not be rendered but is constantly requested to render, updatePending is always set. This prevented purging of already unneeded textures, and meant endSync() was never called and m_texturesToDelete was never cleared. Added a fix to clear the updatePending flag regardless of visibility. Task-number: QTBUG-66116 Change-Id: Ib8bf453a3dee18d3d43342580c619664b701acae Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Doc: add list of SVG colors to color QML Basic Type pageMitch Curtis2018-08-093-2/+605
| | | | | | | | | The page that we link to used to contain a list of the colors, but it doesn't anymore, so we'll add our own. Change-Id: I1160e3de7f4ab0ead727b0261edafda30cce3270 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Martin Smith <martin.smith@qt.io>
* Doc: Rename section titles to avoid auto-linker issuesPaul Wicking2018-08-071-4/+4
| | | | | | | | | The section titles cause links that should target QML types to link to the page sections. Renaming the section titles to link correctly. Task-number: QTBUG-59445 Change-Id: Idde600c87621d270c4e25a5dac0a55fbfc7a96ef Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix build without GUI moduleSamuli Piippo2018-07-311-2/+2
| | | | | | | | | | | | | | Qt Quick has a dependency to gui, but there is no way to disable an entire configure module from the configure system. Add module checks to configure.json so that it passes even without the gui module present. Fixes "Unknown feature object movie in expression 'features.movie'." Task-number: QTBUG-56656 Change-Id: I16355b7e218c32cab33e8ef9a6012da3e55656bb Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Doc: Add precision to scene graph descriptionPaul Wicking2018-07-301-4/+4
| | | | | | Task-number: QTBUG-60913 Change-Id: I3a9d8925337a12a849e39a70f168dbfc7f007e5f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Remove const from QQuickPointerEvent::device propertyShawn Rutledge2018-07-271-1/+1
| | | | | | | | | A property never has const pointer as its type. Getting this wrong also causes problems with the QML type registration not matching the actual type. Task-number: QTBUG-61749 Change-Id: Ic3c47499cc4dff6df0beecf5b1413c76509ca6f5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Doc: Fix broken link targetsPaul Wicking2018-07-251-0/+1
| | | | | | | | | * Rename two section titles that caused confusion for the autolinker. * Add see also link to correct location from SpriteSequence QML type. Task-number: QTBUG-58640 Change-Id: I62b941d00198ac56d998ca14b926c7bb37f6c91e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Revert "[Quick] Make sure an transition instance is stopped when destroyed"Simon Hausmann2018-07-171-1/+0
| | | | | | | | | | This reverts commit cf0b965aaab0ea7e777c1f8e8d35de3a73d7d08e because it causes crashes in qtquickcontrols tst_extras. Change-Id: I3809f2da84cf24b990b017a44837c02fc6c776d1 Task-number: QTBUG-69497 Task-number: QTBUG-38099 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Doc: update link to point to Controls 2 rather than Controls 1Mitch Curtis2018-07-161-1/+1
| | | | | | Change-Id: I2dd5877754b3ccbc975e5cdae5e80d1db28f8e48 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* [Quick] Make sure an transition instance is stopped when destroyedErik Verbruggen2018-07-131-0/+1
| | | | | | | | | | | | | | | When a running transition does not finish of natural causes (reached the end state due to e.g. the timer finishing), it can happen that it will never be marked as finished. Specifically, when an transition is running (e.g. an add animation for a ListView), and that transition is replaced by another transition (a displace transition, because another item got added to the ListView before the add transition was finished), the first animation was never marked as stopped. The effect was that the running property would stay "true" for forever. Task-number: QTBUG-38099 Change-Id: Id7d7053cb2fc1912127d9f5e71f27eb984ba7435 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Doc: Fix broken link to examplePaul Wicking2018-07-131-1/+1
| | | | | | Task-number: QTBUG-69438 Change-Id: I4ac191029eccc97e7b9947ec56bf008562c9f4ef Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickRenderControl: Grab framebuffer with alpha if the window uses itAndy Shaw2018-07-121-1/+2
| | | | | Change-Id: Ie11e86be997d749e6f82f0fb81a82bb0b50ab1f1 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Item, QQuickItem: document which properties are used in map functionsMitch Curtis2018-07-102-0/+34
| | | | | Change-Id: Idf3aecf88319a2967ca51985003be32c7e7ef42a Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Doc: add section about type safetyMitch Curtis2018-07-101-0/+30
| | | | | Change-Id: I6ae5be8480ff817651c66a1617dceeefb96e5712 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Doc: clarify and trim down the list in "Using Qt Quick Layouts"Mitch Curtis2018-07-091-6/+5
| | | | | | | | | - Clarify that anchors are fine for layouts that are not children of a layout. - Remove redundant list item. Change-Id: I187875ff3970620a6089716c5d9f41cc80997b07 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Doc: replace "KiSS" section with Coding ConventionsMitch Curtis2018-07-061-6/+5
| | | | | | | | | | The section currently doesn't have any content, and as such, it doesn't provide much value. The coding conventions link in the related information sub-section is useful information to have, however, so we should keep that. Change-Id: Idc62b41d098528898cc8d65bfaf73879caa14b86 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Don't leak components in QQuickLoaderColin Ogilvie2018-07-051-2/+6
| | | | | | | | | | | Only create source component in loadFromSource if it does not already exist. Previously toggling the active status when loading from source would create a new source component every time active became true. [ChangeLog][QtQuick][Loader] Don't leak components when changing source url. Change-Id: I1e4cfd5613e3851fcb4f3f55e78981f7c070cc77 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Doc: add a section that demonstrates various contentX/contentY statesMitch Curtis2018-07-0411-1/+26
| | | | | | | This makes it easier to visualize how the properties work. Change-Id: I04cb1a99a1f831e5c892cb27e4a0cd127fe450e0 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Doc: Mark the \snippet statements with a .pro fileVenugopal Shivashankar2018-07-021-0/+2
| | | | | | | | | Conditionally excluding such statements is required to avoid irrelevant content in documentation in some cases. Change-Id: If6751608dc438de6f7cc0376ffc36f8d994afba6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Doc: clarify behavior of QQuickItem's constructorMitch Curtis2018-07-021-0/+3
| | | | | | | | It uses the parent argument as both a visual parent and a QObject parent. Change-Id: Ib6c645c072462501c77f27085cba7538703c5966 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Doc: Fix broken linksVenugopal Shivashankar2018-06-282-2/+2
| | | | | | Change-Id: I3c09f8172fd79f3517b338e2d097bdbd88f325d6 Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Build without the draganddrop featureAndy Shaw2018-06-252-3/+2
| | | | | Change-Id: I5e3a3ebd36d49fdf649eec5a3fb0a8fdb048ce0d Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QQuickPathViewPrivate: fix heap-use-after-freeMitch Curtis2018-06-251-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The TabBar auto tests in Qt Quick Controls 2 repeats the following process very quickly for several data rows: 1. Creates a TabBar (PathView, when using the Universal style) 2. Moves items in its QQmlObjectModel 3. Deletes the TabBar When run with ASAN, this test would fail, because the TabButtons (which are child items of the PathView) would try to access a deleted QQuickItemChangeListener upon their destruction. The underlying issue is that QQuickPathView::modelUpdated() is called, and before a refill() can happen, the view is deleted. QQuickPathView::refill() was the only execution path that was releasing the cached items (QQuickPathViewPrivate::itemCache), and since part of releasing an item involves removing the QQuickPathView as a change listener from the item, the item would access the deleted view (listener) when the item was being destroyed. This patch fixes the issue by also releasing cached items in QQuickPathViewPrivate::clear(), which is always called by the destructor. Task-number: QTBUG-68964 Change-Id: Ic5bf0943be79948c86bf7c07ef13ecd1a7b971ba Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
* Doc: Move literal codeblocks to snippet filesVenugopal Shivashankar2018-06-223-6/+58
| | | | | Change-Id: Iff45ea6cf414717fd1cb0a194eef390a9f153838 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Doc: Move the code snippets to a separate snippet fileVenugopal Shivashankar2018-06-225-21/+220
| | | | | Change-Id: I17671563f2beebe16ae1d08552854eaf44ae43ee Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Fix transitive includeUlf Hermann2018-06-201-0/+2
| | | | | | | | qsgtexturefilehandler_p.h is included through other headers that depend on QT_CONFIG(opengl). Change-Id: Ic87482289332cb1a0215ca74362207f9941239d7 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Doc: Add missing dots (qtdeclarative)Paul Wicking2018-06-1962-116/+116
| | | | | | Task-number: QTBUG-68933 Change-Id: Ibb5aa227e82825085e7214e17dcffcb17fd44157 Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Flickable: fix another possible cause for out-of-sync moving flagsNils Jeisecke2018-06-191-4/+2
| | | | | | | | | | | | | | | | | | In addition to d868bb4f3e4b0424fd4a2989ff1c82692b0f014c this removes the check for scrollingPhase in movementEnding. If movementEnding is invoked by some codepath other than timerEvent (e.g. setContentY) and scrollingPhase is true this will again prevent any further invocation of movementStarting from within the drag method (see d868bb4). As this check was introduced together with the movementEnding timer (QTBUG-63026) and scrollingPhase is now checked inside the timerEvent there should be no need for the check in movementEnding. Task-number: QTBUG-67460 Change-Id: I88ad6e3ee56b88a66bb61798b8876324f4842f1e Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix subrect of mismatched dpr sprite imageAllan Sandfeld Jensen2018-06-011-5/+5
| | | | | | | | | Scale the subrect to fit image dpr. Task-number: QTBUG-68490 Task-number: QTBUG-68582 Change-Id: I6b0a9af73013dc6cf2b65103d5868f45da8e338e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Doc: link to integration flowchart in "Interacting with QML from C++"Mitch Curtis2018-05-221-2/+2
| | | | | | | | | | Replace the link to the more specific "Integrating QML and C++" page with a link to "Choosing the Correct Integration Method Between C++ and QML", as the flowchart is a much quicker way for users to determine the correct approach for their use case. Change-Id: Ia2c269f9149d801644407bba7388624d69a75564 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* setGrabberItem: consistently call touchUngrabEvent or mouseUngrabEventShawn Rutledge2018-05-152-8/+7
| | | | | | | | | | | | Calling grabberItem() to get the old grabber must come before setting m_exclusiveGrabber. Then we call oldGrabberItem->touchUngrabEvent() or oldGrabberItem->mouseUngrabEvent() as appropriate. Now the responsibility for this is moved from QQuickItem::grabMouse() to QQuickEventPoint::setGrabberItem() (which it calls). Task-number: QTBUG-65648 Change-Id: Ia6219cb798d7f671ccc4006d51eeb87dbdbda3ef Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Pass the arguments correctly to QRadialGradientAndy Shaw2018-05-151-1/+1
| | | | | | | | | | The parameters for createRadialGradient indicate the position and radius for the two circles. Therefore the radius arguments should be used with their respective circle positions. Task-number: QTBUG-67960 Change-Id: Ifacba4d43939bafeed451e713250f716a11d30d1 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix for input method commit that ends with newlinePaul Olav Tvete2018-05-141-1/+7
| | | | | | | | | | | | | | | | | If the input method event contains a commit text that ends with a newline, text, the commit string is inserted first. This changes the current block. This change makes sure that we apply the formatting changes (including removing the old preedit text) to the old block in this specific case. This is a copy of change 6cece0f43a18dc8c9dbf5bc49ce515714f090725 in qtbase, since the code is duplicated. Task-number: QTBUG-67836 Change-Id: I531d3f1dce51d840acc0ef7fda9e7affb3192327 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix build without features.gesturesTasuku Suzuki2018-05-145-2/+32
| | | | | | Change-Id: Id2fb6419be9a35ddaa24106d3022e72070cb908d Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
* MouseArea: set pressed state to Qt::NoButton not nullptrShawn Rutledge2018-05-131-1/+1
| | | | | | | Correction to 499ec43937e926e4f2fa57a9baa455fcb3862262 Change-Id: I9f9fb7cf3a0a04611e7f0a31f57147fbbc03c1a5 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix bug where Ungrab event was not sentJan Arve Sæther2018-05-111-1/+2
| | | | | | | | | | | | clearGrabbers() will also clear QQuickWindow::mouseGrabberItem(), so we have to retrieve a copy of the mouse grabber item in advance of calling clearGrabbers(). This could happen when a filtering parent actually called grabMouse() on mouse release(!) event. Change-Id: I287214dbdff802707be625d73c38dd9c5d723aef Task-number: QTBUG-68030 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix build without features.quick-shadereffectTasuku Suzuki2018-05-101-0/+1
| | | | | | Change-Id: Id4be19faa05e272ad9bf967516e0b49727016e2b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix crash when changing the source of AnimatedImage after a frame changeLouis du Verdier2018-05-081-5/+11
| | | | | | | | | | | | | | | | | | | | | | QMovie emits the signals updated() and frameChanged(), and restarts right after its timer to prepare for the next frame. Since AnimatedImage destroys its underlying QMovie when its source changes, the lines after emit frameChanged() in QMovie will use free'd memory and will most of the time produce a crash. This fix delays the destruction of the underlying QMovie of AnimatedImage using deleteLater() to prevent this kind of behavior from happening without impact/behavior change in the code of QMovie. Unit tests added as well to cover this situation. This commit also fixes a similar crash when Component.onCompleted is called and when the source changes in the associated callback. Task-number: QTBUG-67427 Change-Id: Ic6568a1bc251e5fa2ee1cf8e5f50eaa56c3007db Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Louis du Verdier <louis.du.verdier@free.fr>
* Fix Hidpi BorderImage in software rendererAllan Sandfeld Jensen2018-05-021-4/+7
| | | | | | | | | | We have to correct for the fact that sub-rects of images in QPainter are in source coordinates. Change-Id: I457527b4ff7c1df5f6b662c3ed4d690e05efb4fb Task-number: QTBUG-40366 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* QQuickItem: Guard against null deref in transformationsRobin Burchell2018-04-301-0/+6
| | | | | | | Change-Id: Ieb14322c104d816842e04e521b556bfc11855f1c Task-number: QTBUG-67024 Reviewed-by: Robin Burchell <robin.burchell@crimson.no> Reviewed-by: Michael Brasser <michael.brasser@live.com>