aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
Commit message (Collapse)AuthorAgeFilesLines
* Avoid Nearest mipmap filtering for BorderImage.Gunnar Sletta2014-02-161-0/+1
| | | | | | | | | | QSGOpaqueTextureMaterial has Nearest as the default mipmap filtering, which BorderImage inherited. That default value is not ideal, but I would prefer to not change behavior, so request None from borderimage instead. Change-Id: I9857f1434ae9f067c3b0e460ea552d3e854b9d64 Reviewed-by: aavit <eirik.aavitsland@digia.com>
* Move QtQuick profiling to own profiler adapterUlf Hermann2014-02-1514-53/+490
| | | | | | | | The QtQuick parts of the QML profiler service thus become a proper global profiler which can be independently enabled and disabled. Change-Id: Ifad03801cab2be66a264fc46fdebdae582fcc99b Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* Fix polishItems bugFabian Bumberger2014-02-151-6/+10
| | | | | | | | | | | | updatePolish is not called for items which are not visible. However if a polish is scheduled, updatePolish has to be called when the item becomes eventually visible. This patch makes sure, that invisible items are not removed from the itemsToPolish list. Change-Id: I1ad929dc6de8e61edbd1c4df88ae5bc951979ff1 Reviewed-by: Ulf Hermann <ulf.hermann@digia.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Simon Hausmann2014-02-1216-52/+97
|\ | | | | | | refs/staging/dev
| * Merge remote-tracking branch 'origin/stable' into devSimon Hausmann2014-02-1116-52/+97
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4ssa.cpp src/qml/jsruntime/qv4arrayobject.cpp src/qml/jsruntime/qv4context.cpp Change-Id: Ied5b23bec4dc14abe51127c507aed668f855c1e1
| | * Warn when attaching Keys to an invalid itemFrederik Gladhorn2014-02-111-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using Window { Keys.onPressed: ... } does not work because window is not a QQuickItem. Warn at least. Change-Id: Ibd472f7b551ff2089cbc39ba43da27e6f8e0e97f Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Caroline Chao <caroline.chao@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| | * Fix origin for short reversed item viewsJohn Brooks2014-02-101-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reversed (BottomToTop and RightToLeft) item views would report an impossible positive value for origin when contentHeight < height. The correct value will be effectively equivalent to the position of the footer, and always negative. Match other logic using lastPosition() by negating its value for reversed views. This fixes a bug with content disappearing in a Controls ScrollView on a BottomToTop view. Change-Id: Ieedbb64ce8fc7c0fb36e5256e437ddeb3e757761 Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
| | * Doc: note about visible and enabled in PropertyChangesFrederik Gladhorn2014-02-101-0/+5
| | | | | | | | | | | | | | | Change-Id: I0928737f1651fa98213a84dc4f8b5225d5239502 Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
| | * Fix scenegraph backend API for material shaders.Michael Brasser2014-02-063-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | Without this change, it is not possible to implement a custom renderer (it has no way to compile or initialize material shaders). Change-Id: Ie8778f739f3551f88f0d44ccb9769063a87ff276 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| | * Doc: Merge duplicated example directoriesSze Howe Koh2014-02-063-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | examples/quick/customitems contains all the examples found in examples/quick/ui-components, plus 2 more (maskedmousearea and painteditem). There are some very minor differences between the duplicated files, regarding the "smooth" property. Apart from that, the examples are identical. The only file that is unique to examples/quick/ui-components is example-slideswitch.qdoc. Moving it does not change the generated HTML filename. The other examples do not produce any documentation. Change-Id: I507d9064a60fd1f3a1469c1e423d4c0a72c7dc41 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| | * Avoid renderlist rebuilds in the scene graph renderer.Gunnar Sletta2014-02-062-30/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Transform, material, opacity and geometry changes all used to trigger full rebuilds, which meant that very little geometry could be retained between frames. For instance, a rotating spinner on top of a gridview this would cause a full rebuild where nothing is retained. This change introduces new concept to the renderer: partial rebuilding based on render order ranges. Since the render order of nodes is strictly defined by their position in the tree and nothing else, we should use that for the majority of rebuilds. When a change comes in for a node, we invalidate its batch and all batches which it has overlapping render orders with. Render order rebuilds only happen when nodes are added and removed. Change-Id: Ib4cb284164892b409e3fff5c492a54d60a5de2d7 Reviewed-by: Michael Brasser <michael.brasser@live.com>
| | * Fix backend API, broken since 5.2.0Gunnar Sletta2014-02-045-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | Without this change, it is not possible to implement a custom context without also implementing a renderloop. Change-Id: Iac2aa732251cdf7221b28f665394cdd336a3d846 Reviewed-by: Michael Brasser <michael.brasser@live.com>
| | * Fix crash in header when regenerating view.Michael Brasser2014-01-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Unregister for geometry changes before reparenting, as reparenting may trigger those changes. Task-number: QTBUG-36481 Change-Id: Ia94f1f88880b232dd583b7e63e5da73fb338f7c6 Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
| | * Docs: add a working example to Text::fontSizeMode docsJ-P Nurmi2014-01-291-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | It's easy to miss the maximum bound specified by either the font.pointSize or font.pixelSize properties. Task-number: QTBUG-30005 Change-Id: If1dadebd6673f0e945a1ca95b64521f27d30f5a9 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| | * Fix leak-on-exit of QSGRenderLoop::s_instanceAlex Montgomery2014-01-282-13/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | s_instance is created with new and never deleted which causes several destructors to never be called. Task-number: QTBUG-35731 Change-Id: Icccb19186958f8bb74c5fd2b4b41165255debc46 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | Add Image::mipmap to support mipmapping of images.Gunnar Sletta2014-02-1211-22/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtQuick] New feature: Image.mipmap Task-number: QTBUG-19961 Change-Id: I13acb2408d5b126790adaf9d324ad4beda1e3646 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | | Fixed wrong baseline alignment for TextInputJan Arve Saether2014-02-121-0/+12
|/ / | | | | | | | | | | | | | | [ChangeLog][QtQuick][Fixed wrong baseline alignment for TextInput] Task-number: QTBUG-36749 Change-Id: I6920fb0681f30d9e9943d1bd01f76cc3ae204f30 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Simon Hausmann2014-02-074-23/+71
|\ \ | | | | | | | | | refs/staging/dev
| * | Merge remote-tracking branch 'origin/stable' into devSimon Hausmann2014-01-264-23/+71
| |\| | | | | | | | | | Change-Id: If45606c96ef130588004598c560aa790373f0a78
| | * Flickable: fix crash in delayed press handlingJ-P Nurmi2014-01-251-1/+1
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-31328 Change-Id: Ic87e9b4db09242b49f104a8f38e4e420c62db75c Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
| | * Positioners: fix layout mirroringJ-P Nurmi2014-01-253-22/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | Listen to positioner geometry changes when the _effective_ layout direction is RTL. Task-number: QTBUG-35095 Change-Id: If06955c6bb04e5bed2126b05489229278c192173 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | | Make the Ref classes not template basedLars Knoll2014-02-071-15/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move to a class hierarchy that mirrors the main classes. This will allow moving functionality over into the Ref classes, as the current Managed classes become mainly something that holds the data. This is required to make objects movable by the GC. Change-Id: I4ca88ab0e5d8c88c8dc56d51937990500a33e0d9 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | | Rename Referenced to ManagedRefLars Knoll2014-02-071-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | First step of removing the templates here and turning this into a class hierarchy. This is required, so we can move all member methods into the Ref classes and make objects movable during GC. Change-Id: Ie14af07fd3e72a7d84a528d0042189ff12ba21bb Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | | Accessibility: respect password stateFrederik Gladhorn2014-02-071-1/+5
| | | | | | | | | | | | | | | | | | | | | Better don't leak passwords via accessibility Change-Id: Ibdb0f63101dbd71f51de6f1b8ddaceb359f01e30 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | | Android: Fix crash when using images in QMLEskil Abrahamsen Blomfeldt2014-02-072-6/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because qtdeclarative was merged back from stable and qtbase is still lagging behind, they have become unsynchronized, causing crashes when trying to get the device name from the platform plugin and failing. To work around this until the merge goes through, I've added a simple guard. Task-number: QTBUG-36658 Change-Id: Ibc399ed325a1fbdeccad85ed8d4841edb7b2ba5d Reviewed-by: BogDan Vatra <bogdan@kde.org> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* | | Fix occasional crashes in canvas getImageData and other placesSimon Hausmann2014-02-041-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In some places we allocate custom array objects and in the constructor we call setArrayType, which will allocate the array's data through the GC. In all of these cases we need to make sure that the array object itself is protected from garbage collection, because while in the constructor it may not be yet in the scope the callee has usually set up. Change-Id: I96b7af4ae00fd809067e12bacd6563984c5e9240 Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | | Support batching of rotated antialiased elements.Gunnar Sletta2014-02-041-6/+4
| | | | | | | | | | | | | | | | | | Change-Id: I67d961f23941ba5cfa16fd679b609cd0fc3071c7 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | Normalize signal & slot signatures in connectionThiago Macieira2014-02-032-2/+2
| | | | | | | | | | | | | | | | | | | | | Profiling shows Qt Creator spends 2% of its load time normalizing Change-Id: I58132e11ab5fc942b04925c3bcc919165784a5d1 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | | Add missing export macro to QQuickTransformSimon Hausmann2014-02-031-1/+1
| | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-34736 Change-Id: Ic0ab7317c76417e6556bc0b26cad50416ba06e54 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | CleanupsLars Knoll2014-01-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove SafeValue, it was used to port over to an exact GC. Since we now have that, we can now safely merge it with QV4::Value again. Also rename SafeString to StringValue for better naming consistency. Change-Id: I8553d1bec5134c53996f6b0d758738a0ec8a2e4d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | | Rename some filesLars Knoll2014-01-314-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename qv4value_def_p.h -> qv4value_p.h and qv4value_p.h to qv4value_inl_p.h. It makes more sense to have the class definition in the file that is named after the class and move the inline methods into a _inl file. Doing this now, as I expect we'll be needing a few more _inl files soon. Change-Id: Ib59e9380e9e976254c6b4369574157f39b1b5f51 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | | Visualization modes for rendering.Gunnar Sletta2014-01-299-7/+388
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two ways of setting this right now. One is to set it on startup using an environment varible. QSG_VISUALIZE= "batches" - Visualize batchtes in the renderer. Merged batches are drawn with solid color and Unmerged batches are drawn with a diagonal line pattern. Few unique colors means good batching. Unmerged batches are bad if they contain many individual nodes. "clip" - Visualize clipping as red areas on top of the scene. "overdraw" - Visualize all items in 3D to highlight overdraws. This mode can also be used to detect geometry outside the viewport to some extent. Opaque items are rendered with a green tint while translucent items are rendered with a red tint. The bounding box for the viewport is rendered in blue. Opaque content is easier for the scenegraph to process and it can also be faster to render on some hardware. "changes" - Changes in the scenegraph are visualized with a flashing overlay with a random color. Changes on a primitive is visualized with a solid color while changes in an ancestor, such as a matrix or opacity changes is visualized with a pattern. The second way to set the visualization mode is to set it at runtime through QString QQuickWindowPrivate::customRenderMode. This "API" is string based so it is not tied to the batch renderer and in theory can support other custom renderers. The visualized elements do not respect clipping and rendering order is arbitrary. Change-Id: I31efbe53fc905145bf48080ede3e36945cb60dcf Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | | Expose TextEdit::linkAt(x, y)J-P Nurmi2014-01-293-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtQuick] Added TextEdit::linkAt(x,y) method. Task-number: QTBUG-18946 Change-Id: Id9d061e6c9d857c2f0283ad5042097828d1ed02d Reviewed-by: Martin Jones <martin.jones@jollamobile.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | | Expose Text::linkAt(x, y)J-P Nurmi2014-01-293-2/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ChangeLog][QtQuick] Added Text::linkAt(x,y) method. Task-number: QTBUG-18946 Change-Id: I3b4071c6117ac0ee636f2fdbd2c392eb05b02dd7 Reviewed-by: Martin Jones <martin.jones@jollamobile.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | | Move logic for determining native vs. DF text into single factory functionTor Arne Vestbø2014-01-273-28/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Makes QSGContext::createGlyphNode() the central point of determining which glyph node to produce, instead of letting the caller call two different versions of the factory, each one calling the other in various cases and behind various ifdefs. Change-Id: I30fb17cceab45d9e13ddf3ece7a65f220c5e5acd Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | Allow renderType: Text.NativeRendering on retina displays/devicesTor Arne Vestbø2014-01-273-12/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Setting the renderType to Text.NativeRendering might be needed in some cases where distance-field does not produce the expected results, such as for emoji characters or really large fonts. These use cases are valid on retina displays as well, so having the setter second-guess the request from the user to use native rendering is not ideal. Change-Id: I7c6049766e60574487c29de07fbd5c100ec69a2a Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | Accessibility: add states to QQuickAccessibleAttachedFrederik Gladhorn2014-01-272-9/+116
|/ / | | | | | | | | | | | | This makes it possible to set the state of accessible objects in qml. Change-Id: Ide70b885dac8fed180d2b221540cf2b699ac78ff Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devSimon Hausmann2014-01-2414-181/+215
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: src/imports/dialogs/qquickmessagedialog.cpp src/imports/dialogs/qquickmessagedialog_p.h src/qml/debugger/qqmlprofilerservice_p.h src/qml/jsruntime/qv4regexpobject.cpp tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro Change-Id: Ic8a43366b44d6970966acbf03b206d0dee00c28d
| * Dont define CAN_BACKTRACE_EXECINFO when building on uClibcJorgen Lind2014-01-241-1/+1
| | | | | | | | | | Change-Id: I06314f0a3a7cf86e5e627c307a522069cf640f78 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| * QQuickText: fix layout mirroringJ-P Nurmi2014-01-221-4/+4
| | | | | | | | | | | | Task-number: QTBUG-35095 Change-Id: I8550821e01ecc931788c1ed73366ba1ceed7a817 Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
| * Only look at alpha to decide if rectangle has fill or not.Gunnar Sletta2014-01-221-2/+2
| | | | | | | | | | | | Task-number: QTBUG-35606 Change-Id: Id403047e19e75d91ec3b3f8367166d8ec96ecaf8 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
| * Enforce texture cleanup to happen at the end of the sync phase.Gunnar Sletta2014-01-223-3/+14
| | | | | | | | | | | | | | | | | | | | | | This was ok for the threaded renderer, but for the single-threaded renderers where the event loop was spinning we could run the risk of scheduling a texture for deleteLater() and then cleaning it up before we got around to the sync phase. Task-number: QTBUG-35670 Change-Id: I92074294b427fd8ab2a1823ba79c7ac3b59094ec Reviewed-by: Michael Brasser <michael.brasser@live.com>
| * Revert QSGRenderNode to the old "in context" behaviorGunnar Sletta2014-01-222-90/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is already a lot of code out there that makes use of the rendernode hook and some of it is not capable of dealing with the render target being something other than 0. (Mozilla in this case). By forcing everything into the "alpha" code path, the hit on the renderer should be fairly minimal as long as render nodes are kept to a minimum, so reverting back to the ugly old behavior is acceptable. The API is still internal and highly discouraged. Change-Id: Ie35484f52da6b0420257c95710fdda07a2be2c23 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| * Merge "Merge remote-tracking branch 'origin/release' into stable" into ↵Frederik Gladhorn2014-01-226-54/+84
| |\ | | | | | | | | | refs/staging/stable
| | * Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2014-01-226-54/+84
| | |\ | | | | | | | | | | | | Change-Id: I2d9356cfb33f36f0b9167307b0c4fc6b71bb347a
| | | * Work around missing BGRA texture format on Samsung Galaxy Tab 3Eskil Abrahamsen Blomfeldt2014-01-172-5/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The GL driver on the Galaxy Tab 3 reports support for the BGRA8888 texture format, but does not actually support it. For this particular device we disable support for that format. Task-number: QTBUG-34984 Change-Id: Ie26ef0e815c1622b3425c37237a3fc320543b92c Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| | | * Improve Mac OS X touch event enabling.Morten Johan Sørvig2014-01-174-49/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the Qt Quick touch interaction items would enable touch events on window change. On app startup this would typically happen before the platform window was created, and the call to registerTouchWindow would then create the platform window. registerTouchWindow in QtBase has now been changed to not create the platform window since this has unwanted side effects. Calling it at window change time will then have no effect for the initial window change. Enable and disable touch events on hoverEnter/Leave instead. This is similar to what QtWidgets does and has an additional benefit: touch events can now be enabled when the mouse cursor is hovering over a touch item, reducing the chances of it interfering with scroll events for other items. Task-number: QTBUG-32988 Change-Id: Ic48dbec910f52299d5068f5ca7508be73cdc6f36 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
| * | | Make it possible to render without a depth buffer.Gunnar Sletta2014-01-223-27/+53
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some GL implementations (especially on embedded) will give us an OpenGL context without a depth buffer. In low memory scenarios, it might also be feasible to request a non-depth buffer context to save the depth buffer memory. The renderer deals with this by treating all nodes as translucent, by not adjusting the shaders and by not creating the extra z-order vertex attribute for merged nodes. Change-Id: I8edc92d530daa3e2628df2ba52901b47d87eaf26 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| * | Ensure Flickable bounds detection is executed at the end of animation.Martin Jones2014-01-211-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In pixelAligned mode the content position when animating is rounded to a whole pixel, so the contentItem may reach the bound before the animation completes. Ensure bounds detection is run on animation completion. Task-number: QTBUG-36300 Change-Id: I083ff6a03a5d1b9ca9e2201487b602f1588002be Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Joona Petrell <joona.petrell@jollamobile.com>
* | | fix whitespaceOswald Buddenhagen2014-01-2221-75/+75
| | | | | | | | | | | | | | | | | | | | | remove trailing spaces and expand tabs Change-Id: Ieacb9d096b612c45d1a64700044c114d1f7522bc Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>