aboutsummaryrefslogtreecommitdiffstats
path: root/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp
Commit message (Collapse)AuthorAgeFilesLines
* QmlDesigner: Implement different render path for Qt 6Thomas Hartmann2020-10-091-0/+5
| | | | | | | | | | | | | | When building with Qt 6 or if qmlpuppet_unifiedRenderPath is set in the environment we switch to a different render path. In this case we use QQuickWindow::grabWindow() and render the root item. No composition is done in the Qt Creator process anymore. This is a similar approach we already take for the 3D view. Performance is acceptable and we fix rendering issues related to effects and layers. Change-Id: Ic963eca047e0bf16ca3a099ec94658ae2af0fb63 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
* QmlPuppet: Fall back to primitive creation if component creation failsMiikka Heikkinen2020-09-011-3/+6
| | | | | | | | This ensures components defined in .qml files get loaded properly. Change-Id: I070132ab5ad58b2531f27f623f218e0ee3565c5b Fixes: QDS-2697 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
* QmlDesigner: Improve usage of QML items as quick3d texturesMiikka Heikkinen2020-06-251-0/+3
| | | | | | | | | | | | | | Quick3D Texture elements require some window signals to show QML item as texture, so we fake them to make textures appear in form editor and state preview. To prevent texture mirroring, flipV value is force set at proxy creation. To keep state preview up to date, we trigger multiple render passes if there are any QML items used as texture sources in quick3D textures. Task-number: QDS-2290 Change-Id: I16c34aad943213c0b737fdb073333be3bbd40f2d Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
* QmlDesigner: Inspect components for existing statesThomas Hartmann2020-04-211-0/+8
| | | | | | | | | For each created items we retrieve a list of the names of all existing states. Task-number: QDS-1978 Change-Id: I8e85e439fce3c6204cb8bcf69f6be847cc8dae5c Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
* QmlDesigner: Show proper error message for componentThomas Hartmann2020-04-211-2/+17
| | | | | | | | | If a component cannot be created we have to show a proper error message. Task-number: QDS-1980 Change-Id: I48a6ff0fd89c9666328c501abb00dc0997171d96 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
* Integrate Edit3D view into CreatorMiikka Heikkinen2020-02-241-5/+7
| | | | | | | | | Edit3D view is now a tab alongside Form Editor. Buttons were moved to a Creator side task bar on Edit 3D view. Change-Id: Ia06107e4f855ba512ffea3e628a61558894e800e Fixes: QDS-1570 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
* QmlDesigner: Avoid reflection when setting values from puppetThomas Hartmann2019-10-301-0/+5
| | | | | | | | | | | | | | | | | | When editing values in the puppet we did not take reflection into account. This means that any changes we did from the puppet for notified back from Qt Creator. Since those notifications are asynchronous this leads to various issues especially when more than one axis (property) was modified at once. This patch avoids reflection. The notifications are 'flagged' and then ignored in the Qt5InformationNodeInstanceServer. While a node is moved we ignore any changes to that specific node. Task-number: QDS-1191 Change-Id: Ic74e22ea71832ce12321f9085a7296c2a7d9893d Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
* QmlDesigner: Implement Quick3DNodeInstance wrapperThomas Hartmann2019-10-211-0/+8
| | | | | | | | | | | | We use Quick3DNodeInstance as a proxy class to wrap QQuick3DNode. The access to private API like QQuick3DNodePrivate::setIsHiddenInEditor() is restriced by such proxy classes. Change-Id: If5191c3b730359000cf983c3af206dcffa07be74 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Pasi Keränen <pasi.keranen@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
* Some clang-tidy -use-modernize-nullptrhjk2019-08-011-8/+8
| | | | | Change-Id: I1bed5e85a5b7948d08502a72a10f80baa075c204 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
* QmlDesigner: Fix typo in file nameChristian Kandeler2018-08-011-1/+1
| | | | | Change-Id: I06086caeaa2144e93203bc0cea902259be5d73c5 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
* QmlDesigner: Keep Qt 3D scenes from crashingThomas Hartmann2018-07-311-0/+3
| | | | | | | | | | | If we do not set the source property of the Q3DSPresentationItem nothing is actually rendered. If a scene is rendered in the puppet we get an invalid OpenGL context when rendering in the qml2puppet. Change-Id: I74db0df7de759e830499967bc6985745be291856 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
* QmlDesigner: Add meta hint if item renders children directlyThomas Hartmann2018-03-091-2/+4
| | | | | | | | | | | | In some cases items render their children directly using an effect. In this case we do not want to hide the children when calling refFromEffectItem(). If the hint takesOverRenderingOfChildren is set in the .metainfo hints for a parent item we forward a flag to the puppet and refFromEffectItem() is not hiding this item, Change-Id: I37a8c0ad8a15bc914c220e03b1b744779431d655 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
* Merge remote-tracking branch 'origin/4.0'Eike Ziller2016-04-051-1/+1
|\ | | | | | | | | | | | | Conflicts: src/libs/utils/tcpportsgatherer.h Change-Id: I495f3e05789f09efb8b1e84827893423a5b5b60c
| * Fixing crasing TimerThomas Hartmann2016-04-051-1/+1
| | | | | | | | | | | | | | | | | | A "raw" QObject (created instead of the Timer) will crash the engine later. Instead we setup the QObject using createPrimitive(). Task-number: QTCREATORBUG-15916 Change-Id: I5f0dd9c887fd57d492222d221e54f267e12a5044 Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
* | QmlPuppet: Make compile without QT_RESTRICTED_CAST_FROM_ASCII removedhjk2016-03-181-1/+1
|/ | | | | Change-Id: I535efad65b2224337c133463da075953cc878c6c Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
* Update License according to agreement with Free Qt FoundationTobias Hunger2016-01-191-10/+11
| | | | | | | * Update all files in share folder Change-Id: I8a82c3eb2eb614d4339dd4c4e690f54b5f29d813 Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
* Qt Quick Designer: License change to Qt Commercial + GPLv3Alessandro Portale2015-09-181-12/+7
| | | | | | | | Change-Id: I7f7aecd02892b6c616cd148fa5d845e7bc0d3b4f Reviewed-by: Tuukka Turunen <tuukka.turunen@digia.com> Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com> Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com> Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
* QmlPuppet: Clean up private API usage in ServerNodeInstanceThomas Hartmann2015-05-211-22/+4
| | | | | Change-Id: Ic0890c8c6740ad2c4567b58ec9b51933d0293fc1 Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
* QmlPuppet: Explicitly include private headersThomas Hartmann2015-05-211-0/+3
| | | | | | | Those headers are used implcitly. Change-Id: I49dcfb1a04b2103866b1d828605381570fb3e5c6 Reviewed-by: Alessandro Portale <alessandro.portale@theqtcompany.com>
* QmlPuppet: Remove unused private headerThomas Hartmann2015-05-201-1/+0
| | | | | Change-Id: I699c423c3d4a84659e074e310e8697cd19f5c4c0 Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
* refactor NodeInstanceMetaObjectTim Jenssen2015-05-181-12/+0
| | | | | | | | | | Reduce the use of NodeInstanceMetaObject in QtQuickDesigner code to two static methods: - registerNodeInstanceMetaObject - createNewDynamicProperty Change-Id: I0ef8ee96995184e968467b799147c6b4c80fbccc Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* add/use error channel puppet -> designerTim Jenssen2015-02-181-3/+3
| | | | | Change-Id: Id6988e604ca3a092564a3e572c03b322bc101b77 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* Update LicenseEike Ziller2015-01-161-6/+6
| | | | | Change-Id: I711d5fb475ef814a1dc9d2822740e827f3f67125 Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
* Merge remote-tracking branch 'origin/3.2'Eike Ziller2014-10-141-7/+8
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/libs/utils/ipaddresslineedit.cpp src/libs/utils/logging.h src/plugins/analyzerbase/AnalyzerBase.pluginspec.in src/plugins/android/Android.pluginspec.in src/plugins/android/androiddeploystep.cpp src/plugins/android/androiddeploystep.h src/plugins/android/androiddeploystepfactory.cpp src/plugins/android/androiddeploystepwidget.cpp src/plugins/android/androidpackagecreationfactory.cpp src/plugins/android/androidpackagecreationstep.cpp src/plugins/android/androidpackagecreationstep.h src/plugins/android/androidpackagecreationwidget.cpp src/plugins/android/androidpackagecreationwidget.h src/plugins/android/javafilewizard.cpp src/plugins/autotoolsprojectmanager/AutotoolsProjectManager.pluginspec.in src/plugins/baremetal/BareMetal.pluginspec.in src/plugins/bazaar/Bazaar.pluginspec.in src/plugins/beautifier/Beautifier.pluginspec.in src/plugins/bineditor/BinEditor.pluginspec.in src/plugins/bookmarks/Bookmarks.pluginspec.in src/plugins/clangcodemodel/ClangCodeModel.pluginspec.in src/plugins/clangcodemodel/clanghighlightingsupport.cpp src/plugins/clangcodemodel/clangsymbolsearcher.cpp src/plugins/classview/ClassView.pluginspec.in src/plugins/clearcase/ClearCase.pluginspec.in src/plugins/cmakeprojectmanager/CMakeProjectManager.pluginspec.in src/plugins/cmakeprojectmanager/cmakeeditorfactory.cpp src/plugins/cmakeprojectmanager/cmakehighlighter.cpp src/plugins/coreplugin/Core.pluginspec.in src/plugins/cpaster/CodePaster.pluginspec.in src/plugins/cppeditor/CppEditor.pluginspec.in src/plugins/cppeditor/cppfilewizard.cpp src/plugins/cpptools/CppTools.pluginspec.in src/plugins/cpptools/cpphighlightingsupportinternal.cpp src/plugins/cpptools/cppmodelmanagerinterface.cpp src/plugins/cpptools/cppmodelmanagerinterface.h src/plugins/cvs/CVS.pluginspec.in src/plugins/debugger/Debugger.pluginspec.in src/plugins/designer/Designer.pluginspec.in src/plugins/diffeditor/DiffEditor.pluginspec.in src/plugins/emacskeys/EmacsKeys.pluginspec.in src/plugins/fakevim/FakeVim.pluginspec.in src/plugins/genericprojectmanager/GenericProjectManager.pluginspec.in src/plugins/git/Git.pluginspec.in src/plugins/git/gitorious/gitorious.cpp src/plugins/git/gitorious/gitorious.h src/plugins/git/gitorious/gitoriousclonewizard.cpp src/plugins/git/gitorious/gitorioushostwidget.cpp src/plugins/git/gitorious/gitorioushostwidget.h src/plugins/git/gitorious/gitorioushostwizardpage.cpp src/plugins/git/gitorious/gitoriousprojectwidget.cpp src/plugins/git/gitorious/gitoriousprojectwidget.h src/plugins/git/gitorious/gitoriousprojectwizardpage.cpp src/plugins/git/gitorious/gitoriousprojectwizardpage.h src/plugins/git/gitorious/gitoriousrepositorywizardpage.cpp src/plugins/git/gitorious/gitoriousrepositorywizardpage.h src/plugins/glsleditor/GLSLEditor.pluginspec.in src/plugins/glsleditor/glsleditorfactory.cpp src/plugins/glsleditor/glslfilewizard.cpp src/plugins/helloworld/HelloWorld.pluginspec.in src/plugins/help/Help.pluginspec.in src/plugins/imageviewer/ImageViewer.pluginspec.in src/plugins/ios/Ios.pluginspec.in src/plugins/macros/Macros.pluginspec.in src/plugins/mercurial/Mercurial.pluginspec.in src/plugins/perforce/Perforce.pluginspec.in src/plugins/projectexplorer/ProjectExplorer.pluginspec.in src/plugins/pythoneditor/PythonEditor.pluginspec.in src/plugins/pythoneditor/pythoneditorwidget.cpp src/plugins/pythoneditor/wizard/pythonfilewizard.cpp src/plugins/qbsprojectmanager/QbsProjectManager.pluginspec.in src/plugins/qbsprojectmanager/defaultpropertyprovider.cpp src/plugins/qmakeprojectmanager/QmakeProjectManager.pluginspec.in src/plugins/qmakeprojectmanager/profileeditorfactory.cpp src/plugins/qmldesigner/QmlDesigner.pluginspec.in src/plugins/qmljseditor/QmlJSEditor.pluginspec.in src/plugins/qmljseditor/qmljseditorfactory.cpp src/plugins/qmljstools/QmlJSTools.pluginspec.in src/plugins/qmlprofiler/QmlProfiler.pluginspec.in src/plugins/qmlprojectmanager/QmlProjectManager.pluginspec.in src/plugins/qnx/Qnx.pluginspec.in src/plugins/qtsupport/QtSupport.pluginspec.in src/plugins/remotelinux/RemoteLinux.pluginspec.in src/plugins/resourceeditor/ResourceEditor.pluginspec.in src/plugins/resourceeditor/resourcewizard.h src/plugins/subversion/Subversion.pluginspec.in src/plugins/tasklist/TaskList.pluginspec.in src/plugins/texteditor/TextEditor.pluginspec.in src/plugins/texteditor/basetexteditor_p.h src/plugins/texteditor/basetextmark.cpp src/plugins/texteditor/codeassist/basicproposalitemlistmodel.h src/plugins/texteditor/codeassist/defaultassistinterface.h src/plugins/texteditor/codeassist/iassistproposalitem.cpp src/plugins/texteditor/itexteditor.cpp src/plugins/texteditor/itexteditor.h src/plugins/texteditor/itextmark.cpp src/plugins/texteditor/plaintexteditor.cpp src/plugins/texteditor/plaintexteditor.h src/plugins/texteditor/texteditoractionhandler.cpp src/plugins/todo/Todo.pluginspec.in src/plugins/updateinfo/UpdateInfo.pluginspec.in src/plugins/valgrind/Valgrind.pluginspec.in src/plugins/vcsbase/VcsBase.pluginspec.in src/plugins/welcome/Welcome.pluginspec.in src/plugins/winrt/WinRt.pluginspec.in tests/auto/debugger/temporarydir.h Change-Id: I254af8be8119fe9855287909e17d4b8ca9d2fc2f
| * License updateEike Ziller2014-10-091-7/+8
| | | | | | | | | | Change-Id: I3c22ef2685d7aa589f5d0ab74d693653a4c32082 Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
* | QmlDesigner: remove commented connectTim Jenssen2014-10-091-2/+0
| | | | | | | | | | | | | | The connected SLOT is even not existing any more. Change-Id: Iea352ca4929146c20b897e1a8fbb00a601364068 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* | QmlDesigner: import only working importsTim Jenssen2014-09-261-2/+2
|/ | | | | Change-Id: Ic7d74237eeb86e34925f1b048befa5da9420c278 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner: Merge GraphicalNodeInstance back in QuickItemNodeInstanceMarco Bubke2014-04-171-1/+1
| | | | | Change-Id: I2f5412887a66186d215e56101a63bacfda4f8e0a Reviewed-by: Marco Bubke <marco.bubke@digia.com>
* QmlDesigner: Remove QuickWindowNodeInstanceMarco Bubke2014-04-171-3/+0
| | | | | Change-Id: I164b38286a4a4b1ff642c1cfdb8cd19477ad9fa1 Reviewed-by: Marco Bubke <marco.bubke@digia.com>
* QmlDesigner: Use the root NodeInstance for item collectionMarco Bubke2014-04-171-0/+5
| | | | | Change-Id: I0ed67997c371af8acb3db480446ea5d577380804 Reviewed-by: Marco Bubke <marco.bubke@digia.com>
* QmlDesigner: Add root item getter to ServerNodeInstanceMarco Bubke2014-04-161-0/+5
| | | | | Change-Id: I9f31390b478d8638038998682fb606dea5d1c81a Reviewed-by: Marco Bubke <marco.bubke@digia.com>
* Incremented year in copyright infoRobert Loehning2014-01-081-1/+1
| | | | | | Change-Id: Ib5423fdd064e4546f848c0b640b0ed0514c26d3a Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* QmlDesigner: Test mode for qml puppet streamsMarco Bubke2013-07-081-2/+8
| | | | | Change-Id: I93128c60892900d6b4728569b84efb0ed835b51f Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner: Fix preview renderingMarco Bubke2013-06-181-1/+1
| | | | | | | | We excluded item which had a node instance. For the preview all item should be marked dirty. Change-Id: I0cbad89707d7d94f65ac0d055488e124da40e7b3 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner: Add container item support in node instancesMarco Bubke2013-05-301-5/+10
| | | | | Change-Id: I30e0d11346b8c63188d052b46656e7ede179e55d Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner: Add content item hackMarco Bubke2013-05-221-0/+5
| | | | | | | | There is no stand content item interface, so try to work around to enable snapping and anchoring. Change-Id: Ib2eaf0d6c35e3ba289dd7d55b2ba4c064ad40748 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner.Instances: adding LayoutNodeInstanceMarco Bubke2013-04-221-0/+3
| | | | | | | This class wraps a QQuickLayout. Change-Id: Ib661ccb5bb5deb1acb87b9a4bef8da95cb4e40eb Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner: Prepare for other layout itemsMarco Bubke2013-04-221-2/+2
| | | | | Change-Id: I831e68877eb3d785b4bbb99db002ab8e42158d75 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner: Add GraphicalNodeInstance as abstraction for item and windowMarco Bubke2013-04-221-2/+2
| | | | | Change-Id: Icaba711464f672a3bfbb9d83a449d47e72ba11ff Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner:Instances: Adding instance for QQuickWindowThomas Hartmann2013-04-181-0/+3
| | | | | | | | | | | | | This allows QuickWindowNodeInstance to return the content item instead. The function parentObject() in ObjectNodeInstance now knows QQuickRootItem, because the parent of the root item should is the windows (which is just a QObject but treated as item from us). Change-Id: Ibaa7ccc8dd9346689cc4443ce0b594056feaa0cf Reviewed-by: Marco Bubke <marco.bubke@digia.com> Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner: Remove old paint function in instancesMarco Bubke2013-04-161-9/+0
| | | | | Change-Id: I5da0c624b467448dc6f16a88fa3ad3682f423c20 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner: Move implementation code in the node instancesMarco Bubke2013-04-151-7/+15
| | | | | | | | updateDirtyNodeRecursive and renderPreviewImage belongs to quick image and not in the node instance server. Change-Id: I629b89c748036c0614e78bcfa0c837cb16ca6374 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner: Type of the propertyname is now PropertyNameThomas Hartmann2013-03-251-18/+18
| | | | | | | | | | | And PropertyName is a typedef for QByteArray. Because we don't use the features of QString and the source would be cluttered with QLatin1Strings we changed the property name to QByteArray. Change-Id: Ib70ef136bbc411504b450456bd9bb705ae93dd25 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com> (cherry picked from commit ee4bf638cad9bcf303c8c6ad1f922c33dc021964) Reviewed-by: Marco Bubke <marco.bubke@digia.com>
* Incremented year in copyright infoRobert Loehning2013-02-011-1/+1
| | | | | Change-Id: Ia11f4d7a94465de7f12cc390855e54e3256e5455 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
* compile fix for qml2puppetThomas Hartmann2012-11-211-1/+1
| | | | | Change-Id: Iad3c36e66e70c4ba1c885ffc10c4ea3f888aa820 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner.NodeInstances: Add debug outputMarco Bubke2012-11-211-0/+7
| | | | | Change-Id: I97ae422fce73ef3df62a66ef4bb925454176f891 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner.puppet: licence header fixThomas Hartmann2012-11-061-21/+20
| | | | | | | Task-number: QTCREATORBUG-8189 Change-Id: Ib1862dee47b3e340492c9321b9db92a7fe2b4786 Reviewed-by: hjk <qthjk@ovi.com>
* QmlDesigner.NodeInstances: Fix crash for instance without objectMarco Bubke2012-10-151-2/+11
| | | | | Change-Id: Ia08cdb194e8f67a71cdbddf162cc7f17daa517f8 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner.NodeInstances: Recover positioner supportMarco Bubke2012-10-041-8/+3
| | | | | Change-Id: Ib5e891a8563bfced2af93e4a516ef8f196e8ff1e Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
* QmlDesigner.NodeInstances: Remove Qt 5 definesMarco Bubke2012-09-271-8/+1
| | | | | Change-Id: Ie835af0e32800887d6cc2f6eebcd9dd79b3100a5 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>