summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/qnx
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-02-201-2/+7
|\ | | | | | | | | | | | | | | | | | | Conflicts: mkspecs/features/unix/separate_debug_info.prf src/gui/kernel/qwindow_p.h src/plugins/platforms/cocoa/qcocoacursor.mm tests/auto/tools/moc/tst_moc.cpp Change-Id: Ieb57834c00f961a747ffe51e6eb9fc9612cebccf
| * QNX: Don't crash with 0 by 0 sized windowsSergio Martins2013-02-191-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | In the rare event of an invalid sized window, the application crashes because libscreen doesn't like creating empty buffers. Not creating the buffers at all would also be a solution, if we didn't have QPainter crashes due do null paint devices. Change-Id: I561d0082576b6226dd52129f9640952ba46273c8 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * QNX: Print the buffer size before crashing, for debug purposes.Sergio Martins2013-02-181-0/+1
| | | | | | | | | | Change-Id: I2d423ee3717bb09b7bb2c63f645e5315be1fa611 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-02-1411-35/+92
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/concurrent/doc/qtconcurrent.qdocconf src/corelib/doc/qtcore.qdocconf src/corelib/global/qglobal.h src/dbus/doc/qtdbus.qdocconf src/dbus/qdbusmessage.h src/gui/doc/qtgui.qdocconf src/gui/image/qimagereader.cpp src/network/doc/qtnetwork.qdocconf src/opengl/doc/qtopengl.qdocconf src/opengl/qgl.h src/plugins/platforms/windows/qwindowswindow.cpp src/printsupport/doc/qtprintsupport.qdocconf src/sql/doc/qtsql.qdocconf src/testlib/doc/qttestlib.qdocconf src/tools/qdoc/doc/config/qt-cpp-ignore.qdocconf src/widgets/doc/qtwidgets.qdocconf src/xml/doc/qtxml.qdocconf Change-Id: Ie9a1fa2cc44bec22a0b942e817a1095ca3414629
| * QNX: Fix QInputMethod::keyboardRectangleChanged() signalOleg Shparber2013-02-122-0/+7
| | | | | | | | | | Change-Id: Iad3ee07ba85854d2eb0cf36710643b75993bf61c Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * QNX: Fix qFatal() statements.Sergio Martins2013-02-121-5/+5
| | | | | | | | | | | | "QQNXQBBWindow" doesn't make sense. Change-Id: I0e56d5be4a9bb7a0336f71ea3348621be730dee1 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * QNX: Add support for QInputMethod::keyboardRectangle()Oleg Shparber2013-02-085-5/+32
| | | | | | | | | | Change-Id: Ie23aa06fed5778e228abf0f35fc1136a86661771 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * QNX: Fix one more code path that led to having no QScreens.Sergio Martins2013-02-051-2/+11
| | | | | | | | | | | | | | | | | | | | | | Qt dereferences QGuiApplication::primaryScreen() inside, for example, QColormapPrivate::initialize(). libscreen always returns at least one display, even it it's not connected, so lets not ignore it if it's primary. Change-Id: I2f14a187c979ca0c7ad39149ceb0b2b7e61e9ba6 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * QNX: Don't crash if we unplug the primary display.Sergio Martins2013-01-311-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | The QPA plugin assumes in several places that we have at least one QScreen. Even if patching the plugin to support 0 screens, Qt itself crashes when dereferencing a null paint device while synching the backing store. Change-Id: I2ac504a447aff811d6c07ab857340a3433557cdc Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * Delay initialization of QQnxRootWindow until first access.Sergio Martins2013-01-294-20/+24
| | | | | | | | | | | | | | | | | | | | QtWebProcess, for example, doesn't create any QWindow, so it doesn't need any root window. This fixes Webkit2 rendering on QNX. Change-Id: I1d4c0dd20869798ba2bcd15f9d96e5fca4beb48e Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-01-221-0/+4
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qsavefile_p.h src/corelib/tools/qregularexpression.cpp src/gui/util/qvalidator.cpp src/gui/util/qvalidator.h Change-Id: I58fdf0358bd86e2fad5d9ad0556f3d3f1f535825
| * QNX: Don't use native file dialogs.Sergio Martins2013-01-171-0/+4
| | | | | | | | | | | | | | | | | | | | | | They are not supported anymore. Use the standard Qt dialogs instead. Change-Id: I2b6c7688e24e4345a95d3a9a062f9670cb1a845f Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Bernd Weimer <bweimer@rim.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-01-161-2/+8
|\| | | | | | | | | | | | | Conflicts: src/widgets/styles/qstyleanimation.cpp Change-Id: Iae570895be6544de80f9c1ec309d1a08c59daff8
| * QNX: Make QWidget::hide() work immediately.Sergio Martins2013-01-141-2/+8
| | | | | | | | | | | | | | Change-Id: I3ea2556769703a8cd4c2931cc2332ab0733fbea6 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* | Merge branch 'stable' into devSergio Ahumada2013-01-091-2/+7
|\| | | | | | | Change-Id: I7f0dab6bdb1f3cc1d3e6c30166ff6db9dfae37e9
| * Fix QNX QPA plugin clipboard implRafael Roquetto2013-01-081-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | QQnxCliboard::setMimeData was not cleaning the system clipboard aproppriately when m_mimeData != 0 but m_mimeData->userMimeData == 0, as it would return early before the empty_clipboard() statement. Also, we need to emit the dataChanged() signal after the clipboard has been cleared as well. Change-Id: Ie06609e6e3a0a0135f1cdb6cf4c90b490ef2fc28 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Merge branch 'stable' into devFrederik Gladhorn2013-01-072-10/+19
|\| | | | | | | | | | | | | Conflicts: tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp Change-Id: I6b8d505fc22f052c307ca27f58f7d16f98965f47
| * QNX: Don't crash because the window hasn't been initialized yet.Sergio Martins2013-01-032-10/+19
| | | | | | | | | | | | | | | | | | | | | | | | Don't call window->handle() inside the backingstore ctor, because we might still have the window ctor in the call stack ( ex: a QWindow sub-class that creates a backingstore inside it's ctor). Crash can be reproduced by running examples/gui/analogclock. Change-Id: I4622ceaeb05696c5ae0181a528f58e5d102dcb22 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* | Merge branch 'stable' into devFrederik Gladhorn2013-01-0410-28/+36
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: examples/widgets/painting/shared/shared.pri src/corelib/tools/qharfbuzz_p.h src/corelib/tools/qunicodetools.cpp src/plugins/platforms/windows/accessible/qwindowsaccessibility.cpp src/plugins/platforms/windows/qwindowsfontdatabase.cpp Change-Id: Ibc9860abf570e5ce8b052fb88feb73ec35e64bd3
| * Blackberry: Reset virtual keyboard when shown.Sergio Martins2012-12-171-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The keyboard mode is shared between applications. You can reproduce this bug by clicking on a spin box, it will open a number only keyboard, then close the application and run an application that shows a text edit: a number only keyboard will appear. PPS keyboard already does this. Change-Id: Ia22e96ce13ad0cec1fd3b43fcdf4d03abfc25134 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
| * Consistently prefix all platform plugin libraries with "q".Samuel Rødal2012-12-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | This means the xcb plugin library will be named libqxcb.so instead of libxcb.so, which doesn't clash with the system's libxcb.so. We need to consistently apply this on all platforms for static linking to work. Change-Id: I1640a7cae7b9846bbe62b19ab1c2c5bad7d02b4c Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@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>
| * Blackberry: Fix crash when opening file dialog without parent.Sergio Martins2012-12-106-23/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | If parent is null, we now use qqnxintegration->primaryScreen() This simplifies ctors of QQnxTheme and QQnxFileDialogHelper which now receive a QQnxIntegration pointer instead of receiving a font database and a bps event filter. Change-Id: I3b1ed4d99f738b980a4f19a98618341a14e0c222 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
| * QNX: Fix plugin compilationRafael Roquetto2012-12-041-1/+1
| | | | | | | | | | | | | | | | | | Fix the plugin compilation after cd34da54269e6cd7fa5c18242d982736f022a14a renamed the QWindow API. Change-Id: I3ec4ce9ae2df9a66f6bf24a18277bc59c05d2e8e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
| * Removed temporary backwards-compat properties and accessors in QWindowShawn Rutledge2012-12-032-3/+3
| | | | | | | | | | | | Change-Id: I718b877e3b6c0b1191a932d934599d5c2f5aa958 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* | QNX: QQnxCursor implementation.Rafael Roquetto2012-12-136-3/+166
|/ | | | | | | | | | | Implementation of QQnxCursor, a QPlatformCursor subclass. Due to the lack of a proper cursor API from the underlying OS, this class only caches the current cursor position to make sure that the QCursor class works properly. Change-Id: I55031184a009f3b26ad4af36b1975204e8fa80dc Reviewed-by: Sérgio Martins <sergio.martins.qnx@kdab.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
* QNX: Move buffer count check to appropriate locationRafael Roquetto2012-12-011-13/+14
| | | | | | | | | | | The buffer count check should take place right after buffers are created. For some reason, the buffer count value inside libscreen may become incosistent during the course of the program. Change-Id: Icbbaf4734eac5b0c5c95bdd93771899f9fcdb7db Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
* QNX: Fix window focus problems when using QNX 6.5.0.Sergio Martins2012-11-283-0/+13
| | | | | | | | | In blackberry, activation events come through the navigator, but we might not have a navigator. Change-Id: I0d9e1a08336aa403035fdf00be46d839a83f4b58 Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNX: Fix crash due to re-entering QToolTip::show().Sergio Martins2012-11-211-2/+6
| | | | | | | | | | | | | | | | | | | The flushWindowSystemEvents() was added to send the geometry event synchronously. A side effect was that all input events were also sent. We don't want that. We're probably in setGeometry() because some other input event brought us here, and it's still in the call stack. One crashy example is the static method QToolTip::show() which uses static variables([1]). If we process input events while the first QToolTip::show() is still on the call stack, it will trigger a second one, deleting stuff ([1]) that the first invocation will still need once the stack unwinds. Change-Id: Iea22419a7f386d6b6231404666092340dfd1afed Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* QNX: Don't crash on application exit.Sergio Martins2012-11-091-0/+1
| | | | | | | | | | Variable should be initialized in ctor so it doesn't crash when deleting it. Crashes with QNX SDP 6.5 Change-Id: I462f1e374f0588f29fe6fc14a957672467c9b2f7 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* beef up qt_plugin.prfOswald Buddenhagen2012-11-011-4/+1
| | | | | | | it now defines the DESTDIR and creates an INSTALLS rule. Change-Id: I15a462ccad9acbe3521c352fa98327825dc27c05 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* QNX: Query dynamic buffer count at runtimeRafael Roquetto2012-10-262-2/+17
| | | | | | | | | | | While unlikely, there are cases in which QQnxWindow::renderBuffer() is called before the window buffers have been created. Without this check, the program will abort on QQnxBuffer constructor, since the value that will be passed to it will be of an invalid buffer. Change-Id: I9ad5926dca856570032dcf10b6975e8f3364c284 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* remove last traces of qpluginbase.priOswald Buddenhagen2012-10-261-1/+2
| | | | | Change-Id: Idafdab98016cd20f0605a46bf9cb8938da41a99e Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Add DnD support for QNX.Sergio Martins2012-10-252-3/+25
| | | | | | | | | | We only need DnD within the same application for now, so returning a QSimpleDrag is enough. Change-Id: I842d48f0252f8103fa8632dd3d149ae431658adb Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com>
* QNX: Change base font sizes from pixels to pointsKevin Krammer2012-10-181-5/+7
| | | | | | | | | | | Previously recommended fonts sizes in pixels do not work very well on the new high resolution devices. Current UX documentation recommends certain point sizes for certain roles. Those work well on both type of devices. Change-Id: Ia4faa4cf2d753cab9b10f91d01dfef1450683272 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QPlatformWindow: change API for QPlatformWindow::setWindowStateRichard Moe Gustavsen2012-10-172-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | The current implementation requests the platform window to set the window state if it can, and return the actual window state back. The problem with this approach is that the platform window is created as late as possible, so a call to QWindow::setWindowState would in many (most?) cases never be forwarded to the platform window (instead, the platform window is responsible to check the current window state upon creation). As such, the window state might be left unsynched with the platform window. This patch suggests removing the return value from QPlatformWindow::setWindowState. This will at least be consistent, so that setting/getting state would produce the same result independent of delayed window creation. If needed, we can later add new API to QPlatformIntegration or QPlatformWindow for querying supported/actual window state. Change-Id: Ie43f56169656854a765ce88b47a808f8f3d51bb4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* QNX: code cleanup, use '0' instead of 'NULL'Rafael Roquetto2012-10-136-12/+12
| | | | | | | Qt coding style uses always 0. NULL is wrong. Change-Id: I163677b512214f853677d21d75f13142fe2ca88d Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Remove handleSynchronous* functions.Morten Johan Sorvig2012-10-101-1/+2
| | | | | | | | | | | | | | | | | | | | 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>
* 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>
* 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>
* 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>
* 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>
* Blackberry: Support input method hintsThomas McGuire2012-09-284-8/+25
| | | | | | | Change-Id: I2d30d6079d3982e5ca2b8d9346d0d511279792ad Reviewed-by: Nicolas Arnaud-Cormos <nicolas@kdab.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* QNX: use assert on QQnxWindow destructorRafael Roquetto2012-09-281-5/+4
| | | | | | | | | This makes it clear that the m_childWindows size must be 0 at this point, indicating otherwise an inconsistency in the logic of the child windows management. Change-Id: I04e418bc6e1d23681bd96f4d619cde9645dc6a22 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* Blackberry: Fix hardware button detection on the BB Dev AlphaThomas McGuire2012-09-271-1/+1
| | | | | | | | The format of the PPS object has changed, it is now prefixed with [n], so be more leninent in parsing to support both formats. Change-Id: I54eb1502a6231acf2dd121531539435c59d7d668 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-2259-1362/+1362
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Rotate non maximized windowsRafael Roquetto2012-09-192-1/+114
| | | | | | | | | | | | | | There are two types of rotation to be considered: 1. Rotation of native widgets The corresponding window should be rotated and resized proportionally to the new screen geometry. 2. Rotation of toplevel windows. The window will be only rotated. It will be only moved or resized if it becomes clipped, in order to be fitted on the screen properly. Change-Id: Ice92427ac07a9bea284e68917ff3e0f436722bc0 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>