aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix crash retrieving a PyObject type property via QVariant<PyObjectWrapper>Friedemann Kleint2025-05-195-25/+78
| | | | | | | | | | | | | | | | | | | | | The old code registered a Shiboken converter for PyObjectWrapper by pointer conversion. This resulted in the Python to C++ converter falling back to plain pointer passthrough since it only works for SbkObjects. The C++ to Python conversion worked by coincidence for either raw PyObject * pointers used in meta call handling or pointers obtained from calling QVariant<PyObjectWrapper>.data(), but without handling reference counts. To fix this, remove the Python to C++ conversion entirely and do this manually via QVariant. Change the C++ to Python to be by value and use PyObjectWrapper. Fixes: PYSIDE-2193 Pick-to: 6.9 Change-Id: I00898894651f220d7b8fe60608e93233ef3e6493 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* libpyside: Add a debug operator for PyObjectWrapperFriedemann Kleint2025-05-162-1/+26
| | | | | | | | | This useful for debugging QML issues. Task-number: PYSIDE-2193 Pick-to: 6.9 Change-Id: Iecbfb1d9508ac89c8b213a2f2ee8d4f7f1de4fc8 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* Fix some warnings in testsFriedemann Kleint2025-05-164-19/+20
| | | | | | | | | Fix exec_ and deprecated QMenu.addAction() overloads. Fix warnings about inactive QPainter in bug_919.py. Pick-to: 6.9 Change-Id: I483190480ca5b467bd070c3239f78166e6de3a51 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* type hints: Fix QInputDialog get methodsEce Cinucen2025-05-151-0/+5
| | | | | | | | | | | QInputDialog.get* methods should accept None as parent Fixes: PYSIDE-3078 Pick-to: 6.8 6.9 Change-Id: I5e6889800040a44649f99e1e7f95ab07e127c550 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* libpyside: Make PyObjectWrapper movableFriedemann Kleint2025-05-132-2/+14
| | | | | | | | | This is required by today's QVariant conversion code. Task-number: PYSIDE-2193 Pick-to: 6.9 Change-Id: I66efcfb797653fe1d617f1f0027fd60ec95e8a79 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* Fix pyside6-project relative paths handling and pyproject.toml migrationJaime Resano2025-05-094-4/+7
| | | | | | | | | | | | | | | | | | | | | This patch fixes two existing bugs in the pyside6-project tool: 1. Relative file paths outside the project folder in the .pyproject file e.g. files = ["../main.py"] are not handled correctly. A ValueError is raised due to the usage of Path.relative_to Fixed using a new function: robust_relative_to_posix() Updated the example_project test to contain this edge case (Suggestion: use this as a replacement for the rel_path() function located in tools/example_gallery/main.py) 2. The migration of a .pyproject to a pyproject.toml file with existing content is not done properly due to removing the tomlkit implementation. Fixed by appending the [tool.pyside6-project] section (and the [project] section too) at the end of the file (I don't know how the tests were passing before ??) Change-Id: Ie061c9fa172c429c8b45381bbec35ad30d01f4ee Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Fix crash retrieving a QGraphicsProxyObject from QVariantFriedemann Kleint2025-05-095-2/+62
| | | | | | | | | | | | | | | | | | Remove the default-superclass specification QGraphicsItem for QGraphicsObject since it causes the type discovery to directly cast from QGraphicsObject* to QGraphicsItem*. This crashes since QGraphicsObject inherits from QObject as first base class. The intention of the class attribute was to ensure that any QGraphicsObject class is stored as a QGraphicsItem. To preserve this, hardcode it in QVariant_resolveMetaType(). Pick-to: 6.9 Fixes: PYSIDE-3069 Task-number: PYSIDE-86 Task-number: PYSIDE-1887 Change-Id: I3704988f105b118b1e4ef8d078b68c01ba89386c Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Documentation: Recommend using a Dev Drive on WindowsFriedemann Kleint2025-05-091-2/+9
| | | | | | Pick-to: 6.9 6.8 Change-Id: I2004096735d0a5852eeca23176e25ffd30a6fe4c Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* libshiboken: Move override name calculation into basewrapperFriedemann Kleint2025-05-071-0/+1
| | | | | | Task-number: PYSIDE-2916 Change-Id: I4e4619b5144451512be3eadc6810df3f3f47ada0 Reviewed-by: Christian Tismer <tismer@stackless.com>
* libshiboken: Add utility class for stashing Python errorsFriedemann Kleint2025-05-077-40/+26
| | | | | | | | | It encapsulates fetching/restoring errors and uses the old or new exception API depending on version. Task-number: PYSIDE-3067 Change-Id: I6e39d92c7e79fed864b364a90c5bd5b474a41ed6 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Fix unused variable warning in QVariant conversionFriedemann Kleint2025-05-021-3/+1
| | | | | | | | Amends caa9d339c3ba96879ae5972b08787506ec36d92b. Task-number: PYSIDE-3084 Change-Id: I17c70441e050b713edca8f3f31ebc8c6bf251bba Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* PySide6/type system: Remove obsolete "since" attributesFriedemann Kleint2025-04-235-88/+88
| | | | | | Pick-to: 6.9 Change-Id: I184a939af6814a04f76f1047217bc9736143bd74 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Fix QMetaEnum conversions into QVariantRenato Araujo Oliveira Filho2025-04-238-19/+49
| | | | | | | | | Make sure to store QtEnums in QVariant when the enum has a metatype. Fixes: PYSIDE-3084 Change-Id: I94b89f89e6fb3c58560325f2a6843a5260d86557 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix crash when entering a Qt message handler with a Python error setFriedemann Kleint2025-04-231-0/+5
| | | | | | | | | | Stash and restore the Python errors in the message handler. Fixes: PYSIDE-3067 Pick-to: 6.9 6.8 6.5 Change-Id: If0d8ec08f939dae6c4d6bd33a0b15f9a21d740af Reviewed-by: Ece Cinucen <ece.cinucen@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Fix building of .pyi files for Windows debugFriedemann Kleint2025-04-171-4/+7
| | | | | | | | | | | | | | Port an incomprehensible list comprehension to pathlib and strip the "_d" debug prefix from the file name. Amends 3d9e42f33fad5b2eeee62d3eced1c69aa7f35fff. Fixes: PYSIDE-3061 Task-number: PYSIDE-1890 Task-number: PYSIDE-2895 Pick-to: 6.9 6.8 Change-Id: I2989ec411ae73790515ac282a2c3eccc7d222c97 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* PySide/Signal manager: Fix corruption when connecting to temporary objectFriedemann Kleint2025-04-171-0/+1
| | | | | | | | | | | | | Guard the deletion tracker listening on QObject::destroyed() using GIL. Amends 33bd61d13d8d9e3794b6049891be62f3351313d9. Fixes: PYSIDE-3072 Task-number: PYSIDE-2810 Task-number: PYSIDE-2221 Pick-to: 6.9 6.8 Change-Id: Ia085fa551903dd39c7a9624f6995d8720e9f7fb0 Reviewed-by: Ece Cinucen <ece.cinucen@qt.io> Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* Expose QPolygonF operator==, != inherited from QListRenato Araujo Oliveira Filho2025-04-162-0/+17
| | | | | | | | These operators were missing. Change based on QPolygon fix Change-Id: I8d0a4846f91aac1e2dfa1817ec6d15903519e819 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Replace Py_GetProgramFullPath by PySys_GetObjectCristián Maureira-Fredes2025-04-101-1/+1
| | | | | | | | | Py_GetProgramFullPath is deprecated from 3.13 and the recommendation is to use PySys_GetObject("executable") instead. Pick-to: 6.9 Change-Id: Ia0b0424d6fe593343272d862b05727579fad2a86 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* PySide6: Add class QMessageLoggerShyamnath Premnadh2025-04-106-0/+160
| | | | | | | | | | | | | | | - Also add documentation with a minimal example showing the use case of QMessageLogger in Python. [ChangeLog][PySide6] Added QMessageLogger class to handle debug, info, warning, critical, and fatal messages, including support for QLoggingCategory. Task-number: PYSIDE-3052 Pick-to: 6.9 6.8 Change-Id: Iaaf586288de4aaccf01d1e6547df9a2f478a7c8c Reviewed-by: Ece Cinucen <ece.cinucen@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Use QT_CONFIG when possibleCristián Maureira-Fredes2025-04-073-5/+5
| | | | | | | | | | A few places were still using the double negation on a couple of Qt configuration options. Pick-to: 6.9 Change-Id: Id182e7a3958af21368cb890e645dc4a2902f8260 Reviewed-by: Ece Cinucen <ece.cinucen@qt.io> Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* qtasyncio: fix f-string quotationCristián Maureira-Fredes2025-04-071-2/+2
| | | | | | | | | | | Considering we still support old Python versions, we cannot have the same quotation mark for f-string and for variables within the f-string. Fixes: PYSIDE-3068 Pick-to: 6.8 6.9 6.9.0 Change-Id: Ie9f1ed91f1a1965631bc71f35600780bb4f00603 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* type-hints: Correct QMessagebox annotationsEce Cinucen2025-04-041-10/+30
| | | | | | | | | parent parameter of about, aboutQt, critical, information, question, and warning changed to Optional[QWidget]. Fixes: PYSIDE-3021 Pick-to: 6.8 6.9 Change-Id: I31e556933f25f6c21e18debb274db6a13ffbe2ed Reviewed-by: Christian Tismer <tismer@stackless.com>
* doc: Fix unclosed command formattingJaime Resano2025-04-041-1/+1
| | | | | | | | | | | | | | Currently there is an unclosed backtick (`) which shows the following error while building the documentation: sources\pyside6\doc\building_from_source/macOS.rst:77: WARNING: Inline interpreted text or phrase reference start-string without end-string. This patch fixes the issue. Pick-to: 6.9 Change-Id: I37ae34ca12e249e219ae765f121ee2f1bb2d371c Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* type hints: Correct type signature for Property classEce Cinucen2025-04-031-4/+4
| | | | | | | | Task-number: PYSIDE-3012 Pick-to: 6.8 6.9 Change-Id: I720dd730f6dd28ae33a6019494b7b67b8f704a10 Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* type hints: Add optional to QTreeWidget.setItemWidgetEce Cinucen2025-03-271-1/+1
| | | | | | | | Fixes: PYSIDE-3057 Pick-to: 6.8 6.9 Change-Id: Iceced6c84fbfabfb484663a71ccdf13c2f69ab0a Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Desktop Deployment: Upgrade Nuitka to 2.6.8Shyamnath Premnadh2025-03-272-3/+3
| | | | | | | | | | - There were some updates with respect to PySide6 support - See changelog here: https://nuitka.net/changelog/Changelog.html#nuitka-release-2-6 Pick-to: 6.8 6.9 Task-number: PYSIDE-1612 Change-Id: If091184a2661f81d3d57342ba48edc35e748fc70 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* type hints: Add optional to QProgressDialog.setCancelButtonEce Cinucen2025-03-271-1/+1
| | | | | | | Fixes: PYSIDE-3050 Pick-to: 6.8 6.9 Change-Id: Ic200e75717518b2363e0aca6fe4cfc31e5fe6256 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* type hints: Add optional to QTabBar.setTabButtonEce Cinucen2025-03-271-0/+5
| | | | | | | | Fixes: PYSIDE-3055 Pick-to: 6.8 6.9 Change-Id: I5b3ee124b57643991afcb70cd9293f0cd30ff83d Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* PySide6: Port to Qt include styleFriedemann Kleint2025-03-2739-97/+96
| | | | | | | | | Replace the Qt forwarding headers by the .h files. This brings down the dependency list by approx 6%. Pick-to: 6.9 Change-Id: Iae7640ccbdf6a8be68137922d4191522d914d790 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Fix includes of libshibokenFriedemann Kleint2025-03-2621-38/+79
| | | | | | | | | Remove the global header <shiboken.h> in favor of the respective headers. Pick-to: 6.9 Change-Id: I08ee39fbd5abb15741fa5746bb82f9ddcd32ed7f Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* PySide6: Add support for std::chrono::secondsFriedemann Kleint2025-03-262-4/+17
| | | | | | | | | | | Introduced by qtnetworkauth/58c92af6e870fde2718a2aa9a6631a9c7ab40fad. Complements 2c3c5c0db5f1dbaafd23befc07633382b86e890d. Task-number: QTBUG-124332 Task-number: PYSIDE-2862 Pick-to: 6.9 Change-Id: I9857e2ee5cabde02469f8c3a32d8a12ba05971a3 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* type hints: Fix the type parameter in findChild and findChildrenChristian Tismer2025-03-261-3/+9
| | | | | | | | | | | | The PlaceholderType is needed to make the type parameter concrete. This led to further generalization of the supported constructs in the XML specs. Change-Id: Ic5ae4416a187f7f8527c86349f731e1b4e36b964 Fixes: PYSIDE-3045 Pick-to: 6.8 6.9 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Ece Cinucen <ece.cinucen@qt.io>
* Fix qlocale_test.py to pass after QLocale changeFriedemann Kleint2025-03-241-1/+1
| | | | | | | | | | | Floating point output now uses lower case after qtbase/05c8a48612be38a3c50bb5ed9daf1adfc221b9f2. Task-number: QTBUG-134785 Task-number: QTBUG-134768 Pick-to: 6.9 6.8 6.5 Change-Id: If6c6463b3828374a2399f6bd9d26cafebc6edaf1 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* Fix QtRemoteObjects tests to pass for non-unity buildsFriedemann Kleint2025-03-203-6/+7
| | | | | | | | | | | | | pysidedynamiccommon_p.h declared a static variable that is instantiated in each compilation unit in a non-unity build. Move it out of the header. Amends 19abd816e73bebdd489408d0a3b7676822bff39c. Pick-to: 6.9 Task-number: PYSIDE-862 Change-Id: I8f3ef392c50c8e2f443f1eb027bb7c54ee1c7975 Reviewed-by: Brett Stottlemyer <brett.stottlemyer@gmail.com>
* Move helper function isCompiledMethod() to libshibokenFriedemann Kleint2025-03-205-7/+11
| | | | | | | Pick-to: 6.9 Task-number: PYSIDE-2916 Change-Id: I6e72977bfcf95c3c28cc160e07febb84220fa505 Reviewed-by: Shyamnath Premnadh <Shyamnath.Premnadh@qt.io>
* type hints: Fix an old typo in typesystem_core_common.xmlChristian Tismer2025-03-191-3/+3
| | | | | | | | | | | | | | | | | | | Instead of typing.Iterable, typing.List must be used in the return type of QtCore.findchildren. As a drive-by, the name "PlaceholderType" was corrected because "placeholder" is only one word. The new calculation of Optional replacement was also fixed to handle return types. Note: The Optional[PlaholderType] is special, and typing refuses to use "|" here. Change-Id: I9f7d89027496f3cae58710595d7bcaafb0e51915 Fixes: PYSIDE-3045 Pick-to: 6.8 6.9 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Type system: Add missing "const" to some signaturesFriedemann Kleint2025-03-191-7/+7
| | | | | | | | This is matched by a fallback mechanism at the moment. Pick-to: 6.9 6.8 Change-Id: I9247fc512eb26007a88172d9c2a66b10e916d423 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* libpysideremoteobjects: Fix build with 6.10Friedemann Kleint2025-03-191-1/+1
| | | | | | | | | | | Amends 19abd816e73bebdd489408d0a3b7676822bff39c. Task-number: PYSIDE-862 Task-number: PYSIDE-3011 Task-number: QTBUG-87776 Pick-to: 6.9 Change-Id: Iba8afb9f963c34ef5bdfef4168cabcb82bf9dd3b Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* type hints: Make str Optional in QLineEdit.setTextCristián Maureira-Fredes2025-03-191-0/+3
| | | | | | | Change-Id: I0565751f0189fea3e59cea7aa953d205527dd8b2 Pick-to: 6.8 Fixes: PYSIDE-3041 Reviewed-by: Christian Tismer <tismer@stackless.com>
* MetaObjectBuilder: Export the class symbolShyamnath Premnadh2025-03-191-2/+2
| | | | | | | | | - This enables the class to be used in libpysideqml to support the `AutoQmlBridge` function. Task-number: QTBUG-134668 Change-Id: I9c639c76ce23117dc259a811a7c4257fc79179a7 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Deployment Test: Remove modules for windows win_arm64Shyamnath Premnadh2025-03-151-0/+14
| | | | | | | Pick-to: 6.8 Task-number: PYSIDE-1612 Change-Id: Iac8406d6e49c83c8f5aa1be757cf4c7fbfcf01bc Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* type hints: add explicit optional to setItemWidgetCristián Maureira-Fredes2025-03-141-1/+1
| | | | | | | | Change-Id: I9d14b23d9fe2e084ffdacd66560c84c8c0d54764 Fixes: PYSIDE-3042 Pick-to: 6.8 Reviewed-by: Ece Cinucen <ece.cinucen@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* type hints: remove QModelIndex.constInternalPointerCristián Maureira-Fredes2025-03-141-0/+2
| | | | | | | Change-Id: I204fe9a3716de359a5d75629c6757d2045e78f43 Fixes: PYSIDE-3036 Pick-to: 6.8 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* tests: Fix warning about QBackingStore::flush() being called without handleFriedemann Kleint2025-03-142-13/+21
| | | | | | | | | | | Call qApp->quit() delayed from the paint event. This fixes crashes on macOS and warnings: QBackingStore::flush() called for QWidgetWindow(0x600003a22460, name="MyWidgetClassWindow") which does not have a handle. Pick-to: 6.8 Change-Id: I2e5d8aa1cfc36c4c247f681b4219f52c1a618737 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* Make Remote Objects usable beyond ModelsBrett Stottlemyer2025-03-1331-5/+3337
| | | | | | | | | | | | While present, the Qt Remote Objects bindings to Python have not been very useful. The only usable components were those based on QAbstractItemModel, due to the lack of a way to interpret .rep files from Python. This addresses that limitation. Fixes: PYSIDE-862 Change-Id: Ice57c0c64f11c3c7e74d50ce3c48617bd9b422a3 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Brett Stottlemyer <brett.stottlemyer@gmail.com>
* pyproject.toml: 4. Update pyside6-project documentationJaime Resano2025-03-123-26/+115
| | | | | | | | | | This patch modifies the existing pyside6-project documentation to include the new pyproject.toml file format. The .pyproject file format is announced as deprecated. Task-number: PYSIDE-2714 Change-Id: I1efd715babd3f288532b2bbc9d36897fcfc2e2a2 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* pyproject.toml: 3. Add pyside6-project tests for pyproject.toml changesJaime Resano2025-03-1226-56/+525
| | | | | | | | | | | | This patch adds tests for the pyside6-project CLI tool to validate the pyproject.toml changes. The tests ensure that the existing behavior is preserved and that the new features work as expected. Task-number: PYSIDE-2714 Change-Id: I096188c1d6d931a3970787f2906b83d2a987f4ed Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
* pyproject.toml: 2. Add pyproject.toml support for pyside6 toolsJaime Resano2025-03-121-3/+3
| | | | | | | | | | | | | | | | | This patch adds support for pyproject.toml files to the pyside6-project tool. A new command argument is added to migrate a .pyproject JSON file to the new pyproject.toml file: `pyside6-project migrate-pyproject` The new features are tested and it is guaranteed that the current behavior is preserved. A new flag is added to the project creation operations, "--legacy-pyproject", in order to generate a .pyproject file instead of a pyproject.toml file. Note that the tomlkit library is added to the requirements.txt file. https://github.com/python-poetry/tomlkit Task-number: PYSIDE-2714 Change-Id: If33956dea73b79df0a52d4dcda3934c85e57182d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Docs: Fix the finance manager tutorial part 3Shyamnath Premnadh2025-03-121-5/+5
| | | | | | | | | | | - A description was wrong along with the emphasized code. This is now fixed. Pick-to: 6.8 Task-number: PYSIDE-2850 Change-Id: I44f2b4c9a89496a96c974e78611b30f4dcec6cf6 Reviewed-by: Ece Cinucen <ece.cinucen@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
* Documentation: Use flat documentation mode for Qt3DAnimationFriedemann Kleint2025-03-121-1/+1
| | | | | | | | | | All classes are in a namespace Qt3DAnimation, which produces an overly long page. Fixes an oversight in a8b0954cae4b4322ee8a206875f942977174b826. Pick-to: 6.8 Change-Id: I61b7d703f260ac9cbe09170a32580ef5ba635720 Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Ece Cinucen <ece.cinucen@qt.io>