summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/cocoa
Commit message (Collapse)AuthorAgeFilesLines
* Cocoa: Make tool window receive mouse events also when its parent is modalGabriel de Dietrich2013-02-081-2/+4
| | | | | | | | We need to check for the Cocoa window class because of the way currently QDockWidget works. Change-Id: If69c7327c168518614fe884defa79deb358e260d Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Cocoa QPA: Fix compilation errorGabriel de Dietrich2013-02-051-1/+2
| | | | | | | | | | The error appeared with latest clang as of Feb. 5, 2013. Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn) Target: x86_64-apple-darwin12.2.0 Change-Id: I8df8cccc941ac03a7a997bdd5afe095b7b6f65d3 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Cocoa: prevent scale factor value of 0.Morten Johan Sørvig2013-01-301-1/+1
| | | | | | | | Check that the NSWindow pointer is valid before calling backingScaleFactor. Change-Id: Ia23cbb4058b7d0fece008bc437f8bfec6c0ddebe Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Mac: Ensure the native filedialog sets file name when savingLiang Qi2013-01-291-0/+2
| | | | | | | | | The name field string was not set in native dialog when one was present. Task-number: QTBUG-28342 Change-Id: I243b491c8bc094d45f25be96b3bde8eccbb65acd Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Mac: make windows not restorable on 10.7 and laterLiang Qi2013-01-291-0/+5
| | | | | | | | | | | | | | | | The default value for NSWindow::setRestorable: is true, it means application will have some information for each window stored. After a crash happened and application relaunched, the application tries to restore those windows from the broken file. And then the "Retore Windows" will pop up. There is no workaround for application users or develoeprs. What they can do is to manually remove the the saved application state file for the applicaiton. To avoid that, better to switch it off. Task-number: QTBUG-28281 Change-Id: I8ce3cd94f5ae81d7877a346743ca4e0e188baa02 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Fix minor typos in docs, printed messages & commentsSze Howe Koh2013-01-283-3/+3
| | | | | | | Missing apostrophes Change-Id: I3ef5e9d494fb7a37f8e6075f24cd3a274e572c23 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Cocoa: export setDockMenuMorten Johan Sørvig2013-01-282-0/+17
| | | | | Change-Id: I1eb35c34427660d2662f310a3e8c4e5ba42e08eb Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Cocoa: Correct mime handler prioritization.Morten Johan Sørvig2013-01-281-3/+8
| | | | | | | | | | | According to the documentation recently added mime type converters should take precedence over previously added converters. Make it so. Task-number: QTBUG-25951 Change-Id: Ic23ca7cbb93a98711d762b1ef0e0dd2aa1ceaeda Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* cocoa: Fix Mouse Event tracking of button statusRick Stockton2013-01-252-111/+21
| | | | | | | | | | | | Within qcocoahelpers, make function cocoaButton2QtButton() handle all button numbers. Within qnsview, call the function in several places (eliminating duplicate, inefficient code). Task-number: QTBUG-28567 Change-Id: Ibae2ae4e8a881b825a8862afb82aa80437751111 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Rick Stockton <rickstockton@reno-computerhelp.com>
* Doc: Fix module name formatSze Howe Koh2013-01-253-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Follow the conventions at http://qt-project.org/wiki/Spelling_Module_Names_in_Qt_Documentation QtCore -> Qt Core QtDBus -> Qt D-Bus QtDesigner -> Qt Designer QtGui -> Qt GUI QtImageFormats -> Qt Image Formats QtNetwork -> Qt Network QtPrintSupport -> Qt Print Support QtScript -> Qt Script QtSql -> Qt SQL QtSvg -> Qt SVG QtTest -> Qt Test QtWebKit -> Qt WebKit QtWidgets -> Qt Widgets QtXml -> Qt XML QtConcurrent -> Qt Concurrent (partial) QtQuick -> Qt Quick (partial) Also, distinguish between "module" and "library" Change-Id: Icb8aa695ae60b0e45920b0c8fce4dc763a12b0cd Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-01-241-0/+33
|\ | | | | | | Change-Id: Idcaa9b0c63aca5ba11ee3fa2da456178655a1ae3
| * Cocoa: Backport Qt 4's QCocoaView tracking areas into QNSViewGabriel de Dietrich2013-01-221-0/+33
| | | | | | | | | | | | | | Task-number: QTBUG-29153 Change-Id: Ib190c074defaa459a8acc738f09af4a65e5d91d1 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* | Export functions to add custom mime converters.Morten Johan Sørvig2013-01-215-9/+61
| | | | | | | | | | | | | | | | | | | | | | For use with public API in QtMacExtras. This goes into Qt stable: Fix for new functionality, and close a feature regression against Qt 4. Change-Id: I555fdff3ddb39336ccd72f9711d465f1c18c6b45 Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* | Make sure the correct name filter is selected in the Mac file dialogAndy Shaw2013-01-181-5/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | Since we have to add the filters one by one to the Mac file dialog it was finding the one that would match the filter by comparing the start of the filter string. However it would continue to check the start of other filters even if it had already found the one it should be using. Now it uses either an exact match or the first one that it matches the start of. Change-Id: Ie6441acd48e45ec9c712afc12a2ea47755835bb3 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* | Call endSheet when the QFileDialog was shown as a sheet on MacAndy Shaw2013-01-181-0/+2
| | | | | | | | | | | | | | | | If the sheet is not ended then subseqent calls to show a sheet will not work correctly. Change-Id: Ib8a43a1c96a3dadff196c433e822f7579ad87b8b Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* | Update copyright year in Digia's license headersSergio Ahumada2013-01-1875-75/+75
| | | | | | | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | More explicit QCocoaAccessibleElement memory mngmtMorten Johan Sorvig2013-01-094-8/+16
|/ | | | | | | | | | Don't autorelease in the elementWithInterface function, rename it to createElementWithInterface. The element can then be released immediately or autoreleased ("delete later"). Change-Id: I155a85404c34d756c1752eb7c24a7fb0f3cf2e77 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Cocoa: Fix zombie NSScreen crashGabriel de Dietrich2013-01-042-9/+14
| | | | | | | | | | | | While the Cocoa documentation says we should not cache [NSScreen screens], it seems that we should not cache its referenced objects either. This caused a crash in desktop components when using Dial because, given the way it is being rendered, we need to know the screen pixel ratio. Task-number: QTCOMPONENTS-1279 Change-Id: If5c3c6f14d04925215b9dca011143a2056a68846 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Cocoa: Re-enable per class palette on QPA pluginGabriel de Dietrich2012-12-241-16/+16
| | | | | | | Task-number: QTBUG-28443 Change-Id: If66604e8d002be6cf4c308378199c96be7422e06 Reviewed-by: Jake Petroules <jake.petroules@petroules.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
* add and use qtHaveModule() functionOswald Buddenhagen2012-12-211-1/+1
| | | | | | | | | | | this is much more elegant than the so far propagated !isEmpty(QT.foo.name). also replace feature-specific tests (no-gui and no-widgets) and the obsolete contains(QT_CONFIG, foo) syntax. Change-Id: Ia4b3c8febcabf9eeca67b1f9173a523820b1038b Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com> Reviewed-by: Tasuku Suzuki <stasuku@gmail.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Prevent a crash if the pixmap passed in is nullAndy Shaw2012-12-201-0/+2
| | | | | | | | If the pixmap passed in is null then we should not try to create a NSImage for it, so we just return 0 instead. Change-Id: Idae7ba304c97878e0aa8ae1eead5f4bb644a73de Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Initalize the printinfo on Mac if it requests and it needs initalizingAndy Shaw2012-12-171-2/+4
| | | | | | | | | | | When the print panel was closed then it would clean up the printinfo and if it was requested for the same QPrinter then it would not be recreated in time. Therefore we check if it is initalized and if not we re-initalize it. Task-number: QTBUG-28657 Change-Id: I7dc9011b80e03cfa3eae8fee2fcf6cc8021a8566 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Cocoa: make accessibility hit test not crashMorten Johan Sørvig2012-12-161-0/+4
| | | | | | | | | Check if the accessibility element is valid before calling childAt. Change-Id: Id63c11f18b262c3c3a839db8ee2d11c0d7adc822 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Ensure the native filedialog starts up with the right directoryAndy Shaw2012-12-141-3/+3
| | | | | | | | | | On Mac it was not starting the dialog with the specified directory when one was present. If a filename was given as well then it would start up fine. Task-number: QTBUG-28161 Change-Id: I7cce0d065dd57e6433ce62380d4263d6e20b6e7c Reviewed-by: Liang Qi <liang.qi@digia.com>
* Fix memory leak in cocoa accessibility.Morten Johan Sorvig2012-12-141-1/+1
| | | | | | | | Autorelease ("delete later") the created attribute name array. Change-Id: I2d7af9eb1fd899f04c8acb90204600a2dd43fa20 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Don't use NSAccessibilityUnignoredChildren.Morten Johan Sorvig2012-12-142-2/+2
| | | | | | | | | | The function is massively ineffective on deep hierarchies and not strictly needed. (It's supposed to filter out "Ignored" children - VoiceOver will do that anyway based on accessibilityIsIgnored()) Change-Id: I9a74b5f5e9b7880e0d46d5330f7192472eac7a36 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Mac: fix bugs for font selection in QFontDialogLiang Qi2012-12-141-10/+6
| | | | | | | | | Use localized family name and style name when selecting font with non-English locale Task-number: QTBUG-27415 Change-Id: Ie81507ed011fc096e0f5edad146e97c392e86494 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Fix QWidget::setWindowOpacity() when called before show().Friedemann Kleint2012-12-121-0/+5
| | | | | | | | | Pass opacity from the QWidget to QWindow and to the platform windows. Task-number: QTBUG-28477 Change-Id: If5a85d9183bd1ca33dac2052936ecd1e6c0b5f6c Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Improve Cocoa platform plugin loading.Morten Johan Sorvig2012-12-121-7/+0
| | | | | | | | | | | | | | | | | | | Loading both the debug and release version of the cocoa plugins causes the objective-c runtime to print "duplicate class definitions" warnings. Fix this by directing the plugin loader to only load one of the cocoa plugins if both are available. Implement this as a special case directly in QFactoryLoader. Define QT_NO_DEBUG_PLUGIN_CHECK to allow mixing debug and release builds. Task-number: QTBUG-28155 Change-Id: Ie1927b219cc501a821f91b7e4b56f0589e0acbf5 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Partially revert e84e86dc.Morten Johan Sorvig2012-12-111-1/+1
| | | | | | | | | | | Make tst_qquickview::resizemodeitem pass. Returning on equal geometry breaks for non-top-level windows. Change-Id: I3b361655e25b6cf2d5e29410dc1f3567ab8f54d9 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Add PLUGIN_CLASS_NAME to qtbase pluginsMiikka Heikkinen2012-12-101-0/+1
| | | | | | | | Needed for automating static plugin loading. Task-number: QTBUG-28131 Change-Id: Icd993c0fc8335f29aeec30e853a408d888069399 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Implement Cocoa KeyMapper.Morten Johan Sorvig2012-12-076-2/+604
| | | | | | | | | | Port Qt 4 implementation. Shortcuts such as shift-5 should now work. Change-Id: I1d8c4c6c4a903142361996b558ee31c8549fcef6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Set CGImage format when converting from QImage.Morten Johan Sorvig2012-12-071-1/+22
| | | | | | | | | Set the CGImage format based on QImage::format(). Handle8-bit per component (A)RGB. Change-Id: I041b0ee53d3943a0aaf9e813eb0a235c4de619dd Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Use the "copy" blend mode for backingstore drawingMorten Johan Sorvig2012-12-071-0/+1
| | | | | | | | | | The default is a "source over", but we want to completely replace the destination pixels. (Which is slightly faster). Change-Id: I4916765258a2236f70f58a8e20b06f80739183c1 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Avoid backing store color space conversions.Morten Johan Sorvig2012-12-071-1/+15
| | | | | | | | | | | | | | | | | | | | We want the Qt backing store to be in the device color space by default. This will avoid colour space conversions when blitting it to screen, at the cost of a potential loss in color accuracy. As it turns out, CGColorSpaceCreateDeviceRGB no longer crates a device color space but rather a generic color space. (Since 10.4). Create the color space with a system profile instead. Accurate color representation needs to be supported at some point, but this fast path should be the default. Change-Id: I7ebb77b36f81f66119d8c2ef464723401ec1d1e8 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Update QNSView geometry on window resize.Morten Johan Sorvig2012-12-072-3/+4
| | | | | | | | | | | | | | | | | Ideally this should not be required since NSWindow should resize the content view automatically. However, in the case of modal QDialogs this does not happen. Add call to updateGeometry in windowDidResize as a workaround, and remove code which called QNSView::setFrameSize with the current size. This will cause duplicate handleGeometryChange calls in the non-qdialog case, add a test to see if the geometry really has changed to prevent that. Change-Id: I29bea23b2ab72f923aeadf8db8cb9131ae177a28 Reviewed-by: Liang Qi <liang.qi@digia.com>
* Cocoa: fix unresponsive dialogs causes application to hangRichard Moe Gustavsen2012-12-051-8/+10
| | | | | | | | | | | | | | | | | | | | | The reason for this bug seems to be related to how we wait for more events in the event dispatcher. We use the nextEventMatchingMask function, which already in Qt4 showed to have problems when telling it to not dequeue the event. The solution back then was to tell it to dequeue the event, and instead repost in front again. Why this was changed in Qt5 is uncertain (other than it being tempting) but moving the same code back in will solve the bug. Note that this bug might also stem from the fact that the run loop sources we add in the event dispatcher fires before the application is really ready to show modal dialogs. E.g refusing to execute a modal dialog before NSAppDelegate applicationWillFinishLaunching is called will also fix the problem. But this code change is to big atm, and can easily introduce other unforeseen regressions. Task-number: QTBUG-28283 Change-Id: I07cd109568c2b9c782cf5120a9eb2ac71128cada Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Ensure ctrl + click sends a right mouse button press in CocoaAndy Shaw2012-12-042-2/+15
| | | | | | | | | | | Since Mac's typically just have one button for their mice then pressing Control then clicking the button should end it as a right mouse button event. Task-number: QTBUG-28350 Change-Id: Iabcac5b315c36cb8cd062c27d7b1506bc066f5bb Reviewed-by: Liang Qi <liang.qi@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Mac: fix regression to make dialog resizableLiang Qi2012-12-031-2/+2
| | | | | | | Task-number: QTBUG-28254 Change-Id: I8623a68d589bec17042935ad308f85ddc953540d Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Cocoa: create dialogs as NSPanelsTeemu Katajisto2012-12-011-6/+10
| | | | | | | | | NSPanels have builtin support to work with modal sessions. Task-number: QTBUG-28111 Change-Id: Ifeb6de03129e77aad744b3989931964c375cdbc7 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Properly release pixel format and context in QCocoaGLContext.Zeno Albisser2012-12-012-0/+8
| | | | | Change-Id: Idd13924dccc8d7798f463484eeb3c3074f7b51f1 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Basic high-dpi "retina" support for Qt 5.Morten Johan Sørvig2012-12-018-14/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | Bring Qt 5 on par with Qt 4, prepare for more comprehensive support later on. Introduce device independent pixels (dips), device pixels, and devicePixelRatio. Add high-dpi support to QPainter, QGLWidget, the cocoa platform plugin, mac and fusion styles. Dips are similar to CSS pixels, Apple points and Android density-independent pixels. Device pixels are pixels in the backing store/physical pixels on screen. devicePixelRatio is the ratio between them, which is 1.0 on standard displays and 2.0 on "retina" displays. New API: QImage::devicePixelRatio() and setDevicePixelRatio() QPixmap::devicePixelRatio() and setDevicePixelRatio() QWindow::devicePixelRatio() QScreen::devicePixelRatio() QGuiApplicaiton::devicePixelRatio() Change-Id: If98c3ca9bfdf0e1bdbcf7574cd5b912c9ff63856 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* QWidget windows have fullscreen button by default; manual test for itShawn Rutledge2012-12-011-0/+3
| | | | | | | | | | It's again possible for QWindows and widget windows to go into fullscreen mode on the Mac. Change-Id: I7b304a135838394ef0392f89be4f225f2949fad3 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Cocoa: Disable accessibility.Morten Johan Sørvig2012-12-018-3/+28
| | | | | | | | | The accessibility implementation is unstable and causes application crashes. Disable until it has been stabilized. Change-Id: Ic34361a0ad599c6f92df722499d274fe0655646b Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Cocoa: fix modal native dialogs with ongoing modal sessionsTeemu Katajisto2012-12-013-0/+13
| | | | | | | | | | | | | Commit 26db7de13d5885067844532b5a5814181a0ddf16 introduced the modal session cleanup for Cocoa print dialog before running the modal event loop for the dialog. Add the same cleanup for Cocoa file, font and color dialog helpers. Task-number: QTBUG-28146 Change-Id: Ifeb7c82566db35f0c6654be7762e9aaffbafb900 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Cocoa: update OpenGL viewport when nsview movesRichard Moe Gustavsen2012-11-283-3/+35
| | | | | | | | | | | | | | | | | | NSOpenGLContext expexts an -update call whenever the physical position of the view it draws to changes on screen. Since we don't get geometry callbacks for such views when the parent view moves, we need to register a special notification for that case, and tell Qt that we need to repaint the QWindow that the view is backing. This case does not hit very often, but is evident in MDI applications where the subwindows are OpenGL backed QGraphicsView widgets. Dragging the subwindows around produces garbage inside the windows. Change-Id: I1b162470b03cca6ed722c6c54080459f2c5e91d9 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Mac: Fix wheel event handling on 10.6Liang Qi2012-11-271-5/+5
| | | | | | | | | Change "else" case to support compiling on 10.7+ and deploying on 10.6 Task-number: QTBUG-28060 Change-Id: Iaaeaaefe98083863ed750c7cb320db02e16543af Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Cocoa: Make sure non windowed QCocoaWindows hide their content viewsGabriel de Dietrich2012-11-231-0/+4
| | | | | | Change-Id: I92b8600c513ba033c459b6911ca62fc31698dc4a Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Cocoa: Make sure child windows' QNSView is properly releasedGabriel de Dietrich2012-11-231-0/+2
| | | | | | | | | | Child QCocoaWindows don't have an assigned NSWindow, but still get a QNSView as backing store. That QNSView is added as a subview to the parent window's QNSView. That would leave an unmanaged QNSView alive. Change-Id: I10f57fb971f7aa1e278bb0af4217052d1e4bb0bc Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Cocoa: QGLWidget draws wrong within QMainWindow on Mac OSRichard Moe Gustavsen2012-11-236-101/+125
| | | | | | | | | | | | | | | | | | | | | | | | The resons for this bug is that Qt can share the same backingstore between several windows (if they exist in the same hierarchy), but this was just not supported by the Cocoa plugin. This patch will make sure that we pay attention to which window the QCocoaBackingStore is told to flush, and forward this information to the QNSView that backs it up. Inside the views drawRect function we then take some extra steps to get the correct sub-part of the possibly shared backingstore image. This patch also does some effort to ensure that we recreate the backingstore image as little as possible, as we can often get several resizes to the backingstore before we actually draw anything. Moreover, by being a bit careful on how we tell UiKit to update the view upon a flush, we can minimize the number of drawRect calls (and then CGImageRef creations) we need to do. This patch actually ends up improving resize/repaint performance a lot as well. QT-BUG: 27390 Change-Id: I2c2a26b149fa855411b6bff8b9cc9a61694ae72f Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>