aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
Commit message (Collapse)AuthorAgeFilesLines
* QtDeclarative fixes and workarounds for NaClwip/naclMorten Johan Sørvig2016-05-131-0/+5
| | | | | | | | | | | Make QtDeclarative run on Native Client. Some of these should be looked at more closely at a later point in time, but will do as workarounds from now. Change-Id: Ifddcb45b190c3a80c6137772a05ababb5466ea22 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Merge "Merge remote-tracking branch 'origin/5.5' into 5.6" into refs/staging/5.6Simon Hausmann2016-01-213-2/+10
|\
| * Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2016-01-193-2/+10
| |\ | | | | | | | | | Change-Id: Ieb48911638b5c1acdfd4dee8aa19dca9be99a1f6
| | * QQuickTextLine: set lineOffset to zero in ctor5.5Anton Kudryavtsev2015-12-171-1/+1
| | | | | | | | | | | | | | | Change-Id: Ie6b085157cebaf06750a30bc050b6bed0c7f6018 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
| | * docfix: Make it clearer how Context2D relates to CanvasGunnar Sletta2015-11-301-0/+8
| | | | | | | | | | | | | | | Change-Id: Id64aff29ef8bc7cbb4f7fc46b1a0d30a47585055 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
| | * MouseArea: fixed a crash in propagate()Liang Qi2015-11-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Should not propagate without window. Task-number: QTBUG-49100 Change-Id: Ieda3a8357283f8d07d4ffc0cc62c4e15645d7e5a Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | | QQuickItem: fix an infinite loop nextItemInFocusChain()Liang Qi2016-01-201-0/+2
|/ / | | | | | | | | | | | | | | When isTabFence is set to true and no children. Task-number: QTBUG-50516 Change-Id: I8430336fde7ab041797f8f9d9dfe5b9d56fecddd Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | QSGDefaultImageNode: Only set DirtyGeometry if new texturePär-Olof Håkansson2016-01-191-1/+2
| | | | | | | | | | | | | | | | | | QSGDefaultImageNode::preprocess() always sets the geometry to dirty even if no new texture was grabbed. Change-Id: Ifb6ce160854aa0a5b9e0f87fbf517b21e86e0ade Task-number: QTBUG-49904 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | QQuickItemView: Take sticky header/footer into account for ↵Robin Burchell2016-01-153-4/+6
| | | | | | | | | | | | | | | | | | | | | | positionViewAtIndex(). When using an overlaid header or footer, we must adjust the position we come up with by the appropriate size in order to end up at the correct place. Change-Id: I218b9aef7fdf37f56ffb63dc395f97045b55a186 Task-number: QTBUG-50097 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | QQuickAnimatorController: fix dangling QQuickAnimatorProxyJob pointerJ-P Nurmi2016-01-081-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | We're hitting crash problems in controls2 auto tests where QQuickAnimatorController::stopProxyJobs() contains dangling pointers in m_proxiesToStop. The window for these proxy jobs had been already reset, so the destructor of QQuickAnimatorProxyJob was not removing it from QQuickAnimatorController's m_proxiesToStop. Change-Id: I89e3b174c86dfb217a555f07ee1ce4c42cbcf204 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org> Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | Correct declaration in doc to match const in code.Edward Welbourne2016-01-061-2/+2
| | | | | | | | | | | | | | | | | | QSGTextureProvider::texture() was getting a warning from qdoc because it didn't find an exact match for its signature: the doc lacked const. Ditch some spurious semicolons while we're about it. Change-Id: I785ae8b8d46c839a1e29339284834a8b8e44bffe Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
* | QQuickRepeater: Use qmlobject_(dis)connect instead of regular (dis)connect.Robin Burchell2016-01-051-10/+12
| | | | | | | | | | | | | | A bit faster, not that this is the most important case for it. Change-Id: I3e50bd4a45d2b60c105a9315ccf0b2c34502cb8d Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | Make QQuickPaintedItem support Item::layerGunnar Sletta2016-01-041-0/+7
| | | | | | | | | | Change-Id: I4baf8416704fdb65b96b7e0b8620c651f9199159 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
* | QQuickFlipable: Set enabled property on whichever side is considered active.Robin Burchell2015-12-311-4/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a regression in behavior whereby input is not blocked when the side changes. In QtQuick1, input was tied to opacity: items with a 0 opacity would not receive input. In QtQuick2, this is not the case. [ChangeLog][QtQuick][Flipable] Flipable now toggles the 'enabled' property on whichever side is active. This restores broken behavior compatibility with QtQuick1, and blocks input to whichever side is not active. Change-Id: I36e29089cd7ffd05bf1f415490e0e0816a86bf30 Task-number: QTBUG-37072 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | QQuickDropArea include cleanupSamuel Gaist2015-12-242-5/+0
| | | | | | | | | | | | | | Remove unused includes Change-Id: I088b7efda4269faaceb39ea865eadc85fb2f9039 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Fix ListView.OverlayHeaderJ-P Nurmi2015-12-231-2/+2
| | | | | | | | | | | | | | | | Infinite loop because of rounding in QQuickFlickablePrivate::fixup(). Change-Id: Icffe216587d90660ac3cb8090a676868416566c8 Task-number: QTBUG-50105 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | Improve Scene Graph and Rendering documentationMitch Curtis2015-12-211-2/+2
| | | | | | | | | | Change-Id: I4046e267d4c3a5eae9d3977b2d5f11987c4d1206 Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
* | Link to drag and drop examples in relevant placesMitch Curtis2015-12-162-0/+3
| | | | | | | | | | | | | | | | So users at least have some idea of how to use these types, as their documentation is quite lacking. Change-Id: Ic4644cc259fabbd1462e611316dcec3c5a0d2c4e Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
* | Fix QQuickPaintedItem::renderTarget docsJ-P Nurmi2015-12-151-1/+1
| | | | | | | | | | Change-Id: I503ba2c7b6b58f01c8270d3a1416ec197f24e0e2 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
* | Don't warn about non-existent default properties when one was foundMitch Curtis2015-12-152-5/+30
| | | | | | | | | | | | | | | | | | | | When at least one default property of a target object is considered valid by an animation, we don't need to warn about other default properties that weren't found. Change-Id: I648f17a55fdfcbed2b4c7e94d88206c3dc3d1a32 Task-number: QTBUG-22141 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | Fix containsMouse with touch and hoverEnabledPaul Olav Tvete2015-12-151-0/+9
| | | | | | | | | | | | | | | | | | | | | | When we synthesize a press/release from touch, the item believes that the mouse never leaves, so if we have several mouse areas, they may all claim that they contain the mouse at the same time. The solution is to synthesize a move back to the actual mouse position. Task-number: QTBUG-40856 Change-Id: I43610d95aa383f847db18b387405b0c4e91cea0f Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
* | Fix shader compiler error (uniform and out variables with same name)Sean Harmer2015-12-151-2/+2
| | | | | | | | | | Change-Id: I991b22bf52f3523762df25ce7d5d7e8a0f08a2a2 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | qDelete(hash/map.values()) -> qDelete(hash/map)Albert Astals Cid2015-12-151-1/+1
| | | | | | | | | | | | | | Saves iterating the whole container and unneeded allocation of a list Change-Id: Iae1f8e0cf3a17b163cf930c43a27b2ebb4315e5c Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Fix styled text core profile shaderSean Harmer2015-12-151-3/+3
| | | | | | | | | | | | | | Without this all styled text appears as solid-filled rectangles. Change-Id: I7b64b274b3562b75ed7126d4bb8e89b6cb8d6f77 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
* | QQuickTextEdit: Fully qualify enumerations in changed() signals.Friedemann Kleint2015-12-151-4/+4
| | | | | | | | | | | | | | | | | | Fix warnings when running tst_qquicktextedit: QWARN : tst_qquicktextedit::mouseSelectionMode_accessors() QSignalSpy: Unable to handle parameter 'mode' of type 'QQuickTextEdit::SelectionMode' of method 'mouseSelectionModeChanged', use qRegisterMetaType to register it. QWARN : tst_qquicktextedit::textFormat() QSignalSpy: Unable to handle parameter 'textFormat' of type 'QQuickTextEdit::TextFormat' of method 'textFormatChanged', use qRegisterMetaType to register it. Change-Id: I2d41f970777c9ee4d8999acceed9e1b9cf52b0f0 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
* | Clean up correctly in rendercontrol to avoid crashesLaszlo Agocs2015-12-092-7/+13
| | | | | | | | | | | | | | | | | | | | Not destroying the Animator controller leads to scenegraph animators running even after destroying the rendercontrol and the window. Add the missing delete call and fix the somewhat broken cleanup sequence. Task-number: QTBUG-49635 Change-Id: I170b4bb4b065bda46d8ab9ad9a3992bc8cfd1d1e Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | QQuickImageBase: Add support for @3x imagesOlivier Goffart2015-12-071-28/+12
| | | | | | | | | | | | | | | | | | | | | | | | Use the qt_findAtNxFile function from QtGui. Note: this changes the behavior slightly if the file name contains '@2x' not at the end of the file name. We now check that it contains '@2x.' including the dot. Change-Id: I7e6a97d2d9c5aa0706538badf22a13e4c41824c0 Reviewed-by: Edward Welbourne <edward.welbourne@theqtcompany.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | ListView: Sanitize visibleItems list after model insertionsGabriel de Dietrich2015-12-071-11/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In QQuickListViewPrivate::applyInsertionChange(), we update the visibleItems list by first shifting the currently visible items and then we add as many items as the model was added and at the right position. We do this in such a way that we won't create items that will not be visible right away (and may be deleted right after by removeNonVisibleItems()). However, this may leave gaps in the item index sequence, and QQuickListView doesn't always recover gracefully from it. The purpose of this patch is to make sure those gaps are cleared right after inserting the new items. Since the insertions can happen in two different places (either before or after the first visible item) we need to update the visibleItems list accordingly. The way we sanitize visibleItems is by removing those items that lie beyond a possible index gap. If insertion happens before the first visible item, we'll remove all those items before the insertion point. If the insertion happens after the first visible item, we'll remove the items after the insertion point. Besides that, the logic for inserting before the visible position was wrong. As items are inserted bottom-up in that case, the insertion would start by just accounting for the item's size until the condition pos > from && insertionIdx < visibleIndex would become false only because 'pos' would be small enough. After that, the next loop run would start adding items before the 'from' position, which is wrong. Our fix is to move the condition outside the loop if the insertion index will be before the visible index and just account for the items' size in that case. Otherwise, the insertion happens as usual until pos < from. Change-Id: I35767cf6e9737bea1fe7677e580245fc7172710c Task-number: QTBUG-48870 Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com> Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | Flickable: avoid perturbing the timeline further while in overshootShawn Rutledge2015-12-071-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The bug was that when using the mouse wheel, a single "scroll down" wheel event followed by a rapid succession of "scroll up" events would cause extreme overshoot. Experimentally determined that when this happens, the calls to timeline.accel() in QQuickFlickablePrivate::flick() were occurring after the call to accel in QQuickFlickablePrivate::viewportAxisMoved(). But nearby, data.inOvershoot is set to true, so that can be used to avoid calling accel() additional times in flick(). So basically, this patch avoids doing any more acceleration in response to further wheel events after the momentum from previous events has already taken the content beyond bounds. Task-number: QTBUG-21328 Change-Id: I3ab5510a288a080f6b526407b6a2293c44a2498a Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com> Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | Auto-tests for fast model updates while flickingGabriel de Dietrich2015-12-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Stress testing might sound unfair, but it can happen that the user is flicking the view while the model gets updated resulting in an internally inconsistent state. We need to cover this and start working on a solution. The test is initially blacklisted as it's not expected to pass all the time. Task-number: QTBUG 48870 Change-Id: I7c1e4fd1876f52dd2dad5a28584b571753ebe69a Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
* | QQuickAnimatorJob: store the target with a QPointerPaul Lemire2015-12-072-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This avoids ending up with invalid pointers when under some circumstances the target (which is not owned by the QQuickAnimatorJob) is destroyed between the time the QQuickAnimatorJob is created and the time it is initialized. This is the case when the target of an Animator is the item loaded by a Loader and that the animator is started just before setting the Loader to inactive. Also added an auto test for that special case. Task-number: QTBUG-49634 Change-Id: Iab9bfe76d13755ba735432c6f97bde175d308814 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | MultiPointTouchArea: Fixed released() duplication on mouse release.Alexandr Akulich2015-12-021-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | MousePress and MouseRelease event handlers now better integrated into generic touch processing methods. We used to manually add a touch point for mouse press event and prevent updateTouchData() from pressed() emission, but mouseRelease handler used to cause the signal emission in updateTouchData() and then emit the signal on its own. The code reworked to always emit pressed() and released() signals from the single place in updateTouchData(). [ChangeLog][QtQuick][MultiPointTouchArea] Fixed released() signal duplication on mouseReleaseEvent. Task-number: QTBUG-44370 Change-Id: I2d88931ba56d6edf778213c61e9467c2b6abf0e7 Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
* | QQuickListView: Refactor FxViewItem releasing codeGabriel de Dietrich2015-12-011-14/+16
| | | | | | | | | | Change-Id: Id13e982ff3286ec6f369c3d5898de3da3314579d Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
* | Initialize _startX and _startYAlbert Astals Cid2015-12-011-0/+1
| | | | | | | | | | | | | | | | Otherwise valgrind complains about "Conditional jump or move depends on uninitialised value(s)" Change-Id: If1cc6f2839799a80dde5106700bb26fda4b357c3 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | Properly check the arguments of mapFrom/ToItemLars Knoll2015-12-011-13/+45
| | | | | | | | | | | | | | | | | | Check that we have the right type and number of arguments and throw a type error if they don't match. Change-Id: I23d37074bf0a6f88e656897862eedc8f7c9f9f8f Task-number: QTBUG-41686 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Update examples to deal correctly with fine-grained wheel eventsAllan Sandfeld Jensen2015-11-301-4/+1
| | | | | | | | | | | | | | | | | | Zooming in large steps on every wheel-events breaks with fine-grained wheel events like we get on touch-pads. We should therefore not encourage that in our examples. Change-Id: Ie2e70b91c66c73f12ef1f6cd55c8610ae70b36ed Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | qquickwindow: handle QEvent::ShortcutOverrideRichard Moe Gustavsen2015-11-301-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After qtbase:c7e5e1d, QEvent::ShortcutOverride is no longer sent directly to the focus object, but to the window. But since QQuickWindow didn't catch it, it ended up nowhere. This patch will implement the same strategy as QWidgetWindow, and let QQuickWindow forward the ShortcutOverride event the same way as key events. Note that even if the event was never being delivered, the corresponding key events would still end up in the focus object and trigger shortcuts. But if a window global shortcut existed with the same key sequence, it would grab the shortcut instead of the override, which was wrong. Change-Id: I4ad7b3879adac14d88a3fbce5851409d0963d163 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
* | QQuickTextInput: handle QKeySequence::DeleteCompleteLineJ-P Nurmi2015-11-261-1/+10
| | | | | | | | | | | | | | | | Change-Id: I56bb1f56a9c37137bab322b699d6345e82449c9c Task-number: QTBUG-49643 Reviewed-by: Kai Uwe Broulik <kde@privat.broulik.de> Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
* | Private export QQuickPenJ-P Nurmi2015-11-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When including QtQuick headers outside of QtQuick, MSVC fails to link the staticMetaObject of any unexported Q_OBJECT class that it sees. QQuickPen is the only autotest-exported type in qquickrectangle_p.h. All other types in the same header (QQuickRectangle, QQuickGradient, and QQuickGradientStop) are private exported. Because of the MSVC linking behavior described above, those private exports are worthless if the last remaining type is not exported. Change-Id: Ife1bf466fa46a1b86ddf8ff76ab73c1beaa71acc Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
* | ListView: fix random crashes when accessing deleted objectsJ-P Nurmi2015-11-262-3/+3
| | | | | | | | | | | | | | | | | | | | These crashes occur randomly with tst_combobox from qtquickcontrols2, and with the test case attached to the linked bug report. Change-Id: If7d91045f86ec33e7fe398ed02f3edf80700651a Task-number: QTBUG-48277 Reviewed-by: Nikita Krupenko <krnekit@gmail.com> Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
* | Private export QQuickItemViewJ-P Nurmi2015-11-201-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt Quick Controls 2 ComboBox needs access to: - QQuickItemView::itemAt() - QQuickItemView::indexAt() QQuickItemViewAttached had to be exported because it's in the same header file and has the Q_OBJECT macro (MSVC would fail to link staticMetaObject). Alternatively, it could have been moved to another header file. Change-Id: Icaab2c90c136074ae78ce02a422794bb7ccff4aa Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
* | Merge "Merge remote-tracking branch 'origin/5.5' into 5.6" into refs/staging/5.6Liang Qi2015-11-205-2/+44
|\ \
| * \ Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2015-11-175-2/+44
| |\ \ | | |/ | | | | | | | | | | | | | | | Conflicts: src/quick/util/qquickimageprovider.cpp Change-Id: I7ca4e49468b5ba697208287be4684e42b9900023
| | * Fix grammar in TextInput documentationMitch Curtis2015-11-021-1/+1
| | | | | | | | | | | | | | | Change-Id: I78ecd97c25da70faf8438dd02d50952d2fb80a22 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| | * Doc: added documentation to undocumented functionsNico Vertriest2015-11-024-1/+43
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-36985 Change-Id: I219375d405fbfb53611c0138698e955d9cd5d821 Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | | Fixing compilation with -no-rttiThomas Hartmann2015-11-201-0/+4
|/ / | | | | | | | | | | | | | | | | | | DesignerSupport should not keep users from compiling with -no-rtti. Next step is to move DesignerSupport into a library and only build it on desktop platforms. Task-number: QTBUG-49154 Change-Id: Ie0037f3371c24da56f34f27b1f39e8c318e41451 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | qquicktransitionmanager_p_p.h: remove unnecessary includeJ-P Nurmi2015-11-131-2/+2
| | | | | | | | | | | | | | | | This allows the popup framework in Qt Quick Controls 2 to include the header without pulling in unexported classes via indirect includes. Change-Id: Ia69b248c8c227d5c1b44f13a185c07f94a7b5968 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
* | Ensure we call updateTexture for all dynamic textures.Michael Brasser2015-11-132-2/+2
| | | | | | | | | | Change-Id: I888dc4b1dbc49deeb13f967b0da34cd2273f1680 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | Don't make currentIndex skip an extra item on removalAlberto Mardegan2015-11-132-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | Improve the logic for determining the desired viewport position, which got partially broken with 134d980a7fcf61c5440019bcfb3fdfc39c3f5f3c. Let's not alter topItem and bottomItem if their index appears to be correct. Task-number: QTBUG-49330 Change-Id: Ib1c88de51be28cbb0afb1741440adb03ae8ebd87 Reviewed-by: Albert Astals Cid <albert.astals@canonical.com> Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | Introduce a more sane "default constructor" for Qt.matrix4x4()Sean Harmer2015-11-111-1/+5
| | | | | | | | | | | | | | | | | | | | If no arguments are specified, create an identity matrix. This is by far the most common use case. This change avoids having to type in the 16 arguments of the identity matrix. Change-Id: I9e0d71897c5368d19ae87cff936df4b9e5e9b84a Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>