aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Move QtQuick validators out of qquicktextinput_p.hJ-P Nurmi2015-03-187-231/+316
| | | | | | | | | TextField (v2) inherits QQuickTextInput, and therefore has to include qquicktextinput_p.h. Move the internal Q_AUTOTEST_EXPORT'd classes out of the header to avoid build problems on Windows due to missing symbols Change-Id: I6f37cf4e112425ff6c4c0a4ccc5e584f26599d8a Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
* Restore depth buffer usage when last render node is removedMikko Harju2015-03-181-0/+3
| | | | | | | | | Adding a QSGRenderNode to the scene permanently disabled opaque batches by disabling depth buffer usage. Reset the depth buffer usage to the default value once last QSGRenderNode has been removed from the scene. Change-Id: I760afde83ae9eaaf1b5571c37fd0081eb23b1f20 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Text: add support for paddingJ-P Nurmi2015-03-174-26/+279
| | | | | | | | | [ChangeLog][QtQuick][Text] Added padding, leftPadding, topPadding, rightPadding and bottomPadding properties. Task-number: QTBUG-41559 Change-Id: I5aa3a9eaad86de5e49d8e2da2a9f583e9a17222b Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* Merge remote-tracking branch 'origin/5.5' into devSimon Hausmann2015-03-1743-731/+400
|\ | | | | | | Change-Id: I6033aba359ac551f450ad517d20a0986bf4655f6
| * Fix warningAleix Pol2015-03-161-1/+1
| | | | | | | | | | | | | | | | If the arguments of console.timeEnd are wrong, say it's timeEnd instead of time. Change-Id: Ida8a76cd452cf3aecc03e5064bbf213333d93a03 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| * Fix usage of QtQmlDevTools private headers on OSX with framework buildsSimon Hausmann2015-03-1615-21/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously this module borrowed its private headers from QtQml, so that when writing QT += qmldevtools-private, you'd get the private headers from QtQml. This doesn't work when QtQml is built as a framework. A cleaner solution is to give this module its headers proper by letting syncqt create the forwarding headers correctly (and consequently also include them in make install). In order for this to work, the included headers themselves cannot include any headers from QtQml, which this patch also takes care of, through a centralized inclusion of qv4global_p.h. Change-Id: I9bb8337956a2774cfaca6b338369face6c6ee785 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
| * Remove QQmlDirParser from QtQmlDevToolsSimon Hausmann2015-03-164-29/+4
| | | | | | | | | | | | | | | | This class is not needed in the library. Change-Id: Ie880086a849b62a2856d1f388a64d363b040cb56 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
| * PathView: use qt.quick.itemview.lifecycle logging categoryShawn Rutledge2015-03-131-3/+17
| | | | | | | | | | | | | | | | It is the same for debugging delegate cycling in ListView. Task-number: QTBUG-42716 Change-Id: I54b83a25a5d8473c643cd326fe114317103bb24e Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
| * Acknowledge QPersistentModelIndex is a built-in meta-typeGabriel de Dietrich2015-03-121-30/+3
| | | | | | | | | | | | | | | | | | | | We remove the now unnecessary meta-type registration and conversions for QPersistenModelIndex. This reverts and amends commit 7b29a983fa794291ff8ec. Change-Id: I4e8346bb7ab03766e1dd5c2c23bb6cf47ab1f455 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| * Handle context loss in the threaded render loopLaszlo Agocs2015-03-123-0/+21
| | | | | | | | | | Change-Id: I3f9219dd2fed15094c2f7d670a981406e601959b Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| * Don't evaluate the expression in switch() multiple timesLars Knoll2015-03-111-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | The old code would evaluate the expression in the switch statement once for every case label. This is not only slower than it should be, but can also lead to unexpected results in case the expression doesn't always evaluate to the same value or has side effects. Task-number: QTBUG-41630 Change-Id: Id93baca7e3aa09ce884967ef6524d4c4f055bcd6 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| * Fix flickable stealing gestures when height >= contentHeight.Andrew den Exter2015-03-111-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Or width >= contentWidth. If newY is equal to both maxY and minY then the second assignment to rejectY can clobber the first. Changing the second assignment to an |= means rejectY is true if either is true. Secondly maxY became positive when height was greater than contentHeight instead of having a maximum of 0, which ensured rejectY evaluated to false in the case newY <= maxY and the mouse was stolen. Change-Id: I6416d0e23c3ef898887a7b3e3fcdc1dc12853548 Reviewed-by: Martin Jones <martin.jones@qinetic.com.au>
| * qt quick particles: Fix const correctness in old style castsThiago Macieira2015-03-101-5/+5
| | | | | | | | | | | | | | Found with GCC's -Wcast-qual. Change-Id: Ia0aac2f09e9245339951ffff13c958e1d7c929c0 Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
| * Fix clang warningAndrew Knight2015-03-101-0/+4
| | | | | | | | | | | | | | | | | | Removes "warning: first declaration of static data member specialization of 'static_vtbl' outside namespace 'QV4' is a C++11 extension" by placing the declarations inside the QV4 namespace. Change-Id: I9a31874430900a200e83c42ff6c1afc36f0431e1 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| * QML Engine: ArrayBuffer XHR response type supportValery Kotov2015-03-093-0/+88
| | | | | | | | | | | | | | | | | | | | | | Support for "arraybuffer" response type for QQmlXMLHttpRequest was added. [ChangeLog][QtQml][QQmlXMLHttpRequest] QQmlXMLHttpRequest now supports "arraybuffer" binary response type. Change-Id: I866e543cc7bc6ab037ffff1ef6628057b73daf90 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| * testlib: Fix qml objects not deleted between data testsCaroline Chao2015-03-091-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | Call wait(0) after the cleanup() function and not only at the end of the test run (wait(0) is used to call processEvents()). Otherwise, eventual destroy() calls in test function are not executed between data tests. Task-number: QTBUG-30523 Task-number: QTBUG-42185 Change-Id: I1d588ee28c61cda835e25307bc1c565d68b741fe Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
| * Doc: Removed the release notes for Qt Quick and Qt QmlVenugopal Shivashankar2015-03-093-586/+2
| | | | | | | | | | | | | | | | | | | | | | | | These pages were not maintained and were duplicating info. provided in the what's new page provided for each release. Change-Id: I2ee4010de22ef3fb394e3bcdb6adb15db59a2cc9 Task-number: QTBUG-43235 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com> Reviewed-by: Sami Makkonen <sami.makkonen@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * Add missing flush for multisampled QQuickWidgetLaszlo Agocs2015-03-091-1/+2
| | | | | | | | | | | | | | | | | | Otherwise we might be using a half-ready texture when performing compositing. The issue was very visible on OS X at least. Task-number: QTBUG-39917 Change-Id: I71326cb99567f458a6ca7a2cad322a315ee6674f Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * Reduce number of allocations when constructing text nodesEskil Abrahamsen Blomfeldt2015-03-092-36/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In cases where you have a huge number of text elements that can be merged, we would do a lot of reallocations (one per node that would be merged into another). As the number of merges grew, this seemed to converge at about 50% of the time spent in updatePaintNode() in the text classes. We can almost eliminate this cost by only doing one realloc per node that will actually end up in the scene graph. This patch does a first pass where it simply bundles together nodes that can be merged. Then it does a second pass where it actually merges the nodes. In this second pass it can easily precount the required size of the arrays and we can limit it to a single realloc. Task-number: QTBUG-37365 Change-Id: I4e44c01cd83df39304cbbce34f3b8f773763e091 Reviewed-by: Michael Brasser <michael.brasser@live.com>
| * Implement cache property for QQuickAnimatedImageDaiwei Li2015-03-062-2/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some longer and larger .gifs can consume a lot of memory if every decoded frame is cached. Just as the backing QMovie provides the ability to not cache frame, so should AnimatedImage. This also allows a workaround for some animated image types that can contain loops that aren't handled correctly (QTBUG-24869) to not leak memory. Change-Id: I0639461d75bb2c758917893e7a6ae5c215fffa9d Task-number: QTBUG-44447 Task-number: QTBUG-24869 Task-number: QTBUG-28844 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| * Merge "Merge remote-tracking branch 'origin/5.4' into 5.5" into refs/staging/5.5Frederik Gladhorn2015-03-064-5/+17
| |\
| | * Merge remote-tracking branch 'origin/5.4' into 5.5Frederik Gladhorn2015-03-034-5/+17
| | |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4numberobject.cpp Change-Id: I4e66a03ef4d99cec192c9da30c028fd8c1f4ac0d
| | | * V4: fix ToFixed rounding for 0 fraction digits.Erik Verbruggen2015-03-031-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (12.5).toFixed() should return 13, not 12. Task-number: QTBUG-43885 Task-number: QTBUG-44039 Change-Id: Id2b19641e8c12dd5755d8447508b74567e4a2b9b Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| | | * Fix crash in overdraw and change visualizersDaiwei Li2015-02-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It appears to be possible for node->element()->batch to be NULL Task-number: QTBUG-43129 Change-Id: If6e4e265a02ee305bf3aa9cad387b7a73648367a Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| | | * Fix memory leak of QSGContext object in QSGThreadedRenderLoopjian liang2015-02-242-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add destructor for QSGThreadedRenderLoop to destory QSGContext object. Change-Id: I479947eb35a5d7888d45655a9b8e2ece5e30bc33 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| * | | QV4::Primitive: Help clang disambiguate symbolsGabriel de Dietrich2015-03-061-0/+3
| | | | | | | | | | | | | | | | | | | | Change-Id: Ie20e6081b80e8f177991ac8aafda054c11b1620c Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | | | Export QQuickImage, we need it in QtGraphicalEffects.Gunnar Sletta2015-03-101-1/+1
| | | | | | | | | | | | | | | | | | | | Change-Id: I91bf90b41cdcab4beb7dbf6bf770bd251561a258 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | | | Merge "Merge remote-tracking branch 'origin/5.5' into dev" into refs/staging/devGabriel de Dietrich2015-03-0621-62/+103
|\ \ \ \
| * | | | Merge remote-tracking branch 'origin/5.5' into devGabriel de Dietrich2015-03-0621-62/+103
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quick/items/qquicktextedit.cpp Change-Id: I354093ceb996aae40254f2143dec2bb74cf5eb17
| | * | | Fix build: QString needs to be fully-defined for QString()Thiago Macieira2015-03-051-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | qqmldebug.h:46:71: error: invalid use of incomplete type ‘class QString’ qglobal.h:651:7: error: forward declaration of ‘class QString’ Change-Id: I1a800c709d3543699131ffff13c3797acbc19956 Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
| | * | | TextEdit: Block's update should update paint nodeRuslan Nigmatullin2015-03-051-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QQuickTextEdit::invalidateBlock method marks nodes as dirty but doesn't call QQuickItem::update(). Because of that it's impossible to rehighlight text by QSyntaxHighlighter. Task-number: QTBUG-44765 Change-Id: Ibfd973430cf00927dbec027d129c6d722634575e Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
| | * | | WinRT: Set alignment boundary to page sizeMaurice Kalinowski2015-03-051-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a hard requirement from the QQmlEngine internals since 5.5 and otherwise causes crashes inside the engine. Change-Id: Id25f465576a0095f5b34da469abe761d3f3bd866 Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
| | * | | Work around QPersistentModelIndex being a built-in meta-typeGabriel de Dietrich2015-03-051-3/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a temporary work-around and will be removed once I63d733d1eb66aa61691e7afce27fe7372a83ac00 is merged in qtbase. Change-Id: I6cfcf1ddc2c9d408c26c171be865d40141de7fa0 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
| | * | | Fix invocations of static methods of QGuiApplication/QCoreApplication.Friedemann Kleint2015-03-0518-58/+59
| | |/ / | | | | | | | | | | | | | | | | Change-Id: I7bcc209b0c6e77cf6d974af85a19487345a48975 Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
* | | | TextEdit: add support for paddingJ-P Nurmi2015-03-053-9/+235
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes it possible for TextArea to inherit TextEdit, reserve space for the decoration, and set the desired property defaults without having to create dozens of property aliases. [ChangeLog][QtQuick][TextEdit] Added padding, leftPadding, topPadding, rightPadding and bottomPadding properties. Task-number: QTBUG-41559 Change-Id: I4fa22f86e6151524a63b2b862f17bc9d6a713142 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | | | TextInput: add support for paddingJ-P Nurmi2015-03-054-16/+241
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes it possible for TextField to inherit TextInput, reserve space for the decoration, and set the desired property defaults without having to create dozens of property aliases. [ChangeLog][QtQuick][TextInput] Added padding, leftPadding, topPadding, rightPadding and bottomPadding properties. Task-number: QTBUG-41559 Change-Id: Iaa7697a10a6f66685c7cae454edf4c1984d411bc Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | | Merge "Merge remote-tracking branch 'origin/5.5' into dev" into refs/staging/devFrederik Gladhorn2015-03-0379-253/+446
|\ \ \
| * | | Merge remote-tracking branch 'origin/5.5' into devFrederik Gladhorn2015-03-0379-253/+446
| |\| | | | | | | | | | | | | | Change-Id: I94f8ae93d76bd5c120de25d9c238701afe8bfbd0
| | * | Use of fullsize distance field textures should be font-dependent.Michael Brasser2015-03-031-7/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This shouldn't be a static decision as the glyph count depends on the font. Change-Id: I67ea98595505df4a3a30b16e867e76f89b28c1ef Task-number: QTBUG-29264 Reviewed-by: Gunnar Sletta <gunnar@sletta.org> Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
| | * | V4: fix regalloc for loops with many life&changing vars.Erik Verbruggen2015-03-031-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When all registers are in use, and one needs to be spilled, the register whose use is the furthest in the future will be chosen. What needs to be taken into account is that any use that can also work from the stack can be skipped, because it does not require the value to be in a register. Task-number: QTBUG-44687 Change-Id: Ide624b190603d9a22f992d4ae5daa3ce8d94472c Reviewed-by: Fawzi Mohamed <fawzi.mohamed@theqtcompany.com>
| | * | V4: fix phi node use position calculation.Erik Verbruggen2015-03-032-18/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As phi-nodes get transformed into moves, and the moves end up right before the terminator of the basic block of the incoming edge, the use by that phi-node is the position of that terminator minus one. However, when checking if uses need a register, this was not taken into account, resulting in an invalid life-time interval split position calculation. Task-number: QTBUG-44687 Change-Id: I0edd416f7ee5c8ea16bf7133870be45d0e6efea9 Reviewed-by: Fawzi Mohamed <fawzi.mohamed@theqtcompany.com>
| | * | Avoid assert in rich text when img width is invalidEskil Abrahamsen Blomfeldt2015-03-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you set the width or height of an <img> tag to something invalid, this will be registered as -2 by the HTML parser. We should treat this case the same as if there is no width/height specified and use the implicit size instead. [ChangeLog][Text] Fixed assert when setting an invalid width or height on an <img> tag in a text element. Change-Id: Iae8c33fa184316632f72318e71f26ab005645a21 Task-number: QTBUG-44743 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| | * | testlib: Introduce MouseDoubleClickSequence() methodCaroline Chao2015-03-023-10/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The existing method MouseDoubleClick() emulates the mouse double click event only. The added method MouseDoubleClickSequence() emulates the full sequence of mouse events a physical double-click would generate: Press-Release-Press-DoubleClick-Release Introducing a new method in order to provide convenience when a test requires to simulate a complete double-click action without changing the behavior of MouseDoubleClick() and risking to break existing tests. Add autotest. Task-number: QTBUG-42185 Change-Id: I1cdddd9e21d3b1d8a818f6d4e3717b06b7d70e08 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
| | * | QQuickWindow: rename deliverGestureEvent to deliverNativeGestureEventShawn Rutledge2015-02-272-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Native gestures are distinct from QGestureEvent, and we might need another deliver method for those eventually. Change-Id: I969c9b830d1dc7a91ffbc6cae2bdb68552a58344 Reviewed-by: Andrew Knight <qt@panimo.net> Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
| | * | QQuickWindow: move deliverGestureEvent outside QT_NO_WHEELEVENT sectionShawn Rutledge2015-02-271-17/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Turning off support for wheel events does not affect gesture support. Change-Id: I64a110327179d62a69864979396b92472c53285e Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com> Reviewed-by: Andrew Knight <qt@panimo.net>
| | * | QtQuick: Micro-optimize iterator loops.Friedemann Kleint2015-02-2612-37/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid repeated instantiation of end() in loops, use variable instead. Change-Id: I6ab1fe2b82406d5ee91710a0333587ffb82c04d4 Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
| | * | QtQml: Micro-optimize iterator loops.Friedemann Kleint2015-02-2611-27/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Avoid repeated instantiation of end() in loops, use variable instead. Change-Id: I3bb1c6918cfd16a5dcefbcc03c442e99fe9bf76b Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
| | * | Optimize distance field construction.Michael Brasser2015-02-252-4/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reduce the number of times we construct a painter path from a glyph. Change-Id: Ic1f32c78ab5dfd3b75d5442da163cda1dedab3ee Task-number: QTBUG-42853 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| | * | Include <limits> in qqmlprofilerservice_p.hUlf Hermann2015-02-251-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As we use std::numeric_limits in that file we should do this. Change-Id: Idd8da16ce062b2ef24f926bcf33de95559464bb9 Reviewed-by: Pasi Petäjäjärvi <pasi.petajajarvi@theqtcompany.com> Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| | * | Allow glyph cache textures to be created at full size.Michael Brasser2015-02-252-3/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On embedded hardware, texture resizes can be quite slow. The glyph cache currently often needs to resize when new glyphs are added, and glyph additions are very frequent when using a language with a large set of glyphs (such as Chinese). The current glyph cache design minimizes the amount of memory used. When QSG_PREFER_FULLSIZE_GLYPHCACHE_TEXTURES is set, and we are using a font with a large number of glyphs, we can instead allocate max-sized textures. This leads to significantly less time when inserting glyphs into the cache (often incurred over a span of time), at the cost of higher initial memory and creation times (often incurred at application startup). Change-Id: Id1021b9d213e5f8635c4197b624474f28c6f44ff Task-number: QTBUG-29264 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net> Reviewed-by: Gunnar Sletta <gunnar@sletta.org> Reviewed-by: Yoann Lopes <yoann.lopes@theqtcompany.com>