summaryrefslogtreecommitdiffstats
path: root/src/platformsupport/linuxaccessibility
Commit message (Collapse)AuthorAgeFilesLines
* Replace Q_DECL_OVERRIDE with override where possibleKevin Funk2017-09-191-1/+1
| | | | | | | | | | | | | | | | Remaining uses of Q_DECL_OVERRIDE are in: src/corelib/global/qcompilerdetection.h src/corelib/global/qglobal.cpp doc/global/qt-cpp-defines.qdocconf (definition and documentation of Q_DECL_OVERRIDE) tests/manual/qcursor/qcursorhighdpi/main.cpp (a test executable compilable both under Qt4 and Qt5) Change-Id: Ib9b05d829add69e98a86238274b6a1fcb19b49ba Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* Move Linux/at-spi debug to categorized loggingFrederik Gladhorn2017-06-221-71/+59
| | | | | | Task-number: QTBUG-48593 Change-Id: Icf17137e7953e08db39bfac0282f6e06b1f58686 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* Use upstream at-spi 2Frederik Gladhorn2017-06-095-1/+134
| | | | | | | | | | Move at-spi dbus xml definitions into platformsupport, these files simply describe the DBus protocol and should not be in 3rdparty. The header files can just as well be picked up by pkg-config. Change-Id: I326d9b3cb69223bf2c8646099f211d9a9f3fa0af Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Avoid detaching temporary objectsAlexander Volkov2017-01-251-1/+1
| | | | | | | | | | | Found with clazy [detaching-temporary]: - don't call QList::first() on temporary - don't call QString::operator[]() on temporary - don't call QByteArray::data() on temporary Change-Id: I390962ef6020e4fcb0b0e447a63eed1e314d18a4 Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru> Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
* make use of QT_REQUIRE_CONFIG() in platformsupport modulesOswald Buddenhagen2016-10-156-13/+16
| | | | | Change-Id: I26fbe75c65c10d68454e64e306f7155367e66cf6 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* create modularized version of qtplatformsupport moduleOswald Buddenhagen2016-10-153-26/+31
| | | | | | | | | | lumping together all kinds of unrelated stuff has caused problems with spurious dependencies from the beginning. as the modularization infra is now in a state which supports many small private libraries just fine, take advantage of it. Change-Id: Ic40f47ce76a308bbfd32deae281f6f064fe1ef4c Reviewed-by: Jake Petroules <jake.petroules@qt.io>
* rely on module include paths for qpa includesOswald Buddenhagen2016-10-041-1/+1
| | | | | | Change-Id: I9a28a5ec9b0050786c4abc39c6ac298e95cf8fad Reviewed-by: Jake Petroules <jake.petroules@qt.io> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Use qtConfig throughout in qtbaseLars Knoll2016-08-191-1/+1
| | | | | | | | | | | Use the new qtConfig macro in all pro/pri files. This required adding some feature entries, and adding {private,public}Feature to every referenced already existing entry. Change-Id: I164214dad1154df6ad84e86d99ed14994ef97cf4 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.7' into devLiang Qi2016-08-161-2/+1
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: qmake/doc/src/qmake-manual.qdoc src/corelib/global/qglobal.cpp src/corelib/tools/qstring.cpp src/network/socket/qabstractsocket.cpp src/network/socket/qnativesocketengine_unix.cpp src/plugins/platforms/eglfs/api/qeglfsglobal.h Change-Id: Id5dfdbd30fa996f9b4b66a0b030b7d3b8c0ef288
| * Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-08-131-2/+1
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qglobal.cpp src/corelib/io/qsettings.cpp src/corelib/itemmodels/qstringlistmodel.cpp tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp Change-Id: I1c6c306ef42c3c0234b19907914b19da706b4a03
| | * AtSpiAdaptor: fix 'defined' field in GetAttributeValueMarc Mutz2016-08-111-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Value was inverted. Found by own code review. Change-Id: I2027d97e1f9d52f6d79fb72ecad9ee2034f9af25 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* | | AtSpiAdaptor: eradicate Q_FOREACHMarc Mutz2016-08-131-14/+8
|/ / | | | | | | | | | | | | In getActions(), simplify the code some more. Change-Id: I93699d09f701959a4206f84becfb80d4d2a1d410 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* | QtBase (remainder): use printf-style qWarning/qDebug where possible (I)Marc Mutz2016-03-121-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The printf-style version of QDebug expands to a lot less code than the std::ostream-style version. Of course, you pay in type safety (but compilers warn about it these days), you cannot stream complex Qt types and streaming QStrings is awkward, but in many cases you actually improve on readability. But the main reason is that something that's not supposed to be executed under normal operation has no business bloating executable code size. This is not an attempt at converting all qWarnings() to printf-style, only the low-hanging fruit. In this first part, replace qWarning() << "" with qWarning("..."). Had to fix broken qImDebug() definition. Instead of defining it as a nullary macro in the QT_NO_DEBUG case and as a variadic macro in the other, define it in both cases, as is customary, as a non-function macro so that overload selection works without requiring variadic macro support of the compiler. Saves e.g. ~250b in text size in QtPrintSupport on optimized GCC 5.3 AMD64 builds. Change-Id: Ie30fe2f7942115d5dbf99fff1750ae0d477c379f Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2016-02-021-29/+29
|\| | | | | | | | | | | | | | | | | Conflicts: config.tests/unix/compile.test src/plugins/platforms/cocoa/qcocoahelpers.mm src/tools/qlalr/cppgenerator.cpp Change-Id: I0103ca076a9aca7118b2fd99f0fdaf81055998c3
| * Don't use QStringLiteral in comparisonsAnton Kudryavtsev2016-01-281-29/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For QLatin1String, operator== is overloaded, so comparing to a latin-1 (C) string literal is efficient, since strlen() is comparatively fast. OTOH, QStringLiteral, when not using RVO, litters the code with QString dtor calls, which are not inline. Worse, absent lambdas, it even allocates memory. So, just compare using QLatin1String instead. Change-Id: I761b2b26ab5b416bc695f524a9ee607dacf0a7b2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2016-01-261-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java src/dbus/qdbusconnection_p.h src/dbus/qdbusintegrator.cpp src/dbus/qdbusintegrator_p.h tests/auto/corelib/io/qdir/qdir.pro tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp Change-Id: I3d3fd07aed015c74b1f545f1327aa73d5f365fcc
| * QtPlatformSupport: Remove virtual from declarations with override.Friedemann Kleint2016-01-211-1/+1
| | | | | | | | | | | | Change-Id: If94207596411680dfc2dbe33f298dc48fd5b7cc0 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | Updated license headersJani Heikkinen2016-01-1514-196/+280
|/ | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: I046ec3e47b1876cd7b4b0353a576b352e3a946d9 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* Respond with a sound for certain message boxes on windowsJan Arve Saether2015-12-041-1/+1
| | | | | | | | | | | | | | | This was a regression (it worked in 4.8) that was probably introduced by the refactoring of the accessibility framework in Qt 5. Now, QPlatformAccessibility::notifyAccessibilityUpdate() is called regardless of isActive(), so its the responsibility of each implementation of notifyAccessibilityUpdate() to check for isActive() where it matters. Task-number: QTBUG-33303 Change-Id: I0d18f8c1890ef679460408b05e704712b886bf7c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
* Libraries: Fix single-character string literals.Friedemann Kleint2015-10-131-2/+2
| | | | | | | Use character literals where applicable. Change-Id: I8e198774c2247c1cc1d852a41b59b301199b7878 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Fix crash on exit caused by QStringLiteralsThiago Macieira2015-09-051-3/+6
| | | | | | | | | | | These QStringLiterals are passed to QtDBus, which records them. They will be used even after the libQt5XcbQpa.so library is unloaded, which causes a crash on exit, one that even valgrind gets lost on. Change-Id: I7de033f80b0e4431b7f1ffff13fc4888e45a346a Reviewed-by: Albert Astals Cid <aacid@kde.org> Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
* platformsupport/linuxaccessibility: fix uses of inefficient QListsMarc Mutz2015-07-083-14/+23
| | | | | | | | | | | | These types are larger than a void*, so holding them in QLists is needlessly inefficient. Worse, the code could come to depend on the fragile property of (inefficient) QLists that references to elements therein never are invalidated. Fix by marking them movable, and holding in a QVector instead. Change-Id: I3d5cf78c1597bd1b743ed3692aaa5e2e750a85f9 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
* Use QList::reserve(), reduces reallocationsSérgio Martins2015-06-271-2/+6
| | | | | Change-Id: I9f218bdd65a97ad9c867b695f3ba27ab64a54d2a Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Accessibility Linux: Fix text attributesBoris Dušek2015-03-131-2/+124
| | | | | | | | | | | | | Orca expects text attributes with different names (and sometimes also different values) than IAccessible2 ones (which Qt uses). So adapt the names and values accordingly. [ChangeLog][Accessibility] We now report text attributes correctly on Linux, so ORCA+F now works properly in QTextEdit and other text controls. Change-Id: I55ead0e87e7e298f4fae14a197716f86494334b0 Task-number: QTBUG-44479 Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
* A11y: query a11y bus address from X displayFrederik Gladhorn2015-03-092-0/+27
| | | | | | | | | | | | | | | Attempt to get the accessibility bus address from the X display, to match libatspi's behavior. This allows the accessibility bus to be found when an application is running as root. [ChangeLog][QtGui] Linux accessibility (using XCB) will now works for applications launched as root Done-with: Mike Gorse Change-Id: I49a263571b328cbd1fd90cb7f5cb40919d2a4951 Task-number: QTBUG-43674 Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
* Update copyright headersJani Heikkinen2015-02-1114-98/+98
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2015-02-102-3/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro src/gui/image/qimage_conversions.cpp src/gui/opengl/qopenglextensions_p.h src/gui/text/qtextengine.cpp src/network/ssl/qsslsocket_openssl.cpp src/plugins/platforms/eglfs/qeglfshooks_stub.cpp src/plugins/platforms/eglfs/qeglfsscreen.cpp src/plugins/platforms/eglfs/qeglfswindow.cpp src/plugins/platforms/windows/qwindowsfontdatabase.cpp src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp src/plugins/platforms/windows/qwindowsnativeinterface.cpp src/plugins/platforms/windows/qwindowsscreen.cpp src/plugins/platforms/windows/qwindowswindow.cpp src/plugins/platforms/windows/qwindowswindow.h src/plugins/platforms/xcb/qxcbdrag.h src/widgets/itemviews/qabstractitemview.cpp src/widgets/kernel/qwidget.cpp src/widgets/util/qsystemtrayicon_p.h tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp Thanks to Friedemann Kleint for resolving the qwindowsfontdatabase.cpp conflicts. Change-Id: I937232c30523d5121c195d947d92aec6f129b03e
| * Do not include accessibility.pri twiceFrederik Gladhorn2015-01-211-1/+0
| | | | | | | | | | Change-Id: Id4b312a57b098ad893ba08e7a3c7f1a0fb891eef Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
| * Accessibility: Fix selection change notifications on LinuxFrederik Gladhorn2015-01-211-2/+2
| | | | | | | | | | | | | | | | | | The selection update is not implemented on other platforms (if needed at all). Task-number: QTBUG-39440 Change-Id: I8eb8c4eb1c23ba2d246bc95f1c77dc9da9e22495 Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
* | Add Q_DECL_OVERRIDE in the src subdirectoryOlivier Goffart2014-12-031-1/+1
| | | | | | | | | | | | | | | | | | | | Done automatically with clang-modernize on linux (But does not add Q_DECL_OVERRIDE to the function that are marked as inline because it a compilation error with MSVC2010) Change-Id: I2196ee26e3e6fe20816834ecea5ea389eeab3171 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-10-201-1/+3
|\| | | | | | | Change-Id: If7e51514ed6832750e3ad967e4d322ccf920d2bb
| * Accessibility Linux: Make a full copy of a key eventAlexander Volkov2014-10-161-1/+3
| | | | | | | | | | | | | | | | Otherwise native values (scan code, modifiers, virtual key) of the key event will be lost if an event listener is registered. Change-Id: I5eebb1f91ad7de6801f7efb0bf0891c4430f9cf5 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-10-091-7/+7
|\| | | | | | | Change-Id: I05fcd8dc66d9ad0dc76bb7f5bae05c9876bfba14
| * Don't stream QStringLiterals into QDebugMarc Mutz2014-10-091-7/+7
| | | | | | | | | | | | | | | | Normal (C) string literals do just as well and use more than twice less space in the DATA section. Change-Id: Iafb0682a362c41dfd5b4d8b9137d88014d7992a2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.4' into devOswald Buddenhagen2014-09-2914-253/+217
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qbytearray.cpp src/gui/image/qimage.cpp src/gui/image/qppmhandler.cpp src/gui/kernel/qguiapplication.cpp src/gui/painting/qpaintengine_raster.cpp Change-Id: I7c1a8e7ebdfd7f7ae767fdb932823498a7660765
| * Update license headers and add new license filesMatti Paaso2014-09-2414-252/+140
| | | | | | | | | | | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
| * Merge remote-tracking branch 'origin/5.3' into 5.4Frederik Gladhorn2014-09-237-0/+76
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The isAlwaysAskOption was removed in 38621713150b663355ebeb799a5a50d8e39a3c38 so manually removed code in src/plugins/bearer/connman/qconnmanengine.cpp Conflicts: src/corelib/global/qglobal.h src/corelib/tools/qcollator_macx.cpp src/corelib/tools/qstring.cpp src/gui/kernel/qwindow.cpp src/gui/kernel/qwindow_p.h src/gui/text/qtextengine.cpp src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig_p.h src/plugins/platforms/android/qandroidinputcontext.cpp src/plugins/platforms/xcb/qglxintegration.cpp src/plugins/platforms/xcb/qglxintegration.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/testlib/qtestcase.cpp src/testlib/qtestlog.cpp src/widgets/dialogs/qfiledialog.cpp src/widgets/kernel/qwindowcontainer.cpp tests/auto/corelib/tools/qcollator/tst_qcollator.cpp tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp Change-Id: Ic5d4187f682257a17509f6cd28d2836c6cfe2fc8
| | * Add missing private headers warningSamuel Gaist2014-09-047-0/+76
| | | | | | | | | | | | | | | Change-Id: I7a4dd22ea3bcebf4c3ec3ad731628fd8f3c247e0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | Fix QT_LINUX_ACCESSIBILITY_ALWAYS_ONJocelyn Turcotte2014-09-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current behavior was that accessibility is enabled if the variable is _not_ set, which causes accessibility to be enabled all the time even if a screen reader isn't present. Change-Id: I73286622fb5abe1cedce420e760306ab7f200e69 Reviewed-by: Adam Majer <adamm@zombino.com> Reviewed-by: Tomasz Olszak <olszak.tomasz@gmail.com> Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-09-014-25/+39
|\| | | | | | | | | | | Change-Id: I2811ff0b9d4097f0be60ff16e9664a5060cff23e
| * | Accessibility Linux: add action interfaces for valueFrederik Gladhorn2014-08-193-23/+37
| | | | | | | | | | | | | | | Change-Id: I454493fc6e9e93f44d15986ca843c3244f97cbe6 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
| * | Accessibility Linux: use Frame for WindowsFrederik Gladhorn2014-08-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | On Linux it's actually more common to use frame as role for windows since they are per definition normal main windows. Change-Id: Iee5bdfca139049846c1be864661231a594edf695 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | | Compile with -no-feature-accessibilityFrederik Gladhorn2014-08-2112-2/+29
|/ / | | | | | | | | | | Task-number: QTBUG-38045 Change-Id: Id436b70aa6161bdf2428ca0a605212b278c71849 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | Add accessible rolesFrederik Gladhorn2014-08-131-0/+12
| | | | | | | | | | Change-Id: Ic5465687f51c441235ec23cb88045e14644f1d2a Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | Accessibility Linux: Also send meta key as modifierFrederik Gladhorn2014-07-301-0/+2
| | | | | | | | | | Change-Id: I0b33bf3d6ad468176e7c7e5a71b3bcba966ffd9f Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* | Add accessible roles for web document, paragraph and sectionFrederik Gladhorn2014-07-231-0/+6
| | | | | | | | | | | | | | | | These roles seem wide-spread enough that it makes sense to add them. QtWebEngine will use them. Change-Id: I9c2d6ab23ada0607078bcd407a72ecae9f87eeea Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* | Accessibility Linux: send children changed notificationsFrederik Gladhorn2014-07-232-1/+17
| | | | | | | | | | | | | | | | | | The badly named ObjectReorder actually stands for any of this object's children may have changed. This event is used in webengine and should trigger the ATs to drop their caches (eg when loading a new website). Change-Id: I44080f8d43c1161285d9ace4891fe18531f16e09 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-101-6/+13
|\| | | | | | | Change-Id: Ia12ffdb27ecdf25c2a2bdb0eed1945387502108a
| * Accessibility Linux: Fix crashes when accessing invalid functionsFrederik Gladhorn2014-07-031-6/+13
| | | | | | | | | | | | | | | | | | | | There is no way to prevent ATs from calling random functions on DBus. While these functions shouldn't exist when we don't advertise the interface, they should just fail gracefully. Task-number: QTBUG-40044 Change-Id: Ia29b49b16feabc0beb80007456e53497f230c7d4 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | Update copyright to 2014 for accessibilityFrederik Gladhorn2014-07-0414-14/+14
| | | | | | | | | | Change-Id: I4210456122bf8a6d3730f017f3ce6dd1a1bcb3f5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>