aboutsummaryrefslogtreecommitdiffstats
path: root/src/qtprojectlib
Commit message (Collapse)AuthorAgeFilesLines
* Clean up solution and namespacesMiguel Costa2020-11-2760-18125/+0
| | | | | | | | | | * Renamed QtProjectLib to QtVSTools.Core * Cleaned-up/renamed solution folders * Moved qmakefilereader, qrceditor, vsqml to Tools solution folders Task-number: QTVSADDINBUG-735 Change-Id: I246a7f555a1171c5ab00f6d8efc0ff01228ea693 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Update dependency referencesMiguel Costa2020-11-173-0/+30
| | | | | | Task-number: QTVSADDINBUG-735 Change-Id: If638eea93a186cf95410f57c92e375b3e39cafbd Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Rework text template processingMiguel Costa2020-11-171-0/+1
| | | | | | | | | | | Modified text template code to allow integration with build targets (i.e. process text templates during build) and also allow processing from outside of the VS IDE (i.e. if building the VS Tools solution from the command line). Task-number: QTVSADDINBUG-735 Change-Id: I115575cfba7bf3899e6d01a256b640631402c4dc Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Show qmake messages in output windowMiguel Costa2020-10-193-26/+47
| | | | | | | | | | Will now print on the output window error and information messages related to the execution of qmake. Previously, in some circumstances, messages were not shown and qmake would fail silently in case of error. Task-number: QTVSADDINBUG-825 Change-Id: I8b779463f495285583cdf43d070b17bec20ecaa8 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Optimize calls to qmakeMiguel Costa2020-10-193-21/+12
| | | | | | | | | When retrieving information about a Qt version, will now only call qmake once to obtain all persistent properties. Previously, qmake was called three times to obtain different properties individually. Change-Id: Iee8da03eb7e86174cba74a25e3d60371f6fd650e Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Improve error checking in Qt version registrationMiguel Costa2020-10-141-9/+16
| | | | | | | | | | Introduces additional error checking / reporting to the registration of Qt versions. Specifically, error conditions associated to Windows registry operations are now logged more explicitly. A user alert message is now also shown when the version registration fails. Change-Id: Ib1d0180ac1126e4060406e5d0449ea16d9504463 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix QML debug not working in cross-platform projectMiguel Costa2020-09-031-1/+2
| | | | | | | | Fixed a problem that prevented starting a QML debug session if a non-Windows configuration was present. Change-Id: Iebc49c3a32509c2ccd99fe7a826427f782c30df4 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Register Linux-based Qt installationsMiguel Costa2020-07-242-7/+26
| | | | | | | | | | | | | | | | Using the Qt Options dialog to register a Qt installation located in a Linux build host is now possible. The registered version can then be selected in the project creation wizards or in the Qt build settings property page. When registering a Linux-based Qt installation, the access mode -- SSH or WSL -- must be specified, as well as the path to the installation directory. Optionally, the path to the C++ compiler can also be specified (default is g++). Task-number: QTVSADDINBUG-739 Change-Id: Ib610ddd8d8be135201ea1b13cf59943c2567d62a Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Enable cross-compilation of new Qt projectsMiguel Costa2020-07-241-0/+13
| | | | | | | | | | When creating new Qt projects, it will now be possible to select Linux as the platform toolset. This will enable cross-compilation of the new project. Task-number: QTVSADDINBUG-739 Change-Id: I4ea7820e470cede1995f083e068ca4d20c9024ca Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix .cpp files with Q_OBJECT macro not handled correctlyMiguel Costa2020-06-171-0/+6
| | | | | | | | | | | | When adding a .cpp file containing the Q_OBJECT macro, the default value of "Dynamic C++ Source" in the moc property page is kept unchanged as "output". This causes the .cpp file to be incorrectly excluded from the build, and is inconsistent with the behavior when importing qmake projects. Task-number: QTVSADDINBUG-792 Change-Id: I42a8dd27ca7e73f8c568e7fa4c4b1d7bc6b452d3 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix OBJECTS_DIR ignored when importing .proMiguel Costa2020-06-111-9/+0
| | | | | | | | | | Fixed a problem where OBJECTS_DIR, mapped to $(IntDir) by qmake, would then be overwritten with default value "$(Platform)\$(Configuration)\" when importing a .pro file into VS. Task-number: QTVSADDINBUG-785 Change-Id: I10958984906bb88ae360ea671e7e5e9aadfc57ba Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix ignoring VC property changes (project format v3.3)Miguel Costa2020-06-112-29/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | This change introduces project format version 3.3, which fixes issues related to modified values of VC properties (e.g. $(IntDir)) being ignored when evaluating Qt build settings. MSBuild evaluates properties by order of definition; dependencies are resolved by using the latest evaluation of referred properties. As such, any subsequent changes to the value of dependencies will not be reflected in previously evaluated properties. Redefinitions of VC properties are stored in uncategorized property groups (i.e. <PropertyGroup> elements without a Label attrib) inside the MSBuild project file; if no available group is found, Visual Studio will create a new one. The incorrect evaluation of Qt properties happens when new property groups are created after the definition of Qt properties, such that the evaluation of Qt properties will be using outdated values of VC properties. Project format version 3.3 addresses this issue by adding property groups for VC property storage in a correct location, with respect to Qt build settings definitions. Task-number: QTVSADDINBUG-787 Change-Id: I6012c65d0bfdad25c15bbd14695493c349ae1cb4 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix lupdate/lrelease settings ignoredMiguel Costa2020-05-291-0/+36
| | | | | | | | | Fixed an issue where the lupdate and lrelease options in the Qt Settings property page were not taken into consideration. Task-number: QTVSADDINBUG-749 Change-Id: Idcf6ed62b6d29bb0d7c1128e572bcab45d95bb65 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Use relative paths in args to qmakeMiguel Costa2020-05-261-3/+23
| | | | | | | | | | When calling qmake, the input and output paths are now given as relative to the working directory. This allows calling qmake with a current path containing non-ASCII characters. Task-number: QTVSADDINBUG-781 Change-Id: I9ed05867fa7a5ac8d644433e061266bc367ee201 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Remove warning about conflicting MSBuild versionsMiguel Costa2020-05-261-1/+0
| | | | | | | | | | | The version of the MSBuild assemblies used by the Qt VS Tools is now explicitly given. This will avoid warnings about assembly resolution conflicts between the MSBuild assemblies inside of the .NET Framework and the ones that ship with Visual Studio (the latter is the one now explicitly selected). Change-Id: I3a03a57bd9efd9e3731d76731c03707a9994b04f Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix compiler warning about unused QtVersion classMiguel Costa2020-05-141-6/+0
| | | | | | Change-Id: I82219dfca287736a682cf6957d2dddb0841c5d05 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add support for C# 7.0 in VS2015Miguel Costa2020-05-071-0/+1
| | | | | | | | | When building the extension in Visual Studio 2015, the C# compiler will now accept C# 7.0 code. The vstools project uses some features of this version of the language (e.g. type testing with pattern matching). Change-Id: I51df81773f6b25144ed3a462117453eeebf523b4 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix .pro import not replacing QTDIRMiguel Costa2020-05-072-15/+41
| | | | | | | | | Fixed a bug where the .pro import would not replace paths to the Qt installation with $(QTDIR) if no Qt tools were invoked. Task-number: QTVSADDINBUG-771 Change-Id: Icf86d4412a851ae06d2843cfcd16ac0ff4bb2cdc Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix unregistered Qt versions not working in new-project wizardMiguel Costa2020-04-302-0/+2
| | | | | | | | | | Fixed a problem where selecting an ad-hoc installation of Qt in the new-project wizard would not work, showing a null-ref error. This prevented the use of customized installations of Qt, such as vcpkg. Task-number: QTVSADDINBUG-545 Change-Id: Id6066ccca02cb2ea88c0524bc941335733b0ab80 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Get path to qmake.conf using qmake propertiesMiguel Costa2020-04-301-6/+14
| | | | | | | | | | The path to the qmake.conf in a Qt installation will now be calculated using only the information obtained from qmake properties. Previously, this calculation assumed a path relative to QTDIR, which might not be correct in case of a customized installation (e.g. vcpkg). Change-Id: I37212a8d412fb42ba6ecfb8b97a5277dbfc92dc1 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Query all qmake properties in the QMakeQuery classMiguel Costa2020-04-301-3/+68
| | | | | | | | | The QMakeQuery class can now be used to query all properties in a single run of qmake. Previously, properties would be queried individually in separate calls to qmake. Change-Id: Ic4c7584ebcf1e873b3f754202962c69d15145d62 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Refactor/rewrite QMake classMiguel Costa2020-04-215-242/+178
| | | | | | | | | | | | | | The QMake class, which encapsulates the logic of executing qmake when needed (e.g. for generating VS projects or querying qmake properties), has been refactored/rewritten. The goal of this change was to have more readable and extensible code, and also to remove the use of concurrent threads to handle data from the stdout and stderr streams of the qmake process. This multi-threaded approach resulted in qmake error messages being shown out-of-sync with the rest of the process output. Task-number: QTVSADDINBUG-648 Change-Id: I29fa0cdb9d140c365ba07852cfa285762d35c0ec Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add base class for new-project wizardsMiguel Costa2020-03-311-0/+2
| | | | | | | | | | | | | | Added a new class that contains features common to all new-project templates. Specific wizards will inherit from this class, instead of directly implementing the IWizard interface. Most of the MSBuild XML generation, which is common to all types of project, will now be located in this base class, and can then be customized as needed in overrides of the specific wizard classes. Task-number: QTVSADDINBUG-589 Task-number: QTVSADDINBUG-737 Change-Id: Ib98d02d7358b589f9174aa74e02c9fdd0dcee668 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Get VC build settings from qmakeMiguel Costa2020-03-314-3/+94
| | | | | | | | | When querying qmake for information on a Qt build, generate a dummy .vcxproj to retrieve VC build settings required for project template expansion (e.g. WindowsTargetPlatformVersion, PlatformToolset, etc.) Change-Id: Iaf7eb5bea4622486fd91dc7fa5d0c6d181438aa7 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add inner exception to QtVSException constructorMiguel Costa2020-03-311-0/+5
| | | | | | | | | | Added a constructor overload to the QtVSException to allow passing an underlying "inner" exception to the base Exception constructor. This is useful e.g. in case of re-throwing with a different type, to keep track of the original exception. Change-Id: I757d2f9fa074975961f5311fdca75726ecaf82cf Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Get list of converted enum valuesMiguel Costa2020-03-311-0/+9
| | | | | | | | | | | | Added to EnumExt a helper function that returns a list of all values of an enum, with each value converted (using Cast<T>()) to a given type. Example: EnumExt.GetValues<string>(typeof(ProjectTargets)) Change-Id: I51a7ad1b4ddb7837892ca9c87470e5d15c80ee35 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add support for cast of enum valuesMiguel Costa2020-03-182-0/+178
| | | | | | | | | | | | | | | | | | | | | | | | | | Enums in C# allow a compiler-verified way of maintaining lists of possible values. Conversion of enums to other types is limited to the underlying integer value of each enum value, and to the string representation of the enum value name. For an alternative, customizable conversion (e.g. to a string representation other than the value name), it is possible to associate an attribute to an enum value, containing the corresponding target type value/instance: enum Foobar { Foo, [EnumExt.String("Bahr")] Bar } Converting an enum value will output the value in the associated attribute, or a default conversion, if an attribute is not present. Foobar.Foo.Cast<string>() --> "Foo" Foobar.Bar.Cast<string>() --> "Bahr" This extended enum conversion feature is used in upcoming patches. Change-Id: Ifdd63c8bbb55f812772fdcbe146b7b01b16c57cc Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Enable lazy init of Qt version informationMiguel Costa2020-03-102-18/+44
| | | | | | | | | | | | | | | | | Information on registered Qt versions is loaded by means of querying data from qmake. To avoid an inefficient initialization, the Qt version information is loaded lazily, on an as-needed basis. This was already implemented, by means of a cache in the QtVersionManager. However, it had no effect, given that, at startup, the information of all Qt versions is checked for validity, thereby greedily loading all version infos. This is now fixed in the current patch: (1) when checking the validity of Qt versions, only the presence of qmake.exe is actually verified; (2) when selecting the latest version (as a default version, if none is provided), will use the version information in qconfig.pri, instead of querying qmake. Change-Id: Ie270816250e775f7bdeb7cad9a290f07409fbc03 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Clean up .pro importMiguel Costa2020-03-091-9/+5
| | | | | | | | When importing a .pro file, ensure unused include/lib path entries are discarded. Change-Id: Ibae8a502bdadedf5f311c79b3be4507faa3c8275 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add private module refs in .pro importMiguel Costa2020-03-091-0/+24
| | | | | | | | | | | When importing qmake projects, if a *-private module name is specified, this will now be reflected in the value of the "Qt Modules" property of the resulting MSVC project. Previously, private module refs were ignored when importing .pro files; only the "public" modules were considered. Task-number: QTVSADDINBUG-704 Change-Id: I5a859c02852c18baa67344fdbc390089371f25e4 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Avoid replacing file name parts in .pro importMiguel Costa2020-03-091-3/+13
| | | | | | | | | | | | | In the import procedure of qmake projects, when transforming custom build command lines to use VS macros instead of fixed values, ensure that parts of filenames are not replaced with $(Configuration) or any other macro. This is achieved by transforming file name references (e.g. ui_foo.h --> ui_%(Filename).h ) before replacing configuration and platform names. Task-number: QTVSADDINBUG-732 Change-Id: Ic6a56cae8d240b58bfc45da7de7b3479631249a9 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Generate random GUID for new Qt projectsMiguel Costa2019-12-191-0/+5
| | | | | | | | | Will now set a randomly generated GUID when creating Qt projects. Previsouly, this was hard-coded. Task-number: QTVSADDINBUG-560 Change-Id: Ifd8cb50433702fbe9d7ae7a0a68d5e0922fa0845 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix setting project keywork during conversionMiguel Costa2019-12-191-1/+5
| | | | | | | | | | | | Fixed a problem where the wrong project keyword tag was overwritten with the Qt VS project format version, when more than one keyword tag was present in the original project. Depending on the order of the tags, the resulting project would contain two keyword tags with different project format versions. Task-number: QTVSADDINBUG-702 Change-Id: I343e85a17b9f14971ca414fc57542243021549e2 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix conversion error with empty linker dependenciesMiguel Costa2019-12-191-0/+1
| | | | | | | | | | Fixed an error that would cause project conversion / format update to fail when the linker dependencies property (<AdditionalDependencies>) was in the project file but had an empty value (i.e. whitespace). Task-number: QTVSADDINBUG-702 Change-Id: I9f5e381caf3f7b4a8e43252bde466795ef7c26a9 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix incompatibilities with property sheetsMiguel Costa2019-12-193-5/+58
| | | | | | | | | | | | Updated the format of Qt projects to better match the requirements for Visual Studio C++ projects (*) that enable integrating with the IDE, in particular, that allow external property sheets to be referenced. (*) https://docs.microsoft.com/en-us/cpp/build/reference/vcxproj-file-structure#per-configuration-propertygroup-elements Task-number: QTVSADDINBUG-685 Change-Id: I6ef0ef9d4fb25709217aecdda25c18f134567c12 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix problems with outer/inner buildMiguel Costa2019-12-191-1/+1
| | | | | | | | | | | | | | | To include Qt properties, extracted from qmake, into a VS/MSBuild project requires that MSBuild be invoked recursively, after the Qt properties file has been generated. This change fixes some inconsistencies between the "outer" build (i.e. the initial call to MSBuild, corresponding to the original build request), and the "inner" build (i.e. the recursive call to MSBuild, after the Qt properties file is generated), as well as build requests related to the update of IntelliSense information (syntax highlighting, code completion, etc.) Task-number: QTVSADDINBUG-708 Change-Id: If5d1fcd4ab2ffd996b1817cc3953cefeba3bfe4a Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Use lib paths from Qt build configurationMiguel Costa2019-11-061-0/+6
| | | | | | | | | | The "Additional Library Directories" linker property will now default to the LIBPATH information generated by qmake. Also, the 'lib' directory in the Qt installation will no longer be set by default. This path is now read from qmake and should not be hard-coded. Change-Id: I21d49b96dcd7374f5d5df60d8476918d41c2b761 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix import of .pro file with spaces in lib pathsMiguel Costa2019-11-061-3/+3
| | | | | | Task-number: QTVSADDINBUG-674 Change-Id: Id85815ebbf16471a7e1ce8328278d1b8f505a31e Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Fix error when importing .pro with static libMiguel Costa2019-10-282-104/+72
| | | | | | | | | | | | When converting projects to the latest V3 format, will now detect the usage of Qt modules by the presence of link library references and QT_<module>_LIB macro definitions. Previously, only the presence of the release link libraries were considered, leading to problems if these were not referenced (i.e. in the case of a static lib project). Task-number: QTVSADDINBUG-681 Change-Id: I0dfd2bc27056af340ce0cf306f31ce9849e442b4 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix build errors with imported .pro fileMiguel Costa2019-10-251-2/+21
| | | | | | | | | | As of 2.4, uic would generate errors when invoked from a project imported from a .pro file, if the uic output directory was the current (i.e. project) directory. Task-number: QTVSADDINBUG-686 Change-Id: Icc30b9f56e189188ef5f128d5d25f7aa7e06e1d2 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix error when importing .pro file with Qt 5.12 or greaterMiguel Costa2019-10-252-2/+14
| | | | | | | Task-number: QTVSADDINBUG-674 Task-number: QTVSADDINBUG-686 Change-Id: I68c52dd7b77c6c256bcb61f23dbf31eb4a65cb77 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix Intellisense shortcomingsMiguel Costa2019-10-145-0/+79
| | | | | | | | | | Design-time build, used by Intellisense, will now include missing information about output paths of Qt tools. Also, the refresh of Intellisense is now triggered more aggressively. Task-number: QTVSADDINBUG-673 Change-Id: I98c5602ae28e0c336e7e0b9a32051519730e6358 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix Qt tools output path mangled by conversion to V3Miguel Costa2019-10-101-1/+20
| | | | | | | | | | When converting projects to the V3 format, will now correctly preserve the path to the output of Qt tools. Previously, this path was overwritten with the default setting for new projects. Task-number: QTVSADDINBUG-665 Change-Id: I4584ac1e9ec95219c770efb5aa7e52a9b424a765 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add sanity-check to project format conversionMiguel Costa2019-10-101-15/+19
| | | | | | | | | | | When converting to the latest version of the Qt VS Tools project format, some additional checks will now be carried out, namely if a filters file is present and if ItemDefinitionGroup are properly formatted. Task-number: QTVSADDINBUG-663 Change-Id: I1017959e7ede486b2697253b179e9f99107fd028 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add default Qt settingsMiguel Costa2019-09-301-0/+7
| | | | | | | | | | | Added an import of .props file with default values of Qt settings. Visual Studio requires this to be defined in the project file ahead of the property group definition in order to show the default values in the property page. Task-number: QTVSADDINBUG-545 Change-Id: I4f061dd113fe304829d7ac2504216d5269fbabc5 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Allow configuring Qt pathsMiguel Costa2019-09-301-1/+12
| | | | | | | | | | | The Qt settings property page now includes fields to specify the path to binary files of Qt modules and tools, as well as to provide additional paths to search for module libs. The paths provided can be either absolute or relative to the Qt installation. Task-number: QTVSADDINBUG-545 Change-Id: I0bbed066dfe067e4200299f841ba53243c7b063b Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix crash of VS when no Qt version is presentMiguel Costa2019-09-301-2/+2
| | | | | | Task-number: QTVSADDINBUG-496 Change-Id: I4027ab3bdb3368ed31f8e71527b6c583155e442d Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Add conversion to project format v3.1Miguel Costa2019-09-301-4/+152
| | | | | | | | Project format conversion to version 3.1 from versions 2.0 and 3.0. Task-number: QTVSADDINBUG-651 Change-Id: Ia4b9acc1f422a0c90f3f835aefa9c8a1d2ffc19e Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Implement project format v3.1Miguel Costa2019-09-303-4/+3
| | | | | | | | | | | | | | | | This change introduces a revision of the v3 project format, which will now allow Qt settings to reference user macros defined in imported property sheets. This includes the following changes to the order of property evaluation: - "QtSettings" property group moved to after the import of user property sheets; - QtInstall property moved from the "Configuration" property group to the "QtSettings" property group; - Import of qt.props moved to after the "QtSettings" property group. Task-number: QTVSADDINBUG-651 Change-Id: I55a022647327c89157175e1b25e55cf680a65924 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
* Fix excluded-from-build removed by conversionMiguel Costa2019-09-181-2/+10
| | | | | | | | | | Fixed an issue in the conversion to Qt/MSBuild where moc-generated C++ sources excluded from build in the original project are included in the converted project. Task-number: QTVSADDINBUG-597 Change-Id: I1fbec901d744b0da3b4ad7d788e13a26182c151c Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>