summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Whitespace cleanup in corelib/iov6.0.0-beta2Allan Sandfeld Jensen2020-10-2018-224/+224
| | | | | | | | | Selective application of clang-format to follow our coding style where it is significantly off. Change-Id: I0ff4ed146fe53922691d5473d0c236f31d478a04 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* CMake: Fix additional target info filesJoerg Bornemann2020-10-202-4/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | ...for QT_BUILD_TOOLS_WHEN_CROSSCOMPILING. qt_internal_export_additional_targets_file now gets two lists of target names when run from qt_export_tools: - TARGETS containing actually existing targets, and - TARGET_EXPORT_NAMES containing the target names as they appear in the additional target info file. Operations that require actual targets are run on the TARGETS, in the additional target info file only TARGET_EXPORT_NAMES are written. This distinction is required for the case where the host Qt lacks a tool that is built in the target Qt. Example: host Qt is built with DEVELOPER_BUILD=OFF, target Qt is built with DEVELOPER_BUILD=ON. Then the host Qt lacks qmljs, but it is built in the target Qt. TARGETS contains qmljs_native, and TARGET_EXPORT_NAMES contains qmljs. Fixes: QTBUG-87693 Change-Id: I615aed996bfcbe654274defcda8c1cb2cc4b7b4e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Add forwarding headers for classes moved from QtWidgets to QtGuiVolker Hilsheimer2020-10-2012-6/+315
| | | | | | | | | | | | | | | The QT_BEGIN_NAMESPACE QT_END_NAMESPACE block is added to avoid warnings from the build system's sanity check. As a drive-by, fix the include guards in the QtGui/QActionGroup header. Change-Id: Ie10e7830c3b00a3548123f58498def49b194c7aa Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Convert QList alias definitions to 'using'Andrei Golubev2020-10-202-35/+37
| | | | | | | | | | | | Modern syntax for type aliases looks much nicer and is easier to read. Additionally, QDoc is able to generate better documentation for 'using' based aliases. Also, aliases are simplified for QDoc Task-number: QTBUG-86553 Change-Id: I44932fbd94f32c1463eafedd1b48c1e840b697e3 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix QDoc warnings for QList/QVectorAndrei Golubev2020-10-203-19/+40
| | | | | | Task-number: QTBUG-86553 Change-Id: Iac944c78640bfcfb6ee137c0ef3dd89387700b4c Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Windows QPA/WmPointer: Register tablet devices of pointer handlerFriedemann Kleint2020-10-202-13/+64
| | | | | | | Task-number: QTBUG-46412 Change-Id: Ib9b5fd6056a5474ce46c7bde53be7a12c1494611 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Windows QPA/wintab: Register tablet devicesFriedemann Kleint2020-10-202-117/+231
| | | | | | | | | | | | | | | | Inherit a class from QPointingDevice with a shared pointer to the data for a physical cursor. As a drive-by, keep the event time in QWindowsTabletSupport for leave proximity events that do not have a time associated. The previous code was relying on QWindowSystemInterface for this, which may be at odds with the tablet's time. Refactor and streamline the code a bit. Task-number: QTBUG-46412 Change-Id: I2f4fab25a49a9d9f1befbd7fc040e8eb23be71ff Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix crash in tst_QSystemTrayIcon::lastWindowClosed()Allan Sandfeld Jensen2020-10-201-0/+2
| | | | | | | | | Handle null QIcons. Note this was already fixed in 5.15 separately, see 6c8adfaf5dc. Fixes: QTBUG-87729 Change-Id: Ia759fbe95fafcea9451d393dc1aa077f5651919b Reviewed-by: Liang Qi <liang.qi@qt.io>
* QWindowsXPStyle: Remove unused variablesTor Arne Vestbø2020-10-201-2/+0
| | | | | Change-Id: Ide3880114bf8d779571b7cf1235ae95524950e5d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix linking of non-console application on mingwTor Arne Vestbø2020-10-202-2/+10
| | | | | | | | | | | | As a result of b5af1408099d the link dependency to the mingw32 static library was ordered after the entrypoint library, which resulted in the WinMain symbol not being found during linking due to how the static linker processes archives. Fixes: QTBUG-87725 Change-Id: I8e075f91f7f06dcdc618a4e0ae6d9c1d832888c0 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CVE-2020-15999: Heap buffer overflow in freetypeWerner Lemberg2020-10-201-7/+7
| | | | | | | | | | | | | Manual cherry-pick of fix in freetype: Fix heap buffer overflow (#59308). This is CVE-2020-15999. * src/sfnt/pngshim.c (Load_SBit_Png): Test bitmap size earlier. Pick-to: 5.15 5.12.10 Change-Id: I23824074f134802b3e4f737877d144b59e6b8151 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Use qmetaobject_p.h's MetaObjectFlag in QMetaObjectBuilderEdward Welbourne2020-10-205-16/+10
| | | | | | | | This saves duplicating them with its own flags. Task-number: QTBUG-85700 Change-Id: I9e938322fd787282cfd9f941f83af8c0d76aaa9d Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Add link to Qt for Python as external pageJerome Pasion2020-10-201-0/+5
| | | | | | | | Qt for Python can be linked with \externalpage QDoc command Task-number: QTBUG-87158 Change-Id: I68acc028f89af09cbd069e098a0fbbfa72234cdc Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Drop constexpr from QAtomicTraits::isLockFree()Edward Welbourne2020-10-203-27/+27
| | | | | | | | | As requested by a ### Qt 6 comment. This then implied a few other functions weren't constexpr, which broke some tests. Task-number: QTBUG-85700 Change-Id: I6522a9b2d7a74e117442121400a1d7198d323967 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QList::removeOne: make it generic as wellGiuseppe D'Angelo2020-10-202-2/+3
| | | | | | Change-Id: I0c50b2ae76f9d0f053b3d5b1ab98d12e0524e419 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QList::removeAll: make it genericGiuseppe D'Angelo2020-10-201-3/+11
| | | | | | | | | | | | | | | | | | | | This is a bit more tricky than expected because we support passing references to objects that are into the list itself (for instance, list.removeAll(list.front())). For those objects we have to take copies. This is fine, but the moment we make the function generic, that's going to fail when passing arguments of types that cannot be copied, such as arrays (e.g. stringList.removeAll("hello")). For those, keep a reference, as they cannot be aliases into the list anyhow. [ChangeLog][QtCore][QList] The removeAll and removeOne methods now take an object of any datatype -- and not just the list's own value type. This allows for heterogenous removal inside QLists. Change-Id: I0c447770bbc7ff0ff4bb4c0e35081414c5ff963e Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add QSinglePointEvent::exclusivePointGrabber convenience propertyShawn Rutledge2020-10-202-0/+23
| | | | | | | | | | | Since a single-point event (such as a QMouseEvent) only carries one point, it only has one grabber, so we can have a normal Q_PROPERTY. It's named exclusivePointGrabber to avoid shadowing the QPointerEvent::[set]exclusiveGrabber functions that take QEventPoint&. Change-Id: Ie18f1c1849ed057b98f229de7b17b7fc3f3eea36 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Make configure -qmake actually workJoerg Bornemann2020-10-201-0/+5
| | | | | | | | | We need to ignore this option in qt_configure.prf. This amends 077ea0c63326013ff6d9c85e59b322ffc2ec278c. Task-number: QTBUG-87049 Change-Id: If05b16a95d0830df9ca63961576981f8983820cc Reviewed-by: Cristian Adam <cristian.adam@qt.io>
* Fix output with box font engineEskil Abrahamsen Blomfeldt2020-10-201-5/+5
| | | | | | | | | | | | | | | | The box font engine was passing in alpha values in the blue channel instead of alpha channel to QImage::setPixel(), probably assuming that setPixel() accepts the input in the format of the QImage. But the whole point of setPixel() is that it converts the input. If we just want to set the alpha value, we can do it directly on the QImage::bits(). [ChangeLog][Text] Fixed showing boxes for glyphs when there are no fonts available in the font database. Pick-to: 5.15 Change-Id: I7ae067c26b9ecba6aaa046e7e4b9ae520c4b3d23 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
* Update QHighDpiScaling internal documentationMorten Johan Sørvig2020-10-202-57/+105
| | | | | | | | Document new conversion functions and how the new public API (rounding) effects QHighDpiScaling operation. Change-Id: I801fc065cdb4904811a009510b08cac630b83fe7 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* Merge existing tst_qhighdpiscaling into tst_qhgihdpiMorten Johan Sørvig2020-10-205-105/+23
| | | | | | | | | Move the factor() test, drop scale() which should be covered already. Change-Id: Id2079536a91c7e9f7199960bdf6b33489d0a6670 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Add high-dpi auto testMorten Johan Sørvig2020-10-205-0/+455
| | | | | | | | | | | | | | | | | | Use the new screen config feature of the offscreen platform plugin to run tests on virtual screen setup. This has the benefit that we can auto-test the QHighDpiScaling implementation (as well as its usage in QtGui) on any platform with a fixed mock screen setup which does not rely on physical screen configuration. Test the following configurations: - three screens: 96 DPI. (reference) - three screens: 192 DPI - three screens: mixed (high) DPI Change-Id: I2fac889d896cf30ab2a79c306cee22177ad8f4ac Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* QPA offscreen: make platform plugin configurableMorten Johan Sørvig2020-10-207-20/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add ability to load a json config file containing screen configuration at startup. The config file location is specified using platform options: -platform offscfreen:configfile=/path/to/file Config file format example: { “screens”: [ { "name", "screen-1", "x", 0, "y", 0, "width", 640, "height", 480, "dpi", 96, "dpr", 1, }, … ] } Change-Id: Iac21aaafa6d0f361bdd6f6e9168b7e68db6ae011 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* high-dpi: Re-implement mapToGlobal and mapFromGlobalMorten Johan Sørvig2020-10-203-48/+22
| | | | | | | | | | | | | | | | | | | | (This code is required to handle corner cases such as a QWindow covering multiple screens, where the normal code path does not give correct results.) Move the map[to|from]Global implementation from qhighdpiscaling.cpp, and implement it in terms of [to|from]NativeGlobalPosition. These functions implement the required screenAt()-type searching. The implementation strategy for both mapping functions is to first map to the native coordinate system, perform the globalPos addition or subtraction, and then map the result back to device independent coordinates. Task-number: QTBUG-81695 Change-Id: I44e9e68651634650964e839b1e564b50f434553f Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* high-dpi: Set screen on QWindow::setGeometry()Morten Johan Sørvig2020-10-201-1/+11
| | | | | | | | | | | | | | | Keep (requested) geometry and screen in sync, which is required for correct high-dpi scaling. The platform plugin can still override with new geometry (and screen), as usual. This has previously been fixed/worked around for QDialog, see QTBUG-52735. That fix can now be removed in favor of this change in QWindow. Change-Id: Ieadb1bfee5fb966c5c2052e9daa5ba124a87f3cd Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QHighDpi: window geometry scaling functionsMorten Johan Sørvig2020-10-205-17/+27
| | | | | | | | | | | | | | | | | | Add functions which scales window geometry: framNativeWindowGeometry() toNativeWindowGeometry() These correctly handles top-level and child windows, where top-level window positions scale around the screen origin while child window positions scale around (0, 0). Modify call cites to use the new functions. We no longer need the isTopLevel checks at the call site. Change-Id: I0158672d46a3f52dfc7d37d021fc5cebd7859200 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QHighDpi: global geometry scaling functionsMorten Johan Sørvig2020-10-202-15/+31
| | | | | | | | | | | | | Add functions for scaling global coordinates: toNativeGlobalPosition() fromNativeGlobalPosition() These correctly handle the cases where a window spans several screens. Change-Id: I268762499cd8d86a3c417342ddaf2fb6dab4dd20 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QHighDpi: Add screenForPosition()Morten Johan Sørvig2020-10-202-19/+84
| | | | | | | | | | | | | | | | | Implement support for using the screen at a given position when determining the scale factor and origin. Add QHighDpiScaling::screenForPosition(), which searches for a screen at the specified device independent or native coordinates. The function returns the QScreen or nullptr if no screen was found. Add QHighDpiScaling::Point, used for representing an invalid, device independent, or native point. Change-Id: I58e4e3eebb8cdd5171e59f97833a00e7f8d9ecd6 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* QHighDpi: revert window-on-multiple-screens handlingMorten Johan Sørvig2020-10-201-2/+1
| | | | | | | | | | | | | | Make fromNativePixels() use QWindow:screen() for determining which screen's scale factor to use, even if the point-to-be-scaled is on a different screen. We'll add API for handling the window-on-multiple-screens case in subsequent commits. Task-number: QTBUG-81695 Change-Id: Ib9f40a5a636b2487204c14301ad0190727dcf4ac Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
* QFileSystemWatcher: use nullptr, instead of 0Giuseppe D'Angelo2020-10-201-1/+1
| | | | | | | | | I'm not sure why this hasn't been flagged so far, probably we don't have this warning enabled on MSVC. Task-number: QTBUG-87713 Change-Id: I97c65079c8f8e439645ff7fe75eede9b01b26166 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QThread::create: mark as [[nodiscard]]Giuseppe D'Angelo2020-10-201-2/+2
| | | | | | | Also mark the helper function. Change-Id: I1469abf22cd132dbb1afe680121b6c928ffbe41e Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* QAssociativeIterable: Unwrap variants on value()Ulf Hermann2020-10-192-2/+26
| | | | | | Fixes: QTBUG-87688 Change-Id: I66515eaa1217c34f003648af6423b318b54977c4 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QAssociativeIterable: Add methods to add/remove keys and valuesUlf Hermann2020-10-193-0/+70
| | | | | | | | This way we can actually modify the container. Previously the interface was rather useless. Change-Id: I278aae46999862ada115c9066a010d7de5cde4ff Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QMetaContainer: Consistently coerce typesUlf Hermann2020-10-1912-142/+172
| | | | | | | | | | | | | | | The high-level iterable interfaces should coerce the types of most QVariants passed to the expected ones. To do this, move the type coercion code into qvariant.{h|cpp} so that it is available to the QVariantRef specializations. The exception are variants passed to the find() functions of associative iterables. Here, we should not coerce values we cannot convert to the default-constructed keys. Instead we return end() in such cases. Fixes: QTBUG-87687 Change-Id: I0bd4e5c4e4e270dd3bf36cb3fb115794828077f2 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* QRhiBackendCommandList: avoid new[]/delete mismatchFabian Kosmale2020-10-191-1/+1
| | | | | | Change-Id: Iac2645ebd1d42753817078f194ba61520f5f70c9 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* QLocale: do the inlining in the class body to save repetitionEdward Welbourne2020-10-191-36/+17
| | | | | | | | It also makes it easier to find the definition when looking at the declaration. Change-Id: Idae18d3881f3cf8ba6c6c7e48201ec925815013e Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Refine QLocale constructor documentationEdward Welbourne2020-10-191-1/+2
| | | | | | | | Clarify that the "minus sign" is a plain ASCII U+002D dash, not U+2212 minus sign; and, for symmetry, that the underscore is U+005F. Change-Id: I7250959d36e56f960dac24a739a1a8826a6bc578 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Fix [[nodiscard]] compile errors in QLocale benchmarkEdward Welbourne2020-10-191-4/+5
| | | | | | | | | | QString::toUpper() now insists we use its return, so the benchmark won't compile unless we do so. Also document the helper macro used by the tests, to explain why it's even there at all. Change-Id: I830f121d92867bcd09277ecdeb1c764413b34fa6 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* Fix QLocale's findLocaleDataById(): skip likely sub-tag look-upEdward Welbourne2020-10-191-3/+1
| | | | | | | | | | | | It was always called in pairs, first with likely sub-tags added, then with the base that started from. So doing a likely sub-tag lookup inside the function was redundant for the former while making the latter redundant - and it's needed. Task-number: QTBUG-84669 Pick-to: 5.15 Change-Id: I18bf1d4976a51d9436efd20d1a84a36cfc60f618 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Tidy up tst_QLocale::ctor(), reduce needless repetitionEdward Welbourne2020-10-191-21/+21
| | | | | | | | | | | | The test macro's first three parameters were given a QLocale:: prefix by the macro, but the last three weren't. Save uses of the macro the need to repeat the prefix in all parameters, thereby making the test cases easier to read. Also, we can compare enum values, rather than casting them to int; and, when a test fails, reporting the enum name is far more informative than reporting the integer that represents it. Change-Id: Ib0360c51049333b4a00ea84e271c99db6724334f Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Fix blatant typo in QTimeZone testEdward Welbourne2020-10-191-8/+6
| | | | | | | | | | | This revealed that the test was always broken; it had simply never actually been checked. Done-with: Andreas Buhr <andreas.buhr@qt.io> Change-Id: I85ac7ba30738fa3b41bf8440a059ee3fabb4726b Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
* Use unchecked substring methods in date-time codeEdward Welbourne2020-10-192-33/+31
| | | | | | | Change-Id: I38b9aaa0335c6168706c2508ed1117fd908e679c Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
* Check time-text is long enough while checking for its colonsEdward Welbourne2020-10-194-2/+10
| | | | | | | | | | Added some tests that trigger an assert without this check. (Drive-by: renamed one QTime test to match its QDate(Time)? counterparts.) Change-Id: I3d6767605fdcca13a9b4d43a32904f584eb57cf9 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
* Remove vacuous tst_QLocale::cleanupTestCase()Edward Welbourne2020-10-191-4/+0
| | | | | | Change-Id: I8bf9915045dce434f19de9c3745e1be28a833e8f Reviewed-by: Andrei Golubev <andrei.golubev@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* QFontDatabase: fix a uint->int implicit conversionGiuseppe D'Angelo2020-10-191-2/+2
| | | | | | | Just use an int, as it'll be converted to that anyhow for insertion. Change-Id: Ie5a9d35a7c10e38cbba49d8915602f9207b8e0ac Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QPdf: consolidate usage of uintGiuseppe D'Angelo2020-10-194-11/+12
| | | | | | | | | Objects in QPdf are indexed by uint. In a couple of places (incl. QFontSubset) int were used instead, causing sign conversion warnings (turned into errors by -Werror). Use uint instead. Change-Id: Ie0436c8aff3b67d8ef95a5f26fc16403e7e02bd1 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QTextTable: fix an implicit uint->int conversionGiuseppe D'Angelo2020-10-191-2/+2
| | | | | | | | Make it explicit; didn't investigate why mixed comparisons are used here. Change-Id: Idd353c76a65ca1c8c4a158886f64c9cbb321494b Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QList docs: remove some QVector->QList leftoversGiuseppe D'Angelo2020-10-192-58/+5
| | | | | Change-Id: I2a7b5ef07ddb07a261110914088b9942801a3c25 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Remove redundant QPointingDevicePrivate::extraShawn Rutledge2020-10-191-1/+0
| | | | | | | The inherited QInputDevicePrivate::extra is enough. Change-Id: I663c63d9b6616ee1f3c312a905a34180a6a038c3 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* CMake: Provide add_qt_gui_executable for a short timeAlexandru Croitor2020-10-191-0/+5
| | | | | | | | | | | | | Until all repos are updated to use qt_add_executable instead. This is a minimal addition, instead of the previous QT_NO_INTERNAL_COMPATIBILITY_FUNCTIONS approach which did not work in all cases. Amends c3fee0d984e59cee3ab6d069011015dd850be98f Task-number: QTBUG-87661 Change-Id: I03bbb1451de8e54be4e075f878ed104c287aa93f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>