This commit introduces a new feature called vkgen for the tool which
depends on xmlstreamreader.
Note that when features.vkgen is disabled, vulkan.pri will generate
dummy qvulkanfunctions.h and qvulkanfunctions_p.h because buildsystem
needs them.
Task-number: QTBUG-76159
Change-Id: I03d526a0fd76a2d8b531940f37538cead109d9d3
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
You can create multiple instances of QBenchmarkGlobalData as the ctor
is public.
The qmltest plugin does create a static one, but only conditionally
assigns it to the singleton pointer. On shutdown the plugin is removed
and the QBenchmarkGlobalData::current should only be reset by the dtor
if it's actually pointing to the same object.
Change-Id: I616c1ccf6f7a00abf1de342094da88481510bc7b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
That code would normally call for QSet::find instead
(Uniform Container Find cannot come soon enough).
Since the code is showcasing a STL algorithm usage,
port it to std::find_if to showcase a real use case.
As a drive-by: fix the usage of endl with std::cout.
(Ok, it's just a variable called "cout", and I'd argue
that in example code "cout" is not the name of a
QTextStream).
Change-Id: I8686178b33c31552eb4d909a4089453d60994b79
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
There are things that could be shared around all Qt submodules. In particular
compiler specific configuration should not be repeated over and over.
The new file can be included directly from all modules that uses QtBase.
In longer term one would have a separate repository for such instructions as
most of them are not QtBase specific.
Change-Id: I0590b2a0c78b73e1b9dbb27cc1da6568cbe56563
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Use the QSet QWidgetPrivate::allWidgets directly instead of
calling QApplication::allWidgets(), which allocates a QList.
Change-Id: I16d289030cecefae7811d4b2c94f865f46f700d5
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reduce our usage of QRegExp in preparation towards deprecating
it. This also brings it in line with QDir that already uses
QRegularExpression for filtering.
Keep the old QRegExp based code around in bootstrapped mode,
since qmake uses this functionality.
Change-Id: I98b9d2875c30e17e406b6711dfe3265ba37624ac
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
By running dumpcpp if the files do not exist at qmake time we enable
the dependency finder to find these files and set up the dependencies
as appropriate. Since other changes ensure that dumpcpp will be called
at the right time when building if the typelib changes, we no longer
need to have the generated files dependent on the objects. As a
result, we are able to prevent it from unnecessarily rebuilding
everything if certain files are updated.
Change-Id: I334f48c7a980aa8b893c14cb2a4687d3b2b7a4b9
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
Previously the cmake install prefix was added twice during a non-prefix
build, which evaluated to an incorrect path.
Set another absolute dir variable, and use that instead.
Change-Id: I73099510dadc8f401d5a763f21840c9671686c10
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CMake Build Bot
... except for tests, which manually undefine the macro.
Like QT_NO_FOREACH, this is a technical way to keep JSI-free
modules JSI-free going forward.
Change-Id: Icf1342da00a700f42f9e32a253d1cdb94c38dd7e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Amends b03385f9cf.
Java-style iterators are scheduled to be deprecated.
The general pattern used in the patch is that instead of copying an
input list, then iterating over the copy with some calls to
it.remove() (which leads to quadratic-complexity loops), we simply
copy conditionally (a la remove_copy_if instead of remove_if).
To make clearer what's going on, rename the outgoing list to
'unhandled'.
To avoid having to touch too much of the loops' structure, which
sometimes is quite convoluted, use qScopeGuard to do the append to
'unhandled', unless the original code removed the element.
Change-Id: I808a939b9c816b329ee87620e0a3461fee6e3e40
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Replace the identity check with a check for the underlying QHash
objects being shared and replace backwards iteration, which is really
forwards iteration with wrapping at bucket boundaries, with forward
iteration. QSet cannot contain duplicates, so the order in which the
RHS elements are presented to the algorithms does not matter.
Change-Id: Iad8528e3a9501b14cb85601b221a848aad91480c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
QWidgetPrivate::windowHandle() should not return nullptr from the
WindowHandleMode::Direct branch in case WindowHandleMode::Closest was
passed.
Ameds eed9a8fbd3.
Task-number: QTBUG-62094
Task-number: QTBUG-73231
Change-Id: Ia55fff15f0a499cef9525e53111ddd55b2e012d0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
The QNetworkReply implementation for Qt for WebAssembly now supports
usage of the QNetworkAccessManager::sendCustomRequest, making it
possible to send requests with custom verbs.
[ChangeLog][QtNetwork][QNetworkAccessManager] Fixed
QNetworkAccessManager::sendCustomRequest for Qt For WebAssembly.
Fixes: QTBUG-76775
Change-Id: I9394ffef110fce4ed2c877893631bedc7631f71e
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
This seems to be a common use case, and to be expected from pastes
of MSWord documents.
Change-Id: I5849d7f51408e76f15a0b03c2118649f118af1d6
Fixes: QTBUG-66794
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Because it is. It's just QCoreApplication::postEvent(), which is thread-safe.
It also _has_ to be, because we recommend to use deleteLater() to delete
QObjects that live in another thread:
Quoting the ~QObject() docs:
> Warning: Deleting a QObject while pending events are waiting to be delivered
> can cause a crash. You must not delete the QObject directly if it exists in
> a different thread than the one currently executing. Use deleteLater()
> instead, which will cause the event loop to delete the object after all
> pending events have been delivered to it.
If deleteLater() is not thread-safe, it cannot be used for one of its intended
purposes.
Change-Id: I333d506b42bdfcdff00fe6cefa234c21865625a6
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
We stopped storing the patch release number of Qt in the plugin metadata
in commit 7bd79b3cff (5.13), to make it
simpler to parse the validity of plugins before decoding the CBOR
payload.
Fixes: QTBUG-76855
Change-Id: I6aed4df6a12e43c3ac8efffd15adbbf83e928866
Reviewed-by: Liang Qi <liang.qi@qt.io>
g_options.buildPath did not have native separators. This caused
INSTALL_ROOT to not have native path separators, which again made
'mingw32-make check' fail to deploy the .apk. (The actual failure was that
mkdir failed because it did not accept paths with forward-slashes, so the
install_target rule failed. For the record, the command of that rule had
the following call to mkdir:
mkdir $(INSTALL_ROOT:@msyshack@%=%)\libs\x86
Change-Id: Id792c36986b52a527546d48aa9f7d9587e7a18d9
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
RenderHint::HighQualityAntialiasing and NonCosmeticDefaultPen are
obsolete since Qt5 but not marked as such. Therefore add
Q_DECL_ENUMERATOR_DEPRECATED_X now so those two enumerations can be
removed with Qt6.
[ChangeLog][QtGui][QPainter] HighQualityAntialiasing and
NonCosmeticDefaultPen are marked as deprecated and don't have an effect
anymore
Change-Id: Ib0c966a078a1d23d492d0255288e2066c50e87b6
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Remove the mainW, edit widget member variables from the test and use
widgets instantiated on the stack in the tests.
For the data-driven tests, use a static QScopedPointer, which is
reset by a newly introduced TestEnd action.
The book-keeping logic maintaining a list of shortcuts can then be
removed.
The setupShortcut() helpers are simplified and the special case
TestWidget::SendKeyEvent is replaced by a lambda in
keypressConsumption().
Task-number: QTBUG-76493
Change-Id: I15dfa86dfa0666ed8288b7190e37cdb862c261c8
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
- Use member initialization
- Introduce nullptr
- Use auto where applicable
- Use range-based for
Task-number: QTBUG-76493
Change-Id: Ic4dbee2d76a65be1f8a4c25f4ca7e4f032443579
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Varying versions of the library may be available depending on build tool
chain or Windows version. Try to dynamically resolve the D3DCompile
function.
Fixes: QTBUG-76845
Change-Id: Ib7eb3b8c454e9c25731eb2ba9ba45e54fe3f1283
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
This is in preparation of deprecating QLinkedList.
Most is straight-forward, except where operator+ was used on linked-list
iterators. In one case, replaced this with std::next, in the other, with
prefix increments, since the advancement was always equal to the loop
control variable. Since advancing a linked-list iterator is a linear
operation, this removes a source of quadratic complexity.
Another obstacle was the overloaded op< set, which was in the Qt namespace
while the iterator is from std and the payload, as before, was global.
This breaks ADL, so move these operators to namespace std. This violates
the standard, but the functions are tagged with our distinct types, so it
shouldn't cause any trouble.
Change-Id: Ifec0a927bfdabb002838cdf86fb8d23b32a38ff7
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This class was introduced to modify the hook handling of
QWindowsGuiEventDispatcher. As the hook handling code is removed now, we
can remove QWindowsDirect2DEventDispatcher entirely.
Change-Id: I56491a67f163784f43b1025225e536d386cead1d
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Disable ELF visibility using CMake properties on the shared object
that's supposed to contain main().
Change-Id: I9cdbb2a76ad66cf2742280ddfea47908eaff2370
Reviewed-by: Leander Beernaert <leander.beernaert@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
We do not need to print the whole cmake configuration anymore.
Change-Id: I429e06f65258d0be0cf8b7c90e81c0593718e48c
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Qt CMake Build Bot
This is the most flaky-pass test currently.
It fails the first time it is run on MacOS_10_12, but
succeeds all the following times.
This happens extremely often, so disable it until the issue
is resolved.
Task-number: QTBUG-76566
Change-Id: I94359eceb91c3b958930424e6c8b5957fb3f1252
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
QWidgetPrivate::updateIsTranslucent sets the surface format of the
window with the alpha based on the translucency attribute, so we need
to call this function when the attribute value changes. The test can
confirm that the window's requested surface format has changed, we
can't rely on what is actually set, and don't have to rely on
hard-coded values like 8bit alpha.
While WA_NoSystemBackground needs to be set for WA_TranslucentBackground
to have an effect, we can't clear the attribute when clearing
translucency (as it might have been set explicitly).
Change-Id: I238d6930b7e0488397467a4e035b5f530566a1ff
Fixes: QTBUG-60822
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
We should check if configureArgs has "-DBUILD_SHARED_LIBS=OFF", that means
"contains_value" not "in_values".
Change-Id: I6c0c3ac695fa439c68f3027e70adc389f6fb27c1
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
When calling waitFor{ReadyRead,Disconnected} it will wait for data but
if the data is already received and the read notification has been
queued (and there's no more data coming in) it will return false.
By checking if a read notification has been queued and then handling
this we can easily take care of this scenario.
Fixes some flaky tests which missed the read data in waitForDisconnect
and similar.
Fixes: QTBUG-38385
Change-Id: Ic05d59883c1175783e56ff1822b6636c35aec874
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
If we end up in the connected state then we should pass on any
remaining data immediately instead of waiting until the next time we get
a read notification.
The other `case`s in the switch might be able to do something similar,
but I don't want to introduce that logic now in case it breaks something
else, the Connected branch is small and simple to deal with.
Should severely reduce flakiness with socks proxy in CI under pressure.
Task-number: QTBUG-76367
Change-Id: I0965d4c62a29a25ce6b8dd60862a464279aef0b4
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Ryan Chu <ryan.chu@qt.io>
MODULE_ARTIFACTS_RELATIVE_STORAGE_PATH was pointing to a build
artifact, instead of a path to a successful item.
Change-Id: I01490e63e70beae2f613cda5451a9e2ddb5451fa
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
We do not run the test in such configuration. In theory the build
should success (it doesn't for now) but it creates a lot of data.
So the coverage gain vs cost ratio is not great.
This workaround aims to unblock cmake builds.
Change-Id: Icd730d88bf800ee2e7764704a92238ec147d47f9
Reviewed-by: Qt CMake Build Bot
Reviewed-by: Liang Qi <liang.qi@qt.io>
We do not need or should to define these variables in the product
configuration file. It should be enough to just have the compiler
name.
Change-Id: I797958a2c35641f1b79e4e74f3feb49312f8b9c4
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
The resulting test artifacts are way to huge to upload.
Change-Id: I6df1f1c4bdb0fe2cfb7f7baed8999a1ee24b879e
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
The main goal of this patch was to port away from Java-style
iterators, to make QtBase QT_NO_JAVA_STYLE_ITERATORS-clean. And this
the patch achieves.
But I couldn't resist a few drive-by fixes, too, to wit:
- Use qDeleteAll() instead of while(!isEmpty()) delete takeFirst()
- Use QMap::last() instead of iterating to the end, remembering the
last-seen value
- Use QMap::contains() instead of QMap::keys().contains()
- Use qExchange() instead of copy+clear
- Make some functions const (requires the mutex member to be marked as
mutable, which is common for mutex members)
I am almost certain that getSsidFromNetworkName() cannot work correctly.
But this patch does not attempt to change the algorithm.
Change-Id: Ifa04d7837bdc0837036c3a7a73f8c51f4e681f42
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Since commit 6a7cea64 qt_GetMessageHook is effectively a no-op, and
we can remove the complete hook handling code.
Change-Id: I90383c0c09c2b0f1d715872de5f9519a879d9bae
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
- Use nullptr
- Fix static method invocations
- Use QString() instead of QString("")
- Use override
- Use member initialization
- Remove unimplemented code related to status bars
- Use Qt 5 connection syntax
- Fix apparent oversights in ambiguousItems() and
unicodeCompare(),where the 2nd shortcut was assigned to the wrong button
- Use Q_ENUM for the enumerations which will output the value in
QCOMPARE and automatically declare them to be a metatype
- Use enums in helper function signature for clarity
Task-number: QTBUG-76493
Change-Id: I0ed6ee7ee8dc2dbb48160a8383e6ed29164c3449
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
- Replaced the usages of:
* QDateTime::toTime_t() -> QDateTime::toSecsSinceEpoch().
* QDateTime::fromTime_t() -> QDateTime::fromSecsSinceEpoch().
* QDate::shortDayName() -> QLocale::system().dayName().
* QTime by QElapsedTimer, where the deprecated methods of QTime
were used.
- Modified the tests for the deprecated methods to be enabled only
when the corresponding methods are enabled: when the deprecated
APIs are disabled, the tests will be also disabled, and the
compilation won't be broken.
Task-number: QTBUG-76491
Change-Id: I4d565db2329e580c567aae511696eb1efe120843
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Otherwise "QVarLengthArray<Foo> x = {};" gives a warning. Also, some
compilers get confused about "QVarLengthArray()" this way.
Task-number: QTBUG-76199
Change-Id: I4296586c0181d3e6e82ca8b7b79aeb9a21645d1f
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>