Commit Graph

63128 Commits

Author SHA1 Message Date
Anton Kudryavtsev
5a291761e0 QNAM: use _ba literals more
to reduce allocations

Change-Id: I4e03d7d51380e14b4c2aa50c5836d09f2aaf608d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-25 22:29:51 +03:00
Anton Kudryavtsev
efb5424800 QAuthenticator: postpone creation of QBA
Create QBA only when it's needed
While touching code, use std::move more

Change-Id: I5f014822a47d41fa1fca46a85a7921c70d1d9a55
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-25 22:29:51 +03:00
Anton Kudryavtsev
12184ebe7f QAuthenticator: use QSB more
avoid temp allocations

Change-Id: I8ca4d4b748f79d1c7a4455a5105998c58c91c7a4
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-25 22:29:51 +03:00
Mikolaj Boc
141f0ca338 Move runTaskOnMainThread to qstdweb_p.h, use it in WASM dispatcher
This unifies the approach to running sync tasks (possibly with a
return value) on the main thread.

Change-Id: I2a05c4f40115a79dbf03c03fa8d8db34124884dc
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-08-25 20:21:28 +02:00
Piotr Wierciński
62caae9578 wasm: Fix QFileDialog file filter
File filter was not properly processed when using LocalFileAPI.
The QtFormat->AcceptList conversion was happening twice, resulting
in erronous types. This prevented dialog from appearing on Chrome.
Additionally remove unused debug code.

Fixes: QTBUG-115087
Pick-to: 6.5 6.6
Change-Id: Ie6770e2f1d2aa7c3ad19f9ab105dbec8102d45fc
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-08-25 18:21:28 +00:00
Anton Kudryavtsev
5d534d8913 QNetworkCookiePrivate::parseSetCookieHeaderLine: port to QBAV
Change-Id: If777e43d5c24820dfab02bbf49501b09d82cc2a0
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-25 20:04:47 +03:00
Anton Kudryavtsev
6db83b57de qnetworkrequest: use QBAV more
to reduce allocations

Change-Id: Ifcb7da9d302efafd7f890b6b3fb52b7a740274d1
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-25 17:04:47 +00:00
Alexey Edelev
d02c3151b2 Disable android_deployment_settings test for non-standalone scenario
The test changes couple variables to emulate the user project
environment. These variables also affect the policy handling.
The test will build and work properly only if tests are built
standalone. So add this limitation.

Amends 2e340cea88

Pick-to: 6.6
Change-Id: I0cc49bf55bf7763e4c3ecdfa5333fb0453f06794
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-08-25 18:37:23 +02:00
Timur Pocheptsov
a3cbbe449a Blacklist tst_QMainWindow::QTBUG52175_tabifiedDockWidgetActivated
We are BLACKLISTing on macos/arm - the test is flaky.

Pick-to: 6.6 6.5
Task-number: QTBUG-115945
Change-Id: I3be28c895d46ce5ba86e00d597016334bdb16021
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-08-25 18:37:23 +02:00
Assam Boudjelthia
0f41819196 Android: use all nameFilters at once for native file dialog
Since the native file dialog doesn't allow changing the name filters
after it's been opened, another way to ensure that we comply with
the provided nameFilters list is to provide them all at once.

[ChangeLog][Android][FileDialog] use all nameFilters at once since
Android file picker can't change nameFilters after being opened.

Pick-to: 6.6
Change-Id: I389feecae190af41b87c7f2070494bd57eec4b69
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
2023-08-25 16:37:23 +00:00
Ahmad Samir
788d19439b tst_QAccessibility: compile with QT_NO_FOREACH
QObject::children() returns a const QList&, and nothing in the loop body
changes the objects children, so straightforward port to ranged-for.

Task-number: QTBUG-115839
Change-Id: I78827fd986d6ff2607cc2616ff23580c9d830f1b
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2023-08-25 18:56:28 +03:00
Joerg Bornemann
bfca8c6d24 Doc: Document TR_EXCLUDE
Pick-to: 6.5 6.6
Change-Id: Ib2e06e46f44564a2c7581ff4d7f3d8a29d2756c9
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2023-08-25 17:56:28 +02:00
Anton Kudryavtsev
639a7a6f6c QNetworkHeadersPrivate::findRawHeader: port to QBAV
Change-Id: I15274eaa79d05a2aed909bada94276f98ae25fe8
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-25 15:56:27 +00:00
Pasi Petäjäjärvi
dd3840a1a2 QGuiApplication: Report default platform name before initialization
Calling this function before we had a QGuiApplication instance, would
return an empty string, even if QT_QPA_DEFAULT_PLATFORM_NAME was defined
at compile time. We now return the default platform name

[ChangeLog][QtGui][QGuiApplication] QGuiApplication::platformName
now reports the default platform name if QGuiApplication hasn't been
instantiated yet. It used to return an empty string.

Pick-to: 6.6 6.5
Change-Id: Iffe7cde8943ed2d186bc494d0920b9cf79389dd0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-08-25 15:56:27 +00:00
Anton Kudryavtsev
002c2723c9 qnetworkcookie: reduce allocations
by using QBAV::toInt instead of creating temp QBA + atoi

Change-Id: I90dd78e3fd989930071e3bd99c914087409aa948
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-25 14:33:51 +03:00
Tor Arne Vestbø
ea25b3962b Stabilize tst_QGraphicsEffect::draw()
It's very flakey in CI: http://testresults.qt.io/grafana/goto/XZQAAPRSg

What we want to test is whether Qt issues paint events in response
to enabling an already enabled effect. Doing so via qWait will process
both window system events and posted Qt events, and the former might
include spontaneous paint events from the system that we can't control.

Task-number: QTBUG-115945
Pick-to: 6.5 6.6
Change-Id: I65e5c6a4458e77b3bd2ad700c5caf6d441f4ca53
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-08-25 09:04:37 +02:00
Ahmad Samir
2e37cff19e tst_QSpinBox: handle an old TODO
QTBUG-69492 has been fixed since Qt 5.12.

Pick-to: 6.6 6.5
Change-Id: I8bc59bd37a9ee2f47f13fa8ff54aa91e2c9148fa
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-08-24 23:35:01 +03:00
Mate Barany
1b429d6be4 Add Q_CLASSINFO to QNetworkInformation
As part of creating the QML binding, add
Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
to QNetworkInformation.

Task-number: QTBUG-113813
Change-Id: Ib5d3b2356986c565b9786bc2d925cc4199bae6c9
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2023-08-24 18:29:15 +02:00
Ivan Solovev
605412dd19 double-conversion: update to 3.3.0
Retrieved from/changelog here:
https://github.com/google/double-conversion/releases/tag/v3.3.0

Task-number: QTBUG-116236
Pick-to: 6.6 6.5 6.2
Change-Id: Ifac887dfcb9151fe2bd8b7e3f5dfe763836a9adb
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-24 16:28:08 +00:00
Edward Welbourne
828acefc8a Rename Qt::Key_mu to Qt::Key_micro
The old name misleadingly identifies it as the Greek letter on which
it is based (and to which it case-folds); but U+00B5 is MICRO SIGN,
not the Greek letter mu, and pretending it is the latter only leads to
confusion.

Retain the old name as an alias to the new, prepare to deprecate it
from 6.11 and change all uses of it to the new name.

[ChangeLog][QtCore][Qt::Key] Qt::Key_mu is now renamed Key_micro,
since it is, in fact, the micro sign, not the Greek letter mu. The old
name is retained as an alias for the time being.

Change-Id: I4deb905f5e59b906710bd092c05a2c0a9b6bba65
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2023-08-24 13:51:36 +00:00
Alexandru Croitor
6e853572c5 CMake: Add missing labels to compile tests
The displayed failure messages were missing the label, making the
output confusing.

Pick-to: 6.5 6.6
Change-Id: I4e20687f85b651dcac66ebd6e0881809dc0be709
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2023-08-24 15:51:15 +02:00
Morten Sørvig
198eaaf523 Reduce nesting in processWindowScreenChangedEvent()
Replace if-block with early return on null QWindow.

Pick-to: 6.6
Task-number: QTBUG-116232
Change-Id: Iaf402edfd9b03734b64fdf707834fa92c827a1dc
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-08-24 15:51:00 +02:00
Anton Kudryavtsev
f5b4a18b56 qnetworkcookie: replace QString with QL1S
to save allocation

Change-Id: I7726d2e9d165ec3ebdd4a6dd7dd98bcd16c50bc6
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-24 16:49:49 +03:00
Anton Kudryavtsev
4d5fb42987 qhsts: use const methods more
to prevent possible detach

Change-Id: If349999b873195ca96ea0101273861b95eb16b4f
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-24 16:49:20 +03:00
Anton Kudryavtsev
082d15e733 qhsts: use QBAV more
to avoid temp allocation

Change-Id: I1466f07475cfb07711036c44f56c8e2e34f56601
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-24 16:48:44 +03:00
Anton Kudryavtsev
6ade83e635 http2protocol: use QSB to reduce allocations
Change-Id: I9bc312e6c7e4b7c8f613b88e206a2a23f9e23722
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-24 16:48:16 +03:00
Axel Spoerl
3308ce3fd3 QToolButton: Replace macro based connections
Use QObjectPrivate::connect() instead of SLOT/SIGNAL based connection.
Remove _q_ prefix and private slot declaration.

Change-Id: I4f91d6f7155d7578c5d2d31a18865a00ebb8d13b
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2023-08-24 15:28:57 +02:00
Axel Spoerl
9ef16d9471 QPushButton: Replace macro based connections
Use QObjectPrivate::connect() instead of SLOT/SIGNAL based connection.
Remove _q_ prefix and private slot declaration.

Change-Id: If6882b7cbd723b441f865f1a8de47466964077e7
Reviewed-by: David Faure <david.faure@kdab.com>
2023-08-24 15:28:36 +02:00
Joerg Bornemann
b1aa6c2bc8 CMake: Fix early exit in qt_build_repo_post_process()
This is a macro. We cannot use return() here or we're skipping code at
the call site.

This commit amends b684984939.

Task-number: QTBUG-88264
Change-Id: Icf6dd06338584239873bf4d66a4bbceef9071399
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
2023-08-24 15:14:53 +02:00
Alexey Edelev
64510186f7 Do not generate the deprecated 'QtTest/qtest_global.h'
Task-number: QTBUG-115029
Change-Id: I2c0e7979b22c2381049a170f977202d0cd594e4b
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2023-08-24 13:39:45 +02:00
Ievgenii Meshcheriakov
43a2f19a07 Update public suffix list
Task-number: QTBUG-116236
Pick-to: 6.6 6.5
Change-Id: I91d4619b69a16ef1ac2f954b738f181b1dd9d9a1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-08-24 13:39:45 +02:00
Marcin Zdunek
c00951c6c2 Fix tst_qprinterinfo.cpp not compiling on Vxworks
Neither fork() nor execvp exist on Vxworks so they should not be used

Task-number: QTBUG-115777
Change-Id: I6de4e9ec67741466de1b1f4bd89d9c962e539bb8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-08-24 08:04:01 +00:00
Mårten Nordheim
d8f7b88754 Use the Callable helper in QCallableObject
They do the same work in determining the way to call the callable
but with slightly different preconditions.
Let's just re-use it.

Change-Id: Ie2ad54a49250ae8460d8f364f7ea01b651648034
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-08-24 07:45:05 +02:00
Mårten Nordheim
4ffb227c78 invokeMethod: Try invoking functor and member function accepting pointer, returning void
Due to the pre-existing overload of invokeMethod that accepts a void-pointer there is
concern that the new overloads would not be preferred.
Here we add a test for this to verify all supported platforms work.

Change-Id: Ie5ac7bf16643599006ac57e0145feb6aace3fa87
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-08-24 07:45:04 +02:00
Mårten Nordheim
a7d2855b3c invokeMethod: enable passing parameters to overload taking functors
This was missing for a while, and there is nothing fundamentally
missing for it to work.

With the more recent work around slot objects and invokeMethod in
general, it is a good time to add support for this.

In this patch, when connecting to a functor, it automatically deduces
the overload to call based on the arguments passed to invokeMethod.

Sharing code with QObject::connect could be done, but they have a
key difference that makes it harder:
With signal emissions we throw away trailing arguments that are not
used: i.e. `signal(int, int)` can be connected to `slot(int)` or
`slot()`. With invokeMethod that's not a thing. So we will need a way
to toggle that behavior during resolution.

[ChangeLog][QtCore][QMetaObject] Added support for passing parameters
to the overload of QMetaObject::invokeMethod that takes a functor. These
new overloads must have the return-value passed through qReturnArg().

Change-Id: If4fcbb75515b19e72fab80115c109efa37e6626e
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-08-24 07:45:04 +02:00
Mårten Nordheim
777a1ed191 Make qReturnArg return a type templated with the return type
This way we can make check verify that the passed-in pointer is correct
at compile time.

Doesn't do this in this patch because all current uses are in the
string-based overloads, but we'll use it in a later patch which adds
new invokeMethod overloads for the functor-based API.

Change-Id: I30186adc9d0b67c7ca337deb35c2c34661e50261
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-08-24 07:45:03 +02:00
Thiago Macieira
306d32fdd3 Doc: add missing docs for QFileInfo::filesystemReadSymLink()
Fixes: QTBUG-116351
Pick-to: 6.6
Change-Id: Ifa1111900d6945ea8e05fffd177dc57774db65cf
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
2023-08-23 18:15:10 -07:00
Mårten Nordheim
394602a80a Use qintptr for socket handles
Because the real handle is also the size of a pointer,
not int

Change-Id: Ic2efdd56a5deffe9bd130ce02e549efd68d6a337
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-08-23 21:14:25 +02:00
Mårten Nordheim
a11c42359a Let mingw use libcpp
Change-Id: Ied1bbe6cda7d554c70b254ca2a45e699bdf4465b
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-08-23 17:53:18 +02:00
Joerg Bornemann
d5c4d6eb77 CMake: Rename QT_EXAMPLES_CMAKE_PREFIX_PATH
...to QT_BUILD_CMAKE_PREFIX_PATH, because the variable is now used for
examples and tests.

Change-Id: Ie6d32a0c99f46407f2771e12638456078c59fb18
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-08-23 16:21:58 +02:00
Joerg Bornemann
2ab80a2c18 CMake: Allow find_package(Qt6 COMPONENTS Foo) in tests
In prefix builds of non-qtbase repositories, calls to find_package(Qt6
COMPONENT Foo) did not work in tests, because the find_package calls in
Qt6Config.cmake use NO_DEFAULT_PATH, and thus CMAKE_PREFIX_PATH is
ignored.

Non-external-project examples had the same problem. This was fixed by
ffe0889413 which introduced the variable
QT_EXAMPLES_CMAKE_PREFIX_PATH as additional parameter in all relevant
find_package calls.

We now set this variable in qt_build_tests where it should be local to
the tests directory and its children.

We cannot use QT_ADDITIONAL_PACKAGES_PREFIX_PATH, because it's value is
read once and cached in Qt6Config.cmake - we would have to clear the
internal cache variable.

It would probably be good to rename QT_EXAMPLES_CMAKE_PREFIX_PATH to
reflect that it's not just used for examples. However, my naming skills
are drained for today.

Task-number: QTBUG-88264
Change-Id: I8bcfe9b7f2ee1f1b75dc725977924d09cb36822c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-08-23 16:21:58 +02:00
Joerg Bornemann
b684984939 CMake: Fix find_package(Qt6*Tools) in non-qtbase tests
Tests in non-qtbase modules could not find_package their own Qt6*Tools
packages, because add_subdirectory(tests) was called before the config
files for Qt6*Tools were created.

The creation of tools config files is done in QtPostProcess.cmake, which
was included in qt_build_repo_end(). Move that include into its own
macro, qt_build_repo_post_process() and remove it from
qt_build_repo_end(). Call qt_build_repo_post_process() before the
'tests' directory is added in qt_build_repo().

Every call site of qt_build_repo_end() must now be adjusted and call
qt_build_repo_post_process().

Task-number: QTBUG-88264
Change-Id: I80d60a1b5c0e9b715c298ef4934b562f815432d1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-08-23 16:21:58 +02:00
Ivan Solovev
f081578ce0 QSqlIndex: implement member swap() and use a macro for move-assignment
Also declare the type as shared using Q_DECLARE_SHARED

Found during Qt 6.6 API review.

This commit amends 46e909a37a.

[ChangeLog][QtSql] QSqlIndex is now a relocatable type.

Pick-to: 6.6
Change-Id: I78394cba082b4df2e4d8a6aab8e8e87f2340962c
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-08-23 14:21:57 +00:00
Ivan Solovev
2f87711913 SQL: add missing Q_DECLARE_SHARED to the value types
QSqlField and QSqlRecord implemented all special member functions and
the member swap() function, but were missing the Q_DECLARE_SHARED
macro.

Found during Qt 6.6 API review

[ChangeLog][QtSql] QSqlField and QSqlRecord are now relocatable
types.

Pick-to: 6.6
Change-Id: Ia10f1d3fd9f634864be5b36d1d3903301adfa9ab
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-08-23 16:21:57 +02:00
Alexey Edelev
2e340cea88 Add test for the qt6_android_generate_deployment_settings CMake command
qt6_android_generate_deployment_settings is implicitly used by
qt6_add_executable in user projects. This test makes sure that the
function behaves as expected for user projects specificly, since in Qt
tests it behaves differently because of Qt-specific conditions inside.

Task-number: QTBUG-116037
Pick-to: 6.6
Change-Id: Iea10eca7a780ebaff0c05b91ebe47b821b9ec956
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-08-23 16:21:57 +02:00
Axel Spoerl
aff0915352 QDialogButtonBox: Use separate eventFilter class
bbb71e7e80 added an eventFilter override
to QDialogButtonBox, in order to fix QTBUG-114377. The approach added
a symbol to QDialogButtonBox, which breaks binary compatibility between
patch releases.

=> Use a separate class to install an event filter
=> Remove the symbol (eventFilter override) in QDialogButtonBox

Fixes: QTBUG-116287
Pick-to: 6.6 6.5
Change-Id: I920deca9f45f6246ed1fcbf5346f681dd5dd12f6
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-08-23 14:56:16 +02:00
Anton Kudryavtsev
2da366fbba qcommandlineparser: use string view type more
Change-Id: Ic3a04843d6b73d9489cbce1411453b146842c52f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-08-23 15:56:16 +03:00
Tor Arne Vestbø
a143158eb1 macOS: Re-apply QWindow visibility when moved between NSWindows
When a QWindow is moved between being a child window and a top level,
it gains a corresponding QNSWindow, which we create as part of
QCocoaWindow::createNSWindow(). NSWindows are not visible by default,
so we need to re-apply the QWindow state to the newly created window,
just like we do for other QWindow properties.

Pick-to: 6.6
Change-Id: I809d12b09eeccea7a4ee4e8444f69db46dbd159e
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-08-23 12:48:20 +02:00
Kai Köhne
3aaeef59fb Doc: Fix typo in comment
Change-Id: Iabf098e22398721f2087e2bbd02d128a75639315
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-08-23 12:25:28 +02:00
Kai Köhne
be26eb14da Doc: Mention version of QApplication::setActiveWindow() deprecation
Pick-to: 6.5 6.6
Change-Id: I7cd9be3b34a4cb7f396d175ff8137b590c2435c9
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-08-23 12:25:28 +02:00