aboutsummaryrefslogtreecommitdiffstats
path: root/src/virtualkeyboard
Commit message (Collapse)AuthorAgeFilesLines
* Remove QtQuickCompiler workaroundsSamuli Piippo2018-02-053-16/+0
| | | | | | | | | QtQuickCompiler workarounds are no longer required with Qt 5.11 and need to be removed to fix build failure where private/qqmlmetatype_p.h was not found, since QT+=qml-private is no longer done by qtquickcompiler.prf. Change-Id: I48f640a5b7196b295de89589d14061011ed920fc Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Merge remote-tracking branch 'origin/5.10' into devLiang Qi2018-01-207-91/+4
|\ | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I84cccac7024c1c48b6419838bb424e45cb2557d4
| * Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2018-01-185-90/+0
| |\ | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I817d5980ab3132256894b04ddc8daf79d8fc0495
| | * Delete unnecessary .qrc filesAlexander Volkov2017-12-225-90/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | They are unused since 97d9648f5d950ea7d7b64f5c2db67359e8f47013. Change-Id: I1b041712080d27a99a29e51f6f154601d38e2bf4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * | Fix "Empty filename passed to function" warningMitch Curtis2018-01-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Check if the string is empty before calling QFile::exists(). Change-Id: Ib6640e05272ee67dad48bd6874a5064eda4ba3dc Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
| * | Merge 5.10 into 5.10.0Oswald Buddenhagen2017-11-201-1/+1
| |\ \ | | | | | | | | | | | | Change-Id: I4d0130911f5fbf897006aca74614a57d5dc0d967
| * | | Doc: Highlight the Qt Quick Virtual Keyboard exampleTopi Reinio2017-11-091-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-60664 Change-Id: If27459f44dbd4c4c7f5f6d0d8d8826f3c7f5a030 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io> Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
* | | | Show all language options for the language selection listJarkko Koivikko2018-01-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The language list filter mechanism 'customLayoutsOnly' was implemented for language toggle function and does not make sense when language is selected from a list. Change-Id: Ibe834c07a0a851a7beabf8cc40997ab6a22cc769 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | | Add support for external language switchJarkko Koivikko2018-01-194-4/+193
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added new signal InputPanel::externalLanguageSwitch and a property InputPanel::externalLanguageSwitchEnabled for enabling external language switch. If the externalLanguageSwitchEnabled is true, the signal is triggered instead of built-in language popup. The new language can be selected by setting the VirtualKeyboardSettings::locale property. [ChangeLog] Add option to use external language dialog instead of built-in language popup. Change-Id: I44f88e6b3e52db4cfbee02bd3b6d7f4be38a9521 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | | Merge remote-tracking branch 'origin/5.10' into devLiang Qi2017-11-207-11/+49
|\ \ \ \ | | |/ / | |/| | | | | | Change-Id: I5a7bd61e95ee062299b28e27aad22858d9b1d052
| * | | Merge remote-tracking branch 'origin/5.9' into 5.10Liang Qi2017-11-151-1/+1
| |\ \ \ | | |/ / | |/| / | | |/ Change-Id: Ibc2d7de394ba34863ba56a3b3eac05aab2921112
| | * Fix build of pinyin plugin on platforms without pthreadJake Petroules2017-11-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...such as VxWorks. Normally, the Qt dependency pulls in pthread, because the qt feature adds the thread feature (which in turn adds pthread and other necessary flags to the compiler and linker command lines), but in this case we don't have Qt so it must be manually added. Use the higher level abstraction instead of the direct -pthread flag, so that the compiler and linker flags used are taken from mkspecs. Task-number: QTBUG-63516 Change-Id: I88876810129078dfe4898314e45379ff87f95b80 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
| * | Merge remote-tracking branch 'origin/5.9' into 5.10v5.10.0-beta4Liang Qi2017-10-304-6/+6
| |\| | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: I471b847231e6c09a79d8f0b1695a15b4651839da
| | * Ensure that EnterKey.label is actually shownMitch Curtis2017-09-152-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The ternary expressions were the wrong way around. This patch also makes the disabled EnterKey text more visible, as it was very hard to see before. Change-Id: I73b61ac7076e4c132c78e2c40be294e45bef3cc9 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io> Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| | * SelectionListModel: Fix use after freeMitch Curtis2017-09-122-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calling InputEngine::setInputMethod(null) did not clear the pointer value stored in SelectionListModelPrivate. Also, in case the input method is destroyed without setting it null, prevent use of dangling pointer in selection list model by using QPointer. Task-number: QTBUG-61308 Change-Id: If340d99a63489c54414497c61cd482e06a21c5ee Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * | HandwritingGestureRecognizer: Fix clazy-strict-iteratorsv5.10.0-beta3Friedemann Kleint2017-10-191-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | In addition, fix repetetive invocation of end(). Change-Id: I69c659e566dab8957cae3f50ae3e2671d0cc1ba3 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * | Doc: Update documentation for the examplev5.10.0-beta2v5.10.0-beta1Venugopal Shivashankar2017-09-211-3/+40
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-60664 Change-Id: Ic3a55919c9f2fa2c07bc4cdc98dec3ed9aba72d0 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | Replace Q_DECL_OVERRIDE with overrideKevin Funk2017-09-221-2/+2
| | | | | | | | | | | | | | | Change-Id: I448f2cf49e3433af550d2f36f72b55e41cd67025 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | 3rdparty/t9write: Fix non-blocking recognitionJarkko Koivikko2017-09-084-144/+252
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the handwriting recognition with T9 Write was blocking at the beginning of new handwriting arc. This was due to the fact that while the recognition was done in background task, the arc addition was done in main thread, so we'd had to wait for the background recognition task to complete to avoid accessing the T9 Write session in parallel. This change moves the arc addition to background task, so the main thread does not have to block for the background tasks while the handwriting is ongoing. The rationale for this change is the new UCR input mode, which consumes a lot more CPU during recognition, and the UI will become non responding. [ChangeLog] Optimize UI performance by eliminating the need to wait for previous results to be completed during T9 Write handwriting. Change-Id: I8d0cecfa4599b63ccb21c1f6a691e5f21c93158c Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | 3rdparty/t9write: Add support for UCR modeJarkko Koivikko2017-09-081-19/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds support for UCR (Unconstrained Character Recognition) mode for the T9 Write input. It is enabled by default for English, French, Italian, German, Spanish and Arabic. [ChangeLog] Added support for the new UCR (Unconstrained Character Recognition) mode introduced in T9 Write v8.0.0 handwriting input. In the UCR mode it is possible to write the entire word with one stroke. The UCR mode is enabled by default in English, French, Italian, German, Spanish and Arabic languages. Change-Id: I22405e7bc052ea5b7590123ada8fb6654050eeca Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | 3rdparty/t9write: Don't discard pre-edit text on manual key inputJarkko Koivikko2017-09-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When entering a manual key (e.g. period) on T9 Write layout, the current pre-edit text was discarded. The correct operation is to commit the current pre-edit text. This was not noticed until now, since the punctuation works so well with T9 Write. [ChangeLog] Fixed an issue in the T9 Write input mode that caused the current word suggestion to be rejected when a character was entered through the keyboard. Change-Id: I1fb9e5207a47ef2f239e6a3ba9b2acfb269fa63b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | 3rdparty/t9write: Show gestures for secondary word candidatesJarkko Koivikko2017-09-081-15/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously the suggested gestures were only applied to primary candidate. In this case the primary candidate was committed and followed by the gesture. This change adds support for displaying and applying gesture for secondary candidate. It currently supports space and new line gestures. [ChangeLog] Added support for displaying gestures in word suggestions in T9 Write handwriting input mode. Change-Id: I644823fd0d25dc4b6f9f38e04c32262df948ad7f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | 3rdparty/t9write: Remove unused codeJarkko Koivikko2017-09-083-36/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t9writeworker.cpp contained old unused code for result processing. Remove it. The instant gesture detection is useless in worker thread, since it is meant to be used in main thread for a specific use case in SCR mode. We don't need it, so remove it. Finally, the abort functionality of the recognition call was tested by calling the recognize function with interrupt function. This will not work in v8.0.0 anymore, where the recognize function will return error for all subsequent calls, even by setting the interrupt function to NULL. Instead, we now use a proper compile-time functional check. Change-Id: Ic98fd3b45912f29a4c72e3650f98b7b520c4ade9 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | Cleanup: remove unneeded Q_UNUSED macro usagesPeter Varga2017-09-066-14/+2
|/ / | | | | | | | | Change-Id: Ie2301f7a7af8323090e2d71fa644e82898bee841 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | 3rdparty/t9write: Add support for multi-threadingv5.10.0-alpha1Jarkko Koivikko2017-08-301-0/+7
| | | | | | | | | | | | | | | | | | | | | | To reduce the recognition response time, the engine allows to use multi-threading. If the macro DECUMA_USE_MULTI_THREAD is defined in the OEM build configuration file, and nMaxThreads is set to be greater than 1, we will use a maximum of threads in recognition process. Change-Id: Ie285d5a8c64584e88f85723967fd42228d36208c Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | 3rdparty/t9write: Fix for T9 Write v8.0.0 API changesJarkko Koivikko2017-08-302-3/+16
| | | | | | | | | | | | | | | | The file name of the database binaries has changed and is now "hwrDB_le.bin" for T9 Write v8.0.0 and later. Change-Id: Iad964ae3298c1674cd36f72b00bcb95c6934b955 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | 3rdparty/t9write: unpack.py: Fix ordering of unpack rulesJarkko Koivikko2017-08-241-5/+21
| | | | | | | | | | | | | | | | Specific rules need to be executed in certain order. Wrap the UNPACK_RULES to a list, so the order of the rules can be specified. Change-Id: Ib160a814b49ed25fd0ed85337cfddf80afa0ccd7 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add Hebrew keyboard layoutJarkko Koivikko2017-08-2417-4/+916
| | | | | | | | | | | | | | [ChangeLog] Added Hebrew keyboard layout. Change-Id: I7779db4e5ac3c5a99937a0d7b7e572db65f0d811 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Clear toggle shift timer when appropriateJarkko Koivikko2017-08-243-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The timer in the ShiftHandler is used for detecting double click events for shift key. A double click event will trigger caps lock if the initial shift state is lower case. However, the implementation did not handle a case where the keyboard layout changes between the first and second press. This can be done with multitouch. The second problem was with the automatic test cases, where the test code toggles the shift to see if there is a secondary layout triggered by the shift key, e.g. in Arabic and Farsi. However, if the keyboard layout does not contain secondary layout, rapid shift state change will trigger caps lock instead. This issue was identified with certain test case for Hebrew layout. This change fixes the issue by clearing the shift toggle timer when the layout changes and in the automatic tests while checking for the secondary layout with the shift key. Also, update test code so that the shift press is simulated with mouse. This will ensure the key exists in the layout and that the key is enabled. Change-Id: I2a528f1b82c30e8b8d9746d380b32ee370b38004 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add Farsi handwritingJarkko Koivikko2017-08-216-4/+132
| | | | | | | | | | | | | | [ChangeLog] Added Farsi handwriting. Change-Id: I1bf25cbc7f36cf8ca3f0a44b7e217a55ed3aa13a Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add Arabic handwritingJarkko Koivikko2017-08-2114-3/+182
| | | | | | | | | | | | | | [ChangeLog] Added Arabic handwriting. Change-Id: Ica0601da2df262369159415d28fdb183e6f63736 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | 3rdparty/t9write: unpack.py: Fix Python 2/3 compatibilityJarkko Koivikko2017-08-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | The commit bc84550e3ad3dd0f032d435415804bf9765b2f0f added an option to unpack a directory. However, the feature was not compatible with python 3 due to incorrect chmod parameter. This change fixes the parameter so it works with python 2 and 3. Change-Id: Iaf74f2be660d6ee5de6cd58cc9c983707b2a9364 Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Fix QML warning propagated from BaseKey in a specific use caseJarkko Koivikko2017-08-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the Key.alternativeKeys are assigned like: Key { alternativeKeys: condition ? "abc" : "def" } it will cause the following QML warning from BaseKey: [...]/BaseKey.qml:82:32: Unable to assign [undefined] to QString It seems to be caused by the order in which the dependent properties effectiveAlternativeKeysHighlightIndex and effectiveAlternativeKeys are updated. This change fixes the issue by adding the effectiveAlternativeKeys as condition for the property assignment. Change-Id: I0225a95a60920201161c7d8c084667c57c1c29d4 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Merge "Merge remote-tracking branch 'origin/5.9' into dev" into refs/staging/devLiang Qi2017-08-168-18/+20
|\ \
| * | Merge remote-tracking branch 'origin/5.9' into devLiang Qi2017-08-158-18/+20
| |\| | | | | | | | | | | | | | | | | | | | | | Conflicts: src/virtualkeyboard/t9writeworker.cpp src/virtualkeyboard/t9writeworker.h Change-Id: I1fa1567e2739766c55c0e94b10706eecb8ba2ae1
| | * Compile fix for MSVC 2015 as it does not work with QAtomicInteger<bool>Andy Shaw2017-08-156-9/+9
| | | | | | | | | | | | | | | | | | | | | This fixes the original commit - 9db37be7210d4071c8b2c7bfa98d1822075ab452 Change-Id: I6679ce07a4890f7d8d332f0400a5bbd2cc6bb577 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| | * 3rdparty/openwnn: Fix crash related to entering a smileyJarkko Koivikko2017-08-021-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The crash occurs in Hiragana input mode only when pressing the space after entering a smiley. Fix it by handling the smiley as individual characters instead of text when submitting to OpenWNN engine. [ChangeLog][OpenWNN] Fixed crash when pressing the space after entering a smiley. Task-number: QTBUG-62143 Change-Id: Ic5f271bdfe05491ffd6147f1fc8eb9f54ef4e032 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| | * Doc: remove paragraph about needing to deploy the virtual keyboardMitch Curtis2017-07-271-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This has been handled automatically for a while now. We'll leave the section about the deployment location though, as that could be useful. Task-number: QTBUG-62099 Change-Id: Idc13302dbeb4ede632338747c492e5503ce2395c Reviewed-by: Kati Kankaanpaa <kati.kankaanpaa@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | 3rdparty/t9write: unpack.py: Allow duplicate file namesJarkko Koivikko2017-08-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change allows the rules with same input file name (but with different directory prefix) to co-exist. It works by removing the already matched input file from the "zip list". However, this only works if the rules are ordered correctly, i.e. the most exact ones being first in the list. Consider the following example: 'data/arabic': [ '*/Arabic/_databas_le.bin', ], 'data': [ '*/_databas_le.bin', ] Without this change the later rule will override the file entry already copied for 'data/arabic'. But with 'Arabic/_databas_le.bin' removed from the input list, it will not be matched. Change-Id: Ifd06125d1519c45dba077e50f69769fdb0070351 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | 3rdparty/t9write: Add input directory argumentJarkko Koivikko2017-08-161-0/+20
|/ / | | | | | | | | | | | | Accept directory as an input argument in addition to zip file. Change-Id: I2faf446f7636d190941fae0f76e569cb1e7c332e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Update label for Cyrillic input modeJarkko Koivikko2017-08-095-7/+7
| | | | | | | | | | Change-Id: I7a18614b4c9b44573490c3611bb0703ec60baa84 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Fix warning seen in layoutresources and layoutfilesystem testsJarkko Koivikko2017-08-091-2/+2
| | | | | | | | | | | | | | | | QWARN : tst_layoutresources::layouts() qrc:///QtQuick/VirtualKeyboard/content/components/SelectionControl.qml:80: TypeError: Cannot read property 'cursorRectIntersectsClipRect' of null QWARN : tst_layoutresources::layouts() qrc:///QtQuick/VirtualKeyboard/content/components/SelectionControl.qml:48: TypeError: Cannot read property 'anchorRectIntersectsClipRect' of null Change-Id: I8478487c51462a37d3fa5396eac5b6ab4bec3a17 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Change color of handwriting guide lines in retro styleJarkko Koivikko2017-08-071-2/+2
| | | | | | | | | | | | | | The guide lines were invisible due to incorrect color. Change-Id: Ifdaf4b96aa15279ac2d79a71bad21ed7a713a26b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Filter LipiInputMethod inputModes by input method hintsJarkko Koivikko2017-08-071-4/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since adding the new component InputModeKey in commit ea998f43d62ac12fd0f48a51683eb343ee1a52f1 certain tests (tst_plugin::test_hwrNumericInputSequence) started to fail. The reason for the failure is the LipiInputMethod which always returns all the supported input modes (Latin, Numeric and Digits) regardless of input method hints. This change modifies this behavior and limits the input modes to ones actually requested by input method hints. Change-Id: Iddc315a60541a879d2e655d0cbf4d65189026e8f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add Serbian keyboard layoutJarkko Koivikko2017-08-076-1/+850
| | | | | | | | | | | | | | [ChangeLog] Added Serbian keyboard layout. Change-Id: I7baa330791c62f7bbf4ff6a253ce1eea9f9c0e32 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add Hungarian keyboard layoutJarkko Koivikko2017-08-075-0/+682
| | | | | | | | | | | | | | [ChangeLog] Added Hungarian keyboard layout. Change-Id: Ie0491c625aa767c2e775f1961192f3e4fa0c652b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add Czech keyboard layoutJarkko Koivikko2017-08-075-0/+688
| | | | | | | | | | | | | | [ChangeLog] Added Czech keyboard layout. Change-Id: I12d989436e0299dc3dc1e993d756aba31a30a763 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add Croatian keyboard layoutJarkko Koivikko2017-08-075-0/+704
| | | | | | | | | | | | | | [ChangeLog] Added Croatian keyboard layout. Change-Id: I6e06b81439b046919561a5f7349d2603e53a7f55 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add Bulgarian keyboard layoutJarkko Koivikko2017-08-0713-0/+880
| | | | | | | | | | | | | | [ChangeLog] Added Bulgarian keyboard layout. Change-Id: I636ba97d3fe80c94f91b269426465023a433d7bf Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Add Greek keyboard layoutJarkko Koivikko2017-08-0714-50/+913
| | | | | | | | | | | | | | [ChangeLog] Added Greek keyboard layout. Change-Id: I56a15ebcf58c768d8f544654cb8a17a77c743e3f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>