summaryrefslogtreecommitdiffstats
path: root/src/plugins
Commit message (Collapse)AuthorAgeFilesLines
...
* Added possibleKeys(QKeyEvent *) to QWindowsIntegrationOliver Wolff2012-10-136-0/+41
| | | | | | Task-number: QTBUG-26902 Change-Id: I08d244816eae8794b52f244f049ee1fb825dac8b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Simplify transaction expiry mechanismGatis Paeglis2012-10-132-29/+41
| | | | | | | | | | | | | | | | | | | | | This patch makes transaction mechanism less scattered around and conforms to the xdnd specification: Don't block and keep a history of previous data. This can be very difficult to implement, but it is clearly the ideal behavior from the user's perspective because it allows him to drop something and then continue working with the assurance that the target will get the data regardless of how slow the network connections are. When the source receives XdndFinished, it can remove the item from its history, thereby keeping it from getting too large. The source must also be prepared to throw out extremely old data in case a target malfunctions. I assume that 10min for drag-and-drop operation can be considered 'extremely' old data. Change-Id: I73dcd21aee3ad188d2260e49d80824da6ba040ab Task-numer: QTBUG-14493 Reviewed-by: David Faure (fixes for KDE) <faure@kde.org> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Make sure timestamp is initialized before using it for seting selection owner.Gatis Paeglis2012-10-133-1/+58
| | | | | | | | | | | | | | | | | | | | | Convention from icccm: Clients attempting to acquire a selection must set the time value of the xcb_set_selection_owner request to the timestamp of the event triggering the acquisition attempt, not to XCB_CURRENT_TIME. In some cases it happened that timestamp was set to XCB_CURRENT_TIME. A zero-length append to a property is a way to obtain a timestamp for this purpose; the timestamp is in the corresponding XCB_PROPERTY_NOTIFY event. We used to have this mechanism in 4.8, it was achieved by XWindowEvent. AFAIK there isn't an equivalent for XWindowEvent in XCB. Therefore i had to introduce a new mechanism in QXcbConnection - getTimestamp. This function blocks until it receives the requested event. Change-Id: Ide46a4fdd44cf026fdd17a79d3c4b17741d1b7d4 Task-number: QTBUG-26783 Reviewed-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Check that row and column are not less than 0 in indexFromLogicalJosé Millán Soto2012-10-131-1/+1
| | | | | Change-Id: Icf6dbb234513de12c772618a046461b8674b01ce Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QtPrintSupport: Fix build with QT_NO_PICTURE.Sérgio Martins2012-10-131-0/+1
| | | | | | | | | | | | | | Printer support depends on having Picture support. If QT_NO_PICTURE is defined, qfeatures.h will define QT_NO_PRINTER. Not all code is including qfeatures.h, which causes inconsistency, some code has QT_NO_PRINTER defined and some has not, which causes the build to fail. Change-Id: I10a854244a41d017b921b731ec0e08f90a3326cf Reviewed-by: Holger Ihrig <holger.ihrig@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
* Fix QTextBoundaryFinder usage cases in QAccessible2Konstantin Ritt2012-10-131-10/+3
| | | | | | | | | | | Make the implementation safer and closer to what http://www.linuxfoundation.org/collaborate/workgroups/accessibility/ia2/ia2_implementation_guide#boundaries requires us to do. Change-Id: I00af4697e52a9b6e7f5d7b3f403b29126fa1517b Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Update/fix QTextBoundaryFinder simple usage cases in qtbaseKonstantin Ritt2012-10-132-6/+2
| | | | | | Change-Id: I4d3000558bce86e2de3c32247915868ba18fc8b7 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Modularize documenation buildTor Arne Vestbø2012-10-101-2/+0
| | | | | | | | | | qdocconf files can now reference $QT_INSTALL_DOCS to pick up e.g. global includes, instead of using relative paths. Qt modules will automatically get a doc target that builds and installs into the right place (including supporting shadow-builds) if they set QMAKE_DOCS before loading(qt_module). Change-Id: Ia408385199e56e3ead0afa45645a059d1a8b0d48 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* Remove handleSynchronous* functions.Morten Johan Sorvig2012-10-105-16/+26
| | | | | | | | | | | | | | | | | | | | There are now two different ways to implement synchronous event processing. The platform plugins can choose which one to use. 1) flushWindowSystemEvents() Use to flush the event queue at one point, making preceding calls synchronous. 2) setSynchronousWindowsSystemEvents(bool enable) Makes all handle* functions synchronous, bypassing the event queue completely. Change-Id: I020b80c731fd13f855a377d7c91d06a4e39b6a0b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
* Mac: Bring back "Text boxes and list only" tab navigationGabriel de Dietrich2012-10-101-0/+4
| | | | | | | | | | | | | Added ThemeHint::TabAllWidgets as a mean to access that platform specific bool. The default implementation returns always true when querying QPlatformTheme::themeHint(). Several auto-tests had to be updated to reflect for qt_tab_all_widgets' type change. One XFAIL removed from tst_QApplication::focusChanged(). Task-number: QTBUG-24372 Change-Id: Ie1f0486c19898fe54c53aa4a27e378485075e512 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Cocoa: Send keyboard modifiers with mouse events.Morten Johan Sorvig2012-10-101-1/+2
| | | | | | | Task-number: QTBUG-27462 Change-Id: Icb9352fcae6f92885d4f1381aa8014fef039149b Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Added missing keysym to handleExtendedKeyEvent in xcb plugin.Samuel Rødal2012-10-101-2/+2
| | | | | | | | | Now it's propagated to QKeyEvent::nativeVirtualKey() as it should. Task-number: QTBUG-27353 Change-Id: I40921b99662951decc83d2278e0cd337266dd530 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Windows: Filter out events sent during DestroyWindow().Friedemann Kleint2012-10-103-2/+7
| | | | | | | Task-number: QTBUG-26933 Change-Id: Ie7aaf9f0c9c12a33b059e796a3be161a2d60c64e Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
* Compile fix for when XCB_USE_GLX is not defined.Samuel Rødal2012-10-102-3/+7
| | | | | | | Fixes compile failure introduced by 394249616cbb4c0861a032d33f846f. Change-Id: I5794d22ee87eb18c08ea1de227b943f2e675356c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix wheel events in WindowsMiikka Heikkinen2012-10-102-11/+46
| | | | | | | | | | Wheel events were always passed to window that got them from native message loop, which isn't what Qt expects. Changed the receiver to preferably be the window under cursor, as long as it is not blocked by modal window. Change-Id: I4edf0608842fe5b822a7f574abfdae81fa755ee5 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* QNX: Add and remove screens dynamically.James Turner2012-10-094-18/+94
| | | | | | | | Watch for display events from libscreen, and dynamically add and remove QPlatformScreens (and hence QScreens) in response. Change-Id: I56dc7019a4d4c77798a0a88451d2f3060066f5d2 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QtPrinterSupport: Fix compilation with QT_NO_PRINTERSergio Ahumada2012-10-093-0/+11
| | | | | | | | | | | This seems to be a left over of 80f7a388906f94f58bf765a32b9abbb16f967db2 Task-number: QTBUG-27177 Change-Id: I72a285ed1d64f756d585a86d8401ee23eb4a1ce1 Reviewed-by: Sérgio Martins <sergio.martins.qnx@kdab.com> Reviewed-by: Indrajit Tapadar <indrajit.tapadar@digia.com> Reviewed-by: Holger Ihrig <holger.ihrig@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Cocoa: add qWarnining when trying to create 0 width/height CGImagesTeemu Katajisto2012-10-083-3/+18
| | | | | | | | | Add meaningful warnings when trying to create 0 width/height CGImages. This way it is easier to track down the place where valid size is not used. Change-Id: Id261ddf72d5487afcdb1a2a6d0d9079700888545 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Cocoa: don't animate window transitions for 0 width/height windowsTeemu Katajisto2012-10-081-0/+9
| | | | | | | Task-number: QTBUG-26617 Change-Id: I6dfc3f208368ddf6be65259218aee88db9692cfe Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* osx: support for QScreen changes at runtime, and physical dimensionsShawn Rutledge2012-10-083-21/+101
| | | | | | | | | | | | | QScreen's physical size and logical DPI come from the operating system. Physical DPI is calculated as pixel size / physical size. Whenever the user changes the display settings, applicationDidChangeScreenParameters is called; QScreens are created and destroyed when displays are added and removed, and each QScreen which continues to exist gets updated properties from the OS. Change-Id: I7f2e9e32a3ad53d73ea987f39a0c62fa8dd22b05 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Expose enabled state in mac accessibility.Frederik Gladhorn2012-10-051-0/+3
| | | | | Change-Id: I8b368cbdd7ce3bd402170a2bc2419d67a88a41ee Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Fix Windows mouse enter/leave event generationMiikka Heikkinen2012-10-042-24/+59
| | | | | | | | | | | | | | | | | | | QWidget::underMouse() did not report correct widget in cases where mouse was grabbed by popup, which was especially disruptive in case of QCompleter popup, as that wouldn't close anymore with off-popup clicks. Root problem was that mouse capture in Windows caused enter/leave events for QWindows to be generated incorrectly. QPlatformWindow documentation specifies that enter/leave events should be sent independent of explicit mouse grabs and only automatic mouse grabbing done when button is pressed should suppress enter/leave events. Updated Windows mouse handling to conform to this. Task-number: QTBUG-27283 Change-Id: Iecf786a702f7d29e6026c42ff8ec4c9cbf1b6ac3 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Run per-QWindow native event filter for all events.Friedemann Kleint2012-10-041-8/+11
| | | | | | | Task-number: QTBUG-27101 Change-Id: I064f91e250d68223da3b81d605e522c8b78535f5 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
* Cocoa: fix regressions in cocoa filedialog helperTeemu Katajisto2012-10-041-6/+6
| | | | | | | | | | | | mOpenPanel is set to 0 if save file dialog is used so call mSavePanel instead. Fixes regression introduced in 2e902799df6298ad4c75b4c565a0baf9cb7f7ab8 Change-Id: Idb93e44437731cad3c985d51b57b793a3ff2f292 Reviewed-by: Pasi Matilainen <pasi.matilainen@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Remove unused placeholder from qErrnoWarning().Friedemann Kleint2012-10-041-3/+3
| | | | | | | | | The intention probably was to use __FUNCTION__, but since Qt logging can now be configured to print the function name by setting environment variables, just remove it. Change-Id: Ic87aebfea633dd91eda7376b33ca3b14d1cab93f Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
* Windows: Append file suffix in save-dialog.Friedemann Kleint2012-10-041-1/+21
| | | | | | Task-number: QTBUG-27186 Change-Id: I04304fce1cbf6fb6794f352ff896eb463699d42b Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
* Update the window style when the modality changes on CocoaAndy Shaw2012-10-042-1/+8
| | | | | | | | | | | On Cocoa if the modality of a dialog changes then the style of the window needs to change to reflect this. So we add a variable to cache the windows modality when it is created to compare against when being made visible. Task-number: QTBUG-22316 Change-Id: I7bfd016321510a9ec70ccb90672f5203a0f3a468 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Return if header is 0.Frederik Gladhorn2012-10-041-0/+2
| | | | | | | QT-BUG: 184868 Change-Id: Iff041c66fdfb2267e0349bdd47fec0fe63b1799d Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Check for valid model and view in isValid for TableCells.Frederik Gladhorn2012-10-031-2/+3
| | | | | Change-Id: Iadca5503ed2a1d6411d46ed6fe9d5b9a56461a3a Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Make accessibility debug output optional.Frederik Gladhorn2012-10-031-1/+1
| | | | | | | | | On linux with the new plugin debug output was a bit too generous. Instead use environment var: If QT_DEBUG_ACCESSIBILITY is set, give the full a11y output. Change-Id: I1c9e2078e38799f91468cfc2d9ddcaa36ba4fa03 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Mac: QComboBox wouldn't receive mouse events when shown within a modal dialogGabriel de Dietrich2012-10-031-0/+4
| | | | | | | | | | The mouse events were being stolen by the modal dialog, preventing the combo box to update itself. Key events were being properly forwarded, but this was probably due to the different way key events are being delivered. Change-Id: I5bfc4800fad9fd4122a212e6fdec13811a7e647b Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* OpenGL: Don't request a context version higher than is supportedSean Harmer2012-10-036-61/+277
| | | | | | | | | | | | | | | The function wglCreateContextAttribsARB will fail if we request a context version higher than is supported. We therefore upper-bound the requested version by the version of the static context. This results in context creation succeeding and having the closest possible match to the requested format. The xcb qpa plugin is modified to operate similarly to the windows plugin in that it now creates a "static" context which is used to limit the versions of contexts requested by the user. Change-Id: I277ad7cc82edfdf7b9d8502ad921c8175feb1a4a Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Introducing the PlatformPanel event type.Sergio Martins2012-10-031-3/+8
| | | | | | | | | | | | | | | | | This event can be used by any platform plugin to implement special application panels/overlayed menus. Currently used by QNX only. This replaces sending fake Qt::Key_Menu presses in the QNX plugin. Qt::Key_Menu is already used when invoking context menus with the keyboard. Change-Id: I9c8f1743fd147a07c11883323800017376915ae1 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com> Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* Change Q_ASSERT to warnings and returns for the menu classesAndy Shaw2012-10-033-10/+42
| | | | | | | | | | | On Mac usually release frameworks are used during development so asserts don't tend to get fired. Since the menu code did not crash in Qt 4.8, it was decided that we should ensure that the same code does not crash now so instead we warn instead of asserting for those cases. Change-Id: I923e5591202cb2ad801074ce3ad2a11d7190cee8 Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Cocoa: add missing auto release poolsRichard Moe Gustavsen2012-10-021-0/+4
| | | | | | | | Got complaints while running file dialog example. Adding in the release pools will fix the problem. Change-Id: Ib33fddd5aedfc3e4aaa6fdd8995bbc8c8098267c Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Cocoa: bugfix staysOnTopFlag in combination with transient parentRichard Moe Gustavsen2012-10-021-15/+8
| | | | | | | | | | | | | | | A staysOnTop window with a parent would never stay on top. The reason was that we placed the window on the same level as the parent, which would undermine the staysOnTop flag. The fix for this is to always level the window to _at least_ as the same level as the parent, but never lower. A code path for this already existed in the windowLevel function for popups. so we factor that out and use it for all cases. Task-number: QTBUG-27410 Change-Id: I0c30194be33703f54b6c2fe7f3088a9febcd1e2c Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Fix a crash with xcb on 64bit systems when hitting any key.Jocelyn Turcotte2012-10-024-38/+138
| | | | | | | | | | | | | | | | xcb uses 32bits for xcb_keysym_t, but Xlib uses 64bit longs on 64bits systems for KeySym and all other XIDs on the client side. Passing an xcb_keysym_t* to XLookupString, expecting a KeySym*, would overwrite the next 32bits in memory and possibly cause a crash. This patch makes sure that a KeySym* is passed to XLookupString, and use the signature declared in Xutil.h to make sure the types are right. Encapsulate it in qxlibconvenience.cpp since including Xutil.h inside qxcbkeyboard.cpp causes macro expansion problems. Change-Id: I68451a24cb44a43dfa4382b5dce1ea7845f14e26 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Laszlo Papp <lpapp@kde.org>
* Stop delivering messages when drop has occurred.Gatis Paeglis2012-10-022-1/+7
| | | | | | | Task-number: QTBUG-27406 Change-Id: If14c108060ad6de70991658f0e0249eb544b87a0 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Retrieve drop data with a proper timestampGatis Paeglis2012-10-024-4/+8
| | | | | | | | | | | Occasionally drag-and-drop was returning empty mimedata due to using wrong value for timestamp. Accoring to the xdnd specification we must use timestamp from XdndPosition or XdndDroptime for retrieving the data. Task-number: QTBUG-27367 Change-Id: Iadb6b6989cfc4e8ab241e2fd0ded59355108f22f Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Ensure that QDrag is set correctly at all times.Gatis Paeglis2012-10-021-5/+7
| | | | | | | | | | | | | This patch fixes broken code in handleSelectionRequest(). There are 2 cases when this function is called: 1) When XdndDrop has arrived (on mouse release) 2) When drop has not occurred yet (while mouse are still pressed down) Second case was not working due to this bug. Task-number: QTBUG-27405 Change-Id: I913cfd332128a28861e2fcc027b406eb821d2597 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Fixed xdnd protocol-version detection codeGatis Paeglis2012-10-021-3/+3
| | | | | | | | | | | Bug introduced when porting from Xlib to xcb. Xcb returns actual number of bytes read while Xlib returns number of 8-bit, 16-bit, or 32-bit items stored in the returned data. Task-number: QTBUG-27403 Change-Id: Ia64da1953ec7be8d32cc591565cd1b41ce8d7dbb Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Don't let mimeData return 0.Gatis Paeglis2012-10-021-12/+25
| | | | | | | | | Fixes bug introduced in SHA e247e2810 (QTBUG-26709). Change-Id: I9aa80239675b2d564d08a019ca267a9aa814074e Reviewed-by: David Faure <faure@kde.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* Fix filter regular expression for native Windows file dialog.Friedemann Kleint2012-10-021-1/+1
| | | | | | | Task-number: QTBUG-26986 Change-Id: Idbbaca4ea4fc298c50a30671c48b597ac38d3308 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
* fix QWidget::setWindowFilePath on Mac OSJoerg Bornemann2012-10-022-0/+12
| | | | | | | | Task-number: QTBUG-27299 Change-Id: I4dddbb9690aac327ad33477d8cea9afa84d10eb3 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* QNX: Also support input method hints from QtQuick elementsThomas McGuire2012-10-011-1/+1
| | | | | | | | | Turns out some QtQuick elements have the "inputMethodHints" property as well, so don't only accept input hints for widgets. Change-Id: I81a14be20cdca7d993dc88e8e252ecdfde8eb4ea Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QXcbWindow: Don't recreate window when reparenting.Yoann Lopes2012-10-011-3/+0
| | | | | | | | | | | | For consistency, this behavior has been kept across Qt versions... Just get rid of it. Also fixes native child widgets not being notified of the change of window handle (winId) when being reparented. Updated auto-test. Change-Id: I3616dc0f1c32a519d78a4846297d6d4a6e926fbf Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* QNX: Only set parent window if it is not NULLRafael Roquetto2012-10-011-1/+1
| | | | | | | | | | | | | There are cases where a widget has a parent, but is also a toplevel window at the same time, causing the system window to have no parent. For instance, a QMenu usually has a QMenuBar as a parent, however QMenuBar itself does not have its own platform window, as opposed to QMenu. Thus QMenuBar::parent == QMainWindow (for example), but QMenuBar::platformWindow == 0x0; QMenu::parent == QMenuBar, but QMenu::platformWindow != 0x0 (which is QMenuBar's value). Change-Id: Ib203fa1b85f5f20ef53366c80d6752d6384a202d Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* QQnxWindow: use a proper castMarc Mutz2012-09-291-4/+1
| | | | | | | | | Replace a C-cast with a const_cast. Casting doesn't care about nullptr, so don't check for one. Change-Id: I18a3e8f21d73b73385e567c7ceaf64e36aaa2cf3 Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNX: fix bug on window hierarchy listRafael Roquetto2012-09-281-8/+6
| | | | | | | | | removeFromParent() must not be called from raise()/lower(), because it wrongly sets m_currentParent to 0, causing the parent/child link to be broken after a call either of these methods. Change-Id: I58f847dc4a46f2cf120cb3acf230bac46bcf24f5 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* QNX: fix assert condition on the destructorRafael Roquetto2012-09-281-1/+1
| | | | | | | | m_childWindows must be 0 (and not > 0), since at this point it should have no children. Change-Id: I149e34849cab2d56f8617cc04fc6bf95c0476e4c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>