summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Add default format to QSurfaceFormatLaszlo Agocs2014-08-087-4/+94
| | | | | | | | | | | | | | | | | | | | | | Add defaultFormat() and setDefaultFormat() statics to QSurfaceFormat. These define the default values for the requestedFormat members of QOpenGLContext, QWindow and QOpenGLWidget (and implicitly QOpenGLWindow, QQuickWindow, etc.) This replaces QQuickWindow::setDefaultFormat() which can now be removed. The main inspiration here is not the convenience (avoiding setFormat() calls for all windows/widgets), but robustness: by setting the format once at the start of the application, all windows and contexts, including the internal share context used by QOpenGLWidget and QQuickWidget, will use the same format, eliminating the possibility of failing due to trying to share between incompatible contexts. Furthermore, since such a functionality is anyway mandatory for QQuickWindow (due to the possibility of creating windows from QML code), extending it to QSurfaceFormat and QOpenGLContext/QWindow is the next logical step. Change-Id: Ie94486adc489d17fecfcebb7050fecedffd2688b Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Fix the docs for resizeGL in QOpenGLWindowLaszlo Agocs2014-08-081-3/+9
| | | | | | | | Some of it was blindly copied from QOpenGLWidget and it does not apply. Change-Id: I73f358f74d286d3757a3a77a9bfe06887d57514a Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Add some missing STL typedefs and functions to QStringRef and QByteArrayThiago Macieira2014-08-084-0/+80
| | | | | | | | | These will be needed in some template code that is to come. Change-Id: I5b93f4320313f7b15a6404de2c98f85485735fda Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Windows/QGuiApplication::topLevelAt(): Skip mouse-transparent windows of ↵Friedemann Kleint2014-08-072-18/+42
| | | | | | | | | | | other processes. Search again when a non-Qt window with WS_EX_TRANSPARENT set is found. Task-number: QTBUG-40555 Change-Id: I3f53be626f52dc25429661ac8ea5e9f6bb163596 Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Micro-optimize qdoc codeparser.Jędrzej Nowacki2014-08-071-2/+2
| | | | | | | | There is no need to allocate new string while a simple reference is enough. Change-Id: I137b58fc180fe9a7bff9d0f9e546ca04aa9f4696 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Android: Say hello to gradle!BogDan Vatra2014-08-079-17/+79
| | | | | | | | | | | | | | | | | Add build.gradle script, move Android template files to another folder. These files are specific to every project, and they should be copied to then project android folder. Switching from Ant to Gradle brings lots of advantages: - it is way faster when rebuilding (25-50% faster than ant). - it enables first class Android Studio integration. - adding Android Extras libs (e.g. Google Play services, OBB, etc.) to your project is now painless. [ChangeLog][Android] Added Gradle support to build the APK. Change-Id: I9c8cb355118c9ac1997270c8b80916eca43fce4d Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Add missing #include <qdatastream.h> or <qiodevice.h>Thiago Macieira2014-08-079-0/+9
| | | | | | | Lots of code depended on an indirect includes from qstringlist.h. Change-Id: I33d0dce33d64302d6c0e49180cc1249b90ab27c5 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Avoid repaints and swapbuffers when the platform window is already goneLaszlo Agocs2014-08-071-1/+2
| | | | | | | | | | On Linux at least the qopenglwindow example sometimes shows "QOpenGLContext::swapBuffers() called with non-exposed window, behavior is undefined" when closing the window and exiting the application. This patch avoids this by not triggering repaints anymore when the platform window is destroyed. Change-Id: I54bd41e5c1471f7cdfec89f8ec3be48d1438be39 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Avoid crashing in QOpenGLWidget::metricsLaszlo Agocs2014-08-071-1/+2
| | | | | | | | | When creating child widgets in the derived class' constructor, the screen cannot be retrieved via window() since it still returns null. Handle this case properly. Change-Id: I65bf7f9c338ce8a3ddab8ad7886cfe2f1f253c82 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Do not use GLES3 functions in a GLES2 contextLaszlo Agocs2014-08-071-6/+8
| | | | | | | | | | Just like the recent fix for VAOs on iOS, where we might deploy a GLES3-enabled binary on a GLES2-only system, the same issue is potentially present for blitFramebuffer and renderbufferStorageMultisample. Handle this properly. Change-Id: I87268478f1de479dc2c106b46d6e9b84e866fcd5 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* winrt: Handle dispatcher thread changeAndrew Knight2014-08-071-18/+21
| | | | | | | | | | If the calling thread changes when processing events, the dispatcher will no longer have thread access and event processing will fail. This can e.g. prevent new threads from being created. To remedy this, the dispatcher object is re-fetched if the thread is changed. Change-Id: I519cff521f9b84211db3f28a7a28b532de44a6a4 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* winrt: Refactor backing storeAndrew Knight2014-08-074-326/+82
| | | | | | | | | | Thanks to new features in ANGLE, the backing store implementation complexity can be greatly reduced. By using ES3 framebuffer blit, no shader code is required, and the shader loading code and blit shader can be removed. Change-Id: Iab3d915e279ad6468a75ef6257794f12acd8cb65 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
* QFileDialog: implement getOpenFileUrl and friends for realDavid Faure2014-08-061-87/+81
| | | | | | | | | i.e. make them support remote URLs. To avoid code duplication, getOpenFileName/getSaveFileName/getExistingDirectory are now implemented in terms of getOpenFileUrl/getSaveFileUrl/getExistingDirectoryUrl. Change-Id: If409ac9ab72c2a65f04e2ef1dc28e7d47bbcd73c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Android: extract window style attributesJ-P Nurmi2014-08-061-0/+28
| | | | | | | Task-number: QTBUG-39215 Change-Id: I29120f5dcc97051705bc6ebacfa5843d8953810b Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Android: add support for Android.R.attr.state_acceleratedJ-P Nurmi2014-08-061-3/+3
| | | | | | | | | This lets the Qt Quick Controls Android Style choose the appropriate window background that is meant to be used with HW acceleration. Change-Id: I65d6f9319d77364637460e7c4ebb7ea3f4d53f12 Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com> Reviewed-by: BogDan Vatra <bogdan@kde.org>
* QCommandLineParser: support extremely concise option configuration in C++11Marc Mutz2014-08-066-2/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The goal of this commit to make the code in the test work: QCommandLineParser parser; parser.addOptions({ { "a", "The A option." }, { { "v", "verbose" }, "The verbose option." }, { { "i", "infile" }, "The input file.", "value" }, }); For this, QCommandLineParser needs a version of addOption that can take a list of options. That's what addOptions() is for. More importantly, the QCommandLineOption ctors mustn't be explicit. OTOH, any implicit conversion from QString or QStringList to QCommandLineOption is also undesirable. To solve this dilemma, add new QCommandLineOption ctors that just take one argument and are explicit, and make the existing ctors implicit. In order to avoid ambiguities, remove the default values of their resp. 2nd arguments. The new ctors are by intention not \since 5.4, as they are completely transparent to the user. Et voila, even better than getopt_long(3). [ChangeLog][QtCore][QCommandLineParser] Added addOptions() method. Change-Id: I5e779f3406cd0f6c8ec6ecbf6c8074af226de300 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Android: Fix debugging.BogDan Vatra2014-08-061-0/+7
| | | | | | | | | | When re-install a package without uninstalling it first, a few files are leftover from the previous installation which makes the debugging to fail. Change-Id: I603491668bcec2a6f8054951ea2dea806fcc4c88 Reviewed-by: hjk <hjk121@nokiamail.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
* Enable devicePixelRatio for non-Apple platformsPaul Olav Tvete2014-08-062-11/+0
| | | | | | | | | Remove #ifdef Q_OS_MAC around devicePixelRatio code. We are planning to make it available on other platforms. Task-number: QTBUG-38858 Change-Id: I25230cb53ea1291095335ef5883b15087e44f6b8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* QPlatformMenu: add overloaded function 'showPopup' that takes a target rectRichard Moe Gustavsen2014-08-061-1/+6
| | | | | | | | | | | | | | | When showing an edit menu on touch platforms, you need to specify a target rect for where to place the menu. The target rect is normally a rectangle that encompasses the whole text selection. Using this information the OS will place the menu so that is doesn't obscure the selection itself, or fall outside the screen (or overlaps e.g the keyboard). Since we don't know the size of the menu, or if the OS will end up placing the menu above or below the pos we give it, we need to do it the correct way and forward the whole target rect instead. Change-Id: I638586e9d0dd14c430a22c403c6dce099192a075 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Add debug operator for QTouchEvent::TouchPointShawn Rutledge2014-08-062-23/+33
| | | | | | | | | | dfde72e4361d82a782cb4da08ddcd0d8e8c40b07 added debug support for QWindowSystemInterface::TouchPoint, which is useful only near the QPA interface; but in qtdeclarative it's useful to be able to log individual touch points too. Change-Id: I237d354d7018e6326e586ae3355c8aa6f781eff8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Be consistent in GrayScale vs Grayscale namingAllan Sandfeld Jensen2014-08-062-8/+8
| | | | | | | | | The enum GrayScale was renamed Grayscale without similarly changing the helper class for the same enum. Change-Id: Ie1b34a68654f22a843ce4cfc2ddc1bf06af8dea1 Reviewed-by: Axel Rasmussen <axel.rasmussen1@gmail.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Remove specific maemo/meego codepathsAllan Sandfeld Jensen2014-08-0614-745/+16
| | | | | | | | | We no longer support the maemo/meego platform, so we can remove the specific code for that platform. Change-Id: Ia7f0730eba2d96794b97b7ca4753f63a2d7bc2a8 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Add the QTabBar::changeCurrentOnDrag property.Ivan Komissarov2014-08-066-1/+92
| | | | | | | | | | This property indicates that the current tab will change whilst dragging over the tabbar [ChangeLog][QtWidgets][QTabBar] Added changeCurrentOnDrag property. Change-Id: Ib7d5a7613c9cd8432b84c523f66c02cd6c3c3c81 Reviewed-by: David Faure <david.faure@kdab.com>
* Micro-optimize QProgressDialogPrivate::ensureSizeIsAtLeastSizeHint()Marc Mutz2014-08-061-3/+4
| | | | | | | | | | | | | | | | | | | | | QWidget::isVisible() is an inline call, but sizeHint() is a virtual function. Use QSize operations to call each one only once. Also reduces the number of q-> qualifications needed. It must be noted that this change is not entirely behavior-preserving: If sizeHint() returns a negative component, and the dialog is not visible, resize() will be called with that negative component now, instead of zero as was the case previously. I believe this is not a problem, because the way sizeHint() is currently implemented, the width cannot be less than 200 and for the height to be negative, the sum of label, bar and button size hint height would need to be negative, which is next to impossible. Change-Id: Ie8ba110e193532921eb4732a0393a377e38d7f7e Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* QProgressDialog: Extract Method ↵Marc Mutz2014-08-061-15/+15
| | | | | | | | | QProgressDialogPrivate::ensureSizeIsAtLeastSizeHint() The code was used in five different places, time to centralize. Change-Id: I32338bdae247169a180f59314c50a9b855cae5f0 Reviewed-by: David Faure <david.faure@kdab.com>
* QProgressDialog: Extract Method QProgressDialogPrivate::adoptChildWidget()Marc Mutz2014-08-061-31/+19
| | | | | | | The same code was used in three methods. Collect it in one place. Change-Id: I0e3bf14474590eb99e94d240aad8158fd8fbe033 Reviewed-by: David Faure <david.faure@kdab.com>
* QProgressDialog: fix setBar() not properly adopting the new QProgressBarMarc Mutz2014-08-061-0/+8
| | | | | | | | The "adoption" code is taken from setLabel(). Task-number: QTBUG-40503 Change-Id: Id512b28eb756b4a80e5701e599e2cbdf5346ff62 Reviewed-by: David Faure <david.faure@kdab.com>
* Document the destroy/create behavior of QOpenGLContext::create()Laszlo Agocs2014-08-061-0/+3
| | | | | | | | | This is not obvious since in some other classes with similar design subsequent create() calls are ignored. In some others it results in a warning. In case of QOpenGLContext it leads to recreating. Therefore it must be documented. Change-Id: I16efa73ebae15b3ffc26832d8d5cc2cd5d0ed469 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Add missing devicePixelRatio multiplication in QOpenGLWidget size checksLaszlo Agocs2014-08-061-1/+1
| | | | | Change-Id: I142cbe536f90eca242d08b34e5f9042076525c7b Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Implement QStringRef::splitJędrzej Nowacki2014-08-062-2/+38
| | | | | | | [ChangeLog][QtCore] Added the QStringRef::split() function Change-Id: I28709c9761785dea7be4e7d621ecf4e1ae007a72 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Restrict tooltips triggered by mouse move events to widget area.Friedemann Kleint2014-08-061-1/+2
| | | | | | | | Tooltips may occur outside the widget area when it has mouse grab. Task-number: QTBUG-40261 Change-Id: I68c1e28ad264fc5aaeb7d96273342f1d4bca8ce6 Reviewed-by: David Faure <david.faure@kdab.com>
* Windows: Refactor QWindowsDragCursorWindow().Friedemann Kleint2014-08-061-29/+13
| | | | | | | | | | | | QWindowsDragCursorWindow is a helper window used to display the drag cursor when doing DnD by touch, in which case Windows hides the mouse cursor. Base it on QRasterWindow and fix the size calculation for device pixel ratio scaling. Task-number: QTBUG-38858 Task-number: QTBUG-38993 Change-Id: I462ece3e5c8fe8be914e039ba391a28a77e0d771 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* QPalette: add move constructorMarc Mutz2014-08-062-2/+15
| | | | | | | | | | As with many other implicitly shared classes, efficient move semantics requires setting the d-pointer to nullptr, which then needs to be checked for in the dtor and the copy assignment operator. Change-Id: I654d181a1dfdd9a16e2f9fb96b57475cdd0b4561 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Make sure that QPixelFormat is constexprThiago Macieira2014-08-061-1/+1
| | | | | | | by declaring the array of formats constexpr too. Change-Id: I5c8e23ef9dc0fcac9c246f48dbee24c390d4583c Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* QHeaderView::restoreState(): Add sanity check.Friedemann Kleint2014-08-061-9/+26
| | | | | | | | Read data into local variables and apply only after a check. Task-number: QTBUG-40462 Change-Id: Id06060d0d5b0eafc2d303526a86d552ff5747a72 Reviewed-by: David Faure <david.faure@kdab.com>
* Remove the last remnants of iWMMXt in QtThiago Macieira2014-08-057-214/+7
| | | | | | | | This code hasn't been tested for at least 4 years. It's not maintained and probably doesn't work. Change-Id: I4b9a5179e34111b400914f91caa6b741b69771bb Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Doc: normalize the {to,from}WCharArray text about encodingsThiago Macieira2014-08-051-4/+4
| | | | | | | | | | Properly capitalize the names UTF-16 and UCS-4 and make sure we talk about UTF-16 and not UCS-2. UCS-2 is not the same and does not support surrogate pairs. Task-number: QTBUG-35287 Change-Id: If33270996bacc9ae5d04c87423fa1ee9ddaff230 Reviewed-by: Martin Smith <martin.smith@digia.com>
* Add a few missing Neon constructsThiago Macieira2014-08-052-7/+7
| | | | | | | | | | | The #undef in qcompilerdetection.h was missing. And apparently we can detect Neon since Windows Mobile 6 too. Change-Id: I38a5f71b2704a29a706183e39f43db3a78a729db Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* QFileDialog: turn workingDirectory into a QUrlDavid Faure2014-08-052-48/+68
| | | | | | | In order to make this work better with remote URLs. Change-Id: Ic440735142441150838b05e88940adcc12a90d09 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* QPixelFormat: have field 'unused' have the correct number of bitsMarc Mutz2014-08-051-1/+2
| | | | | | | 4+6*6+3*1+4+2+6+8 = 63, not 64, so make 'unused' have 9 bits width. Change-Id: I06e66074a09e93538fac01182c5a0d009d9b6583 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* QPixelFormat: make data fields private instead of protectedMarc Mutz2014-08-051-1/+1
| | | | | | | The convenience subclasses use the QPixelFormat ctor, not the data fields directly. Change-Id: I011299837cfb3b7006bc8425848989e5739b6082 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* QtConcurrent::run: allow to select the thread pool on which to run the taskMarc Mutz2014-08-054-3/+317
| | | | | | | | | | | | This is the second and last part of the forward-port of https://qt.gitorious.org/qt/qt/merge_requests/1281 [ChangeLog][QtConcurrent] run() now optionally takes as its first argument the QThreadPool to run the task on. Task-number: QTBUG-17220 Change-Id: I4b46eca6ef7de9cd34dac07e6d4b8ad830426b97 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QFutureInterface: allow to work with a QThreadPool != globalInstance()Marc Mutz2014-08-053-5/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Background: It is often necessary/advisable to schedule tasks on thread pools != globalInstance(). As Herb Sutter writes in http://www.drdobbs.com/parallel/use-thread-pools-correctly-keep-tasks-sh/216500409 and the Qt Training Material stresses, tasks you schedule on a (global) thread pool should be non-blocking, which currently rules out using any of the QtConcurrent functions for, say, file I/O. Nonetheless it's often convenient to have thread pools also for file I/O, as the thumbnail viewer exercise in the Qt Training Material shows. In this case, you'd use a dedicated thead pool, leaving the global thread pool for CPU-bound tasks. Yet, none of the QtConcurrent functions allow to pick the QThreadPool instance on which to schedule the work created with them. This patch prepares for them to do so. This is the first part of the forward-port of https://qt.gitorious.org/qt/qt/merge_requests/1281. Implement by using a new QThreadPool* member that defaults to nullptr, and adding setThreadPool to set this member, then using it in lieu of QThreadPool::globalInstance() everywhere. I chose to leave m_pool == nullptr to mean globalInstance() to avoid creating the global instance whenever a QFuture is created, even if the future represents the result of a calculation not run on the global thread pool. [ChangeLog][QtCore][QFuture] Can now be used with any QThreadPool, not just globalInstance(). Task-number: QTBUG-17220 Change-Id: I4e1dc18d55cf60141b2fa3d14e2d44a3e9e74858 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Android: Extract assets for 'listSeparatorTextViewStyle'Gabriel de Dietrich2014-08-051-0/+1
| | | | | | | | These are used in Qt Quick Control's TableViewStyle.headerDelegate. Change-Id: I2d87896b9987b86e30123b34872f9322d304a190 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: BogDan Vatra <bogdan@kde.org>
* Add SubType setters/getters and SupportedSubTypes option.Ivan Komissarov2014-08-057-1/+94
| | | | | | | | SubType can be used to determine an internal format of an image such as pixel format and/or compression algorithms. Change-Id: Icf296d54bb509e4e2bdb70544df678fc53f57c79 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* QPlatformMenu: add MenuType enumRichard Moe Gustavsen2014-08-051-0/+3
| | | | | | | | | | | | | On mobile platforms several different popup menu types exist. E.g on iOS, you have a special popup just for selecting text. This patch will add a new enum that lets UI controls select/hint which one to use for a particular QPlatformMenu. It's likely that the enum needs to be extended later (DropdownMenu, PopoverMenu etc), but being able to specify the edit menu at least will do for now. Change-Id: I2aefa5eedb9429921560ac2b778a88721f153459 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
* Improve qDebug output for QTabletEventShawn Rutledge2014-08-052-3/+27
| | | | | Change-Id: Ic2819eaa5ed0e3666062f00994b72dee0b2cba66 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* Logging: use the known function when the first frame of the backtrace is unknownOlivier Goffart2014-08-051-3/+7
| | | | | | Change-Id: Ia591805c82e7bf77dc7af04f1054c7daca58eb6a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Make it possible to capture GLXBufferSwapComplete eventsFredrik Höglund2014-08-052-2/+67
| | | | | | | | | | | DRI2 clients don't receive GLXBufferSwapComplete events on the wire. Instead the event is synthesized by the DRI2 WireToEvent handler, so for an application to be able to see it we have to convert the synthetic event to an xcb_glx_buffer_swap_complete_event_t and pass it to the native event filter. Change-Id: Ic466ff26487937b03f072a57e0ee4df335492a5f Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* Enhance QOpenGLWidget docs about resource managementLaszlo Agocs2014-08-052-3/+125
| | | | | Change-Id: Idd1181a34055237b13643dbc58e855db411d0a7c Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>