summaryrefslogtreecommitdiffstats
path: root/src/gui
Commit message (Collapse)AuthorAgeFilesLines
* AVX image code was removedFrederik Gladhorn2014-03-171-1/+0
| | | | | | | | Remove a last left-over after 5e519b31dceff1fbb0a7ac5eeb5f6e071c1b6ef7 Change-Id: I85e73a5d81d45b4ccfc80cdaf34ab7b6c3c85bdc Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix translation of QtPrintSupport and QPageSize.Friedemann Kleint2014-03-171-10/+16
| | | | | | | | | | Add translator comments, fix spelling, reduce repetitive messages. Change-Id: Id4cbbc3de8fa261cf8f125c5faf735dc608e2b15 Reviewed-by: Robert Loehning <robert.loehning@digia.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: John Layt <jlayt@kde.org>
* Make QTextEngine::setAdditionalFormats() invalidate cached resultsKonstantin Ritt2014-03-171-1/+3
| | | | | | | | | ...which ensures we're not getting the formatting/rendering artefacts in case of QStackTextEngine. Change-Id: Ia0696a3e67eb866cf9776c6649c43775944edd1d Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Add note to docs about normalization in setAttributeBufferLaszlo Agocs2014-03-171-0/+6
| | | | | | Task-number: QTBUG-37103 Change-Id: I0b1716b76e10c65871c6a96dab5d8d81c95095d7 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Merge "Merge remote-tracking branch 'origin/release' into stable" into ↵Jani Heikkinen2014-03-174-35/+60
|\ | | | | | | refs/staging/stable
| * Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2014-03-174-35/+60
| |\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/gui/painting/qdrawhelper.cpp src/gui/painting/qdrawhelper_avx.cpp src/gui/painting/qdrawhelper_x86_p.h Change-Id: I09352d05119f6fd000319074a2705b38361b2c90
| | * CSS parser: fix the pseudo-classes array lengthGiuseppe D'Angelo2014-02-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The pseudoclass array is declared with length "NumPseudos - 1", but the declaration has actually 44 elements, not 45. This caused a zero-initialized last element to be silently appended to the array. The zero-initialized element broke the sorting of the array, which in turn broke std::lower_bound usage (although of course the problem was there from before switching to the standard library algorithms). Task-number: QTBUG-36933 Change-Id: I8a02891fc36761b6ae72d15a0a8d6c6a96813947 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
| | * Fix drawCachedGlyphs on RGBA8888Allan Sandfeld Jensen2014-02-264-37/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | drawCachedGlyphs draws with the wrong color on RGBA8888. The issue is that the draw routines bitmapblit_quint32 and alphamapblit_quint32 while safe to use on rgba formats, needs to have the input color converted. This patch adds small wrapper functions for bitmapblit and alphamapblit that converts the formats. Two tests are extended to ensure we have test coverage. Change-Id: I5f99f3795eba46a69d4df5b167e6099024e9a060 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | QPrintEngine - Switch Cups to QPlaformPrintDeviceJohn Layt2014-03-171-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | Use QPlatformPrintDevice in the Cups print engine for all device specific code. Change-Id: Ic1f5f8b4010a9958c320f3c0c727cf1bd1a70c65 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | QPdfWriter - Use QPageSize and QPageLayoutJohn Layt2014-03-172-19/+222
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support to QPdfWriter for QPageSize, QPageLayout, and resolution. [ChangeLog][QtGui][QPdfWriter] The QPdfWriter now supports setting the PDF orientation, layout and resolution by using QPageSize and QPageLayout. Change-Id: I9c269f997ec540dac1989f355c6a2e7488947966 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | QPdfPaintEngine - Use QPageLayout and QPageSizeJohn Layt2014-03-174-82/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Switch internals of QPdfPageEngine and derived classes to use QPageLayout and QPageSize to make handling of page layout and size more consistent by removing multiple implementations. In particular remove all use of the QPdf namespace version of page size. Change-Id: Ie820340015e8812c8162bd1a257dd0f51f4f0b85 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | QPagedPaintDevice - Use QPageSize and QPageLayoutJohn Layt2014-03-173-99/+343
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use new QPageLayout and QPageSize class to store and convert page sizes and layouts consistently. Extend the PageSize enum to match QPage::PageSize. Note that public setters/getters cannot be added as virtuals would break BIC, but without virtuals the derived classes would break. Instead an internal api is provided and the derived classes will need to implement identical api to manipulate it. [ChangeLog][QtGui][QPagedPaintDevice] Paged paint devices such as QPrinter and QPdfWriter now support all Postscript standard page sizes. Task-number: QTBUG-27685 Task-number: QTBUG-25744 Change-Id: I62e96ab94194ab4ac8bed8fa804e0ce1c3233313 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | QPlatformPrintDevice - New QPA base classJohn Layt2014-03-171-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new QPA class to abstract Print Devices. Each platform instance will encapsulate all required details about a print device instead of the code being distributed throughout the print engine and print plugin. Change-Id: I7f6a537ad55a6e7f599d83f461b1e2ee62b15094 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | QPageLayout - Add new QPageLayout classJohn Layt2014-03-173-0/+1128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New QPageLayout to encapsulate page layout details including page size, orientation and margins. Scale may be added later. Subsequent changes will use this class in the paged paint devices, paint engines, print engines, and print plugins to replace multiple inconsistent local implementations. [ChangeLog][QtGui] Added class QPageLayout to support handling page layouts including the page size, orientation and margins. Change-Id: Ife1ddd6c2a8d1516542be2eb37425111f41cd5c7 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* | | QPageSize - Add new QPageSize classJohn Layt2014-03-174-0/+2189
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New QPageSize class to encapsulate paper sizes and names to ensure all sizes and conversions are consistent and match the Postscript standard sizes. Subsequent changes will use this class in the paged paint devices, paint engines, print engines, and print plugins to replace multiple inconsistent local implementations. [ChangeLog][QtGui][QPageSize] Added new QPageSize class to implement Adobe Postscript PPD standard page sizes. This class supports the standard page sizes, names and keys from the PPD standard, and provides convenient size and rect conversion methods. Change-Id: Ie2c8be0c3df0d29ac5da4cd9877ad41d0982633c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Revert "Make OpenGL texture glyph cache use the right freetype glyphs"Allan Sandfeld Jensen2014-03-171-11/+1
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit f78661b03cc1affcdd222be50b35d956edac4711. The reverted patch was working around that QFontEngineFT was using the poor QFontEngine fall back. That issue was fixed in commit 0b7beaaaf2384fae01ae403737450a59b2fcabac, and the work around is no longer needed. This also fixes a rare problem with the workaround when the fontengine and the glyph-cache do not share the same default glyph format which can happen with QRawFonts. Change-Id: I150f70a003b137c1d145f6f70cda568c85633e5c Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Fix rendering of grayscale antialiased FT fonts on QGLWidgetAllan Sandfeld Jensen2014-03-151-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | QFontEngineFT::alphaMapForGlyph and QFontEngineFT::alphaRGBMapForGlyph has been broken since change#65694. They always fall back to using the path rendering of QFontEngine because we zero the scoped pointer just before testing it. To fix it we need to release the scope pointer after we are done using it. Change-Id: I8811c1f5261f286f2f3dd3c0f93c988ba0909669 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* | Prevent DrawTextItemDevice::metric warning on MacMorten Johan Sørvig2014-03-151-0/+3
| | | | | | | | | | | | | | | | Implement PdmDevicePixelRatio. Task-number: QTBUG-36419 Change-Id: I4d2822d01e08c80e9b829d5f524e8e761e694fba Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | Fix casting and overallocation in qregion.cppAllan Sandfeld Jensen2014-03-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | The POINTBLOCK struct in qregion.cpp is badly defined. By using ints as the base storage of the internal array it forces not only bad casting from int to QPoint, but also allocates an array four times too big. This patch changes to char, since a char pointer may alias anything and this gives the right size of the array. Change-Id: I608eaf39ac7306c71314a139bed6e2352249c0ab Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Docs: Clarify QOpenGLFunctions::functions()Laszlo Agocs2014-03-151-0/+3
| | | | | | | | | | | | Change-Id: Ifb6fdc3de7f93a1632b396eaaa14078546cac4dd Reviewed-by: Jørgen Lind <jorgen.lind@digia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Fix a probably copy/paste issue from drawImage in the drawPixmap snippetLaszlo Papp2014-03-141-1/+1
| | | | | | | | | | | | Change-Id: Ia2b34e3ee6954342501a805f9e047cb90078e9d5 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Fix dynamic opengl buildLaszlo Agocs2014-03-141-3/+5
| | | | | | | | | | | | | | | | Some ifdefs were slightly incorrect. Change-Id: I5ffb162becb040c91ed56f36c6126c59f67c367a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Add workaround for bug in the Mesa glsl optimizerJorgen Lind2014-03-141-10/+4
| | | | | | | | | | Change-Id: I23251f5288b41f5b7f86406984fdd854127797a9 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Build bundled HarfBuzz-NG outside QtGuiKonstantin Ritt2014-03-141-1/+1
| | | | | | | | | | | | | | | | | | Being a part of QtGui, HarfBuzz-NG breaks build with -Werror. Instead of disabling a particular warnings-as-errors, build a prefixed static library and make it a link-time dependency. Change-Id: Id0be1f0e0034092d50f83cd364d5c65940fee869 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Fix a crash of accessing deleted paintengineMichal Klocek2014-03-141-1/+2
| | | | | | | | | | | | | | | | | | | | | | When painting to QPixmap with QBlitterPaintEngine and dfb PaintEngine have PaintDevice (pdev) as QImage. Painter code uses PaintDevice::paintEngine() to refer to paintEngine. This will became dangling pointer since QDirectFbBlitter::doLock() will delete QImage. Instead return QPixmap as PaintDevice. Change-Id: Idfac919b6438a82b412020e441e0a102e4a2a052 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | correct send vs sent grammarDavid Fries2014-03-141-5/+5
| | | | | | | | | | | | | | | | Correct the tense of send vs sent in comments and documentation. Change-Id: I1c5ce9a7b1e49b8b0e8dcfde7d732e4c69acf73a Reviewed-by: Kurt Pattyn <pattyn.kurt@gmail.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Ensure that QGuiApplication is inited before using QFontDatabaseTor Arne Vestbø2014-03-131-0/+3
| | | | | | | | | | | | Change-Id: I494c4fdfa49139316efac0f68f8d463c02056372 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Fix custom font substitution list supportKonstantin Ritt2014-03-112-8/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During the QPA refactoring, the custom font substitution list support was lost by ignoring the font request's fallbackFamilies member when the multi font engine gets created/initialized. If fallbackFamilies is not empty, it should be prepended to the font database default fallback families list. Also respect the custom fallback families list in the cache key to avoid picking a multi font engine with wrong fallbacks list. Task-number: QTBUG-36628 Change-Id: Ie2b84b3a397bee4816f421cddf76a5375829f13a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Guarantee QPFDB::fontEngine() always return non-multi font engineKonstantin Ritt2014-03-111-5/+4
| | | | | | | | | | | | | | | | | | | | After QPA refactoring, QWindowsFontDatabase::fontEngine() was returning a multi font engine w/o any particular reason. This makes the code more obvious and opens the road to further improvements. Change-Id: I4858026ddf774d3159c89357b1c905f5112b1c51 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Fix CJK languages support with HarfBuzz-NGKonstantin Ritt2014-03-101-14/+17
| | | | | | | | | | | | | | | | | | By some reason, mapping to Han script doesn't work for some (most?) fonts. Until the issue is really fixed, pretend the HB-old behavior and simply map to Common script. Change-Id: I4c146f5ff2a42f64b971b2f5ebd7f65e2513fdf0 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Revert some previously added constexpr in QVector?d classesAlex Blasche2014-03-106-43/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit partly reverts cd91d8ad0281c984a01b8091696a6fdfdfa69514. The revert is required as the used ifdef relied on undefined compiler behavior. Especially Windows has had trouble. The revert reduces the risk of breaks by future compilers. The proper inline and constexpr has to wait until Qt 6. Task-number: QTBUG-37122 Change-Id: I881fffb95fa46d9c170c9420a578f15640e18aea Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Doc: correction link, example and parameter issues qtbaseNico Vertriest2014-03-103-39/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | Moved codecs folder to qtbase/examples Corrected quote in dropsite.qdoc Replaced snippet statement by include statement Added doc for undocumented parameters Task-number: QTBUG-34749 Change-Id: If4de95b8d39e5680fd0f63f8d2b6685a4b0a8052 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Avoid using direct OpenGL calls in gui and widgetsLaszlo Agocs2014-03-1017-334/+438
| | | | | | | | | | Change-Id: I5d88a2e204ca23e178a4e3044b9cb13392c3e763 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Use QStringIterator instead of homebrewKonstantin Ritt2014-03-104-44/+24
| | | | | | | | | | | | | | Task-number: QTBUG-15664 Change-Id: I1ed3eb04ddd822e57a4d993af656dfe283f3af1a Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Android: Support double click eventEskil Abrahamsen Blomfeldt2014-03-103-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's impossible to get the distance between two touch events down to 5 pixels on e.g. my Nexus 5. This patch makes it possible to tweak the distance through the platform theme, and sets the distance to 15% of an inch on Android. Also provides a way to override the default minimum of 5 pixels by using an environment variable. [ChangeLog][Android] Fixed double click events Task-number: QTBUG-36974 Change-Id: I23d94020c531747d6638b645133611614a2a0703 Reviewed-by: BogDan Vatra <bogdan@kde.org>
* | QFontEngineQPA: Get rid of unused externalCMapKonstantin Ritt2014-03-082-17/+6
| | | | | | | | | | | | | | It seems to be a leftover after dropping the QPF1 font engine. Change-Id: If8d3e1447fab9d042a85195d7bdb4d9811c37c6e Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Make QFontEngineQPA report the TT 'cmap' table supportKonstantin Ritt2014-03-081-4/+8
| | | | | | | | | | | | | | The QPF2 CMap is identical to the TrueType CMap table format. Change-Id: I8c34d7c6a5942375538f3b8cb71d5a808b4fb400 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Fix description of how themes are created (code comments)Fabian Bumberger2014-03-081-4/+5
| | | | | | | | | | | | Change-Id: I3b8ed0af5208687a9ab75e916b477f5e24b4d1e2 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* | Make QVector* compile on Win/staticAlex Blasche2014-03-086-3/+11
| | | | | | | | | | | | Task-number: QTBUG-37122 Change-Id: Ib2283e8c27da7af2bdc08eee3b7cc542fbe55d71 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Improve code readabilityKonstantin Ritt2014-03-081-4/+3
| | | | | | | | | | | | | | | | Since we were requesting a multi font engine, the returned font engine must be a multi one or nothing at all. Change-Id: I1ee4e1b7c68f54c83a8c7292082d015ebfa0a8cb Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com>
* | Clarify QOpenGLContext::format() docsLaszlo Agocs2014-03-071-0/+14
| | | | | | | | | | | | | | | | Avoid unrealistic expectations where applications would assume that requestedFormat() == format(). Change-Id: I12dcfda3d86ce26f1cae9771b1fe2203291864db Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Clarify QWindow::format() docsLaszlo Agocs2014-03-071-3/+11
| | | | | | | | | | Change-Id: I35c5f9e7a235afc75c0051b3958875371f182b29 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Doc fixPaul Olav Tvete2014-03-061-6/+4
| | | | | | | | | | | | | | | | QOpenGLContext::destroy() is private. The recommended way to free resources temporarily is simply to delete the context. Change-Id: I0d59b55afb209d56405f3584e4645bd4718790af Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | Add optimize_full qmake config optionAllan Sandfeld Jensen2014-03-063-27/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds a new config option to qmake to enable full optimization where it makes sense. This currently is supported on all gcc like compilers by exchanging -O2 for -O3. In qtbase it is used to enable full optimizations on qtcore and qtgui and in a later patch can be used to replace similar existing logic in QtWebKit's WTF and JavaScriptCore modules. This fixes a performance regression from gcc 4.7 to 4.8 in the software renderer. An aliasing error in qregion.cpp which was exposed by more aggresive optimization has been solved as well. Change-Id: Ic2c6c41b79cb3846212b40e7bcc11ff492beb27f Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Clean up proxy leftovers in gui/openglLaszlo Agocs2014-03-063-16/+0
| | | | | | | | | | | | Change-Id: I24d10dab121c23b0683fa99bd309cf557c3ddffb Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Fix win32 mkspecsOswald Buddenhagen2014-03-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | Instead of checking for dynamicgl in QT_CONFIG, which is apparently not possible, revert them and do it in opengl.prf instead. Dynamic GL is Windows-only for the time being so this should be sufficient. Change-Id: If293ea4c9b024df52257086c8b6250602a44724d Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | Make QOpenGLFunctions able to resolve everythingLaszlo Agocs2014-03-063-49/+347
| | | | | | | | | | | | | | | | | | | | | | | | | | At least if the platform plugin's QPlatformOpenGLContext implementation supports it. This completes the QOpenGLFunction changes necessary for dynamic loading of the OpenGL implementation. Everything else is up to the platform plugin. Change-Id: I710e6fbee3005360ecf02bc6ef976e1beb513819 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Dynamic GL: Query gl handle and type via the native interfaceLaszlo Agocs2014-03-063-1/+45
| | | | | | | | | | | | Change-Id: I7ca5beaeb57ee2e4e9c175f53ac32371d1f6b5ed Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* | Prevent repeated and unnecessary font population QCoreTextFontDatabaseTor Arne Vestbø2014-03-053-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The platform font database is populated from QFontDatabase, through the static initializeDb() function, whenever the font database determines that the platform database has not been initialized (by checking if the font database is empty). There are other clients of QPlatformFontDatabase though, such as QFont, which uses the platform font database to check for the default family. The CoreText implementation of determining the default family relies on data that is computed during font population, and hence does an internal (self-triggered) populate. To prevent repeated populates as a result of calling QFont::defaultFamily() we guard the populate by a similar isEmpty() check as QFontDatabase does, but to ensure that this check works in the case of an invalidated font database, we need to propagate the font database invalidation down to the platform font database. Change-Id: I8d06c6f6fc5da6353c087335859eaca008c2f6a6 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* | Make QFontEngine::type() non-virtualKonstantin Ritt2014-03-056-37/+27
| | | | | | | | | | Change-Id: I24ece90d6d8f96dad0c41a474a491b4ea96d97c3 Reviewed-by: Lars Knoll <lars.knoll@digia.com>