As of f68e2c92cc, and its follow up
changes, we can now link individual plugins statically, even if the
Qt build is generally a shared build.
This allows us to build Qt for iOS as shared libraries, while still
keeping the platform plugin as a static library, since this is
harder to port over to a shared library.
This gives the benefit of faster turnaround during development, as
well as binary compatibility promises for the main Qt libraries,
without having to go fully shared for all of Qt.
Static builds are still the default, due to the downsides of larger
application bundles and slower load times for shared builds.
For now the user has to manually tick the "Embed & Sign" check
box in Xcode for each Qt library, which is only available with
Xcode projects generated by the qmake Xcode generator.
Task-number: QTBUG-85974
Change-Id: Id2b7bd2823c8e7c79068dda95295b574ada8d7f2
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
This module is long gone.
Pick-to: 6.5
Task-number: QTBUG-105135
Change-Id: I58bb2dd04a278830a34747267c6c6058614b7342
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Due to an XCB library change, QXcbBackingStore::toImage() cannot be
safely assumed to return an image identical to QWidget::grab().
The test functions fastMove(), moveAccross() and moveInOutOverlapped()
relied on QXcbBackingStore::toImage() and failed.
They were backlisted on Linux/XCB.
This patch obtains a screen shot instead of an image from the backing
store on XCB platforms. It processes events until the screen shot
matches QWidget::grab(). It makes the test fail only if the comparison
times out.
The patch also removes the BLACKLIST file, containing only the test
functions mentioned above.
Fixes: QTBUG-109036
Pick-to: 6.5 6.4
Change-Id: I26dd5b89dc62b313db066a285f6ad7d4d92baaf2
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
First off, this doesn't cost us anything, because std::pair is defined
in <utility>, which qglobal.h unconditionally includes in C++ TUs.
More importantly, it prevents ODR violations: when a TU includes only
qtypeinfo.h, it will find std::pair<int, int> to be of Q_COMPLEX_TYPE,
in constrast with a TU which includes qpair.h, which will find it to
be of Q_PRIMITIVE_TYPE instead.
[ChangeLog][QtCore][QTypeInfo] The QTypeInfo for std::pair/QPair will
now be correct even if qpair.h hasn't been included, fixing an
One-Definition-Rule (ODR) violation.
Pick-to: 6.5 6.4 6.2
Change-Id: I51f579c123183af25aac9f0ffcf077f752848fb1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Should be placed between "class" and the class name.
Change-Id: I418cdc2b200bf7b5147d4b4278f3d0b77786710d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Also replace the C array with a std::array and (some) indexed loops
with ranged-for loops. Most loops need the index in one way of
another, so can't easily be converted to ranged.
Pick-to: 6.5 6.4 6.2
Change-Id: I7fa05f22de9df6c68ec5797c9583476a3881532c
Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
GCC complains:
qoffsetstringarray_p.h:85:27: error: comparison is always false due to limited range of data type [-Werror=type-limits]
85 | if constexpr (Highest <= (std::numeric_limits<quint8>::max)()) {
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Fix by casting the RHS (of limited-range type) to size_t, the type of
the LHS.
Fixes: QTBUG-109875
Pick-to: 6.5 6.4 6.2
Change-Id: I494ea544b8b3bfd877443119eebc160eb2f8e063
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
(Un)Register the custom recognize in init() and cleanup() instead of
initTestCase() and cleanupTestCase(), so that a new recognizer is used
for each test function.
In the test functions, use a scope guard to unregister the locally
registered recognizers to make sure that in the case of a failing test
and early return, the recognizer is removed.
Pick-to: 6.5 6.4 6.2
Change-Id: I4fe9509f35474514ef55191d799e6707199fe853
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Setting a negative line width does not make much sense, but in
earlier Qt versions, this work the same as if the line width was 0
(just give you the minimal layout given wrapping constraints).
But since 991c056438, we check if
current width > line width at an earlier point, and because 0 > -1,
we would exit immediately before adding any characters to the text
line.
To restore the behavior in earlier versions, we set the minimum
possible line width to 0.
Pick-to: 6.5
Fixes: QTBUG-109474
Change-Id: Iceadd5135681f61b30de8221853834983941c5a4
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
Reviewed-by: hjk <hjk@qt.io>
Patching inconsistent path separator in Batch file. This at some point
may lead to something similar to the mentioned task.
Pick-to: 6.4 6.5
Task-number: QTBUG-109857
Change-Id: I36c05dc7a0b7daf3dc5dced61f3c3f7d90eb59e3
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Clients who called the base-class implementation in QDialog would
as a result start hitting the canBeNativeDialog code path at the
start of QDialog::setVisible(), which would show the native dialog,
but without updating the QWidget visibility state.
To keep things 100% compatible, we shuffle the implementation of
QDialog::setVisible() into QDialogPrivate, which allows us to
override it in QMessageBoxPrivate and QErrorMessagePrivate.
The existing subclasses of QDialog that override setVisible have
been left as is, to not cause any unintended behavior change.
Pick-to: 6.5
Change-Id: Icafe31a7b84a75049365e4e04b80492de08614d2
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
When the test is showing the error message over and over, it's not
waiting for the native dialog to actually become visible, and as
a result, hiding it has no effect and won't result in a call
to processResponse, where we got rid of the native dialog.
To fix this we explicitly release the native dialog when
encountering this corner case.
Add logic to QErrorMessage to test both native and non
native dialogs.
Pick-to: 6.5
Change-Id: I19ac3f463997aed1e66f646fdfcbb4d2459116d1
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
5 ms barely works for 144 Hz screens (when we have 6.94 ms altogether).
For 240 Hz (4.16 ms) it is definitely wrong.
Instead of picking another fixed value, scale based on the reported
refresh rate. (60 -> 5, 144 -> 2, 240 -> 1)
Fixes: QTBUG-109679
Change-Id: I75d91d8e351149987f4afd673d6dedbda2fb388a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Changed the type of the QtModule enum to no longer be quint64, since
the bitset change doesn't require it anymore.
Pick-to: 6.5 6.4
Change-Id: I000107d23da959c28c26086f0b704252f36619f8
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
In order to generate metadata for a class `NS::Class`, moc will
"mangle" its name by turning the colons into underscores. This
however makes the generated name have a double underscore, and
all names with double underscores are reserved.
Instead, replace double colons with another string ("SCOPE").
We are then going to use this mangled name to create other identifiers.
To do so, underscores may get appended and prepended to the mangled name
(e.g. "qt_metadata_" + mangled_name + "_t"). This means that a leading
or trailing underscore in the mangled name would also be problematic;
avoid that as well.
Pick-to: 6.5
Fixes: QTBUG-109851
Change-Id: I01391a57920545fc75f78ef4bfefaf6d3dd7b447
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
In case of QT_FEATURE_timezone=OFF test should not be built
Change-Id: If667b9edb1d670b9ed8a62f301a7e5e21e7d2b4c
Reviewed-by: Kimmo Ollila <kimmo.ollila@qt.io>
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
We were displaying the exception type by on the error
page, however the exception contains a stack trace as
well which we can print to the console.
Pick-to: 6.4 6.5
Change-Id: Ia6c95c3f179eb68e57f9d6d2d8ad960591d0b365
Reviewed-by: Aleksandr Reviakin <aleksandr.reviakin@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
The multi-thread snippet in the documentation, when copied as is,
could actually crash because of the race condition between the main
thread and the thread that generate results for the promise.
This is fixed by explicitly calling QPromise::start().
Actually, the underlying snippet already has this call, it just was
not included in the documentation.
This patch modifies the documentation snippet to include calls to
both QPromise::start() and QPromise::finish().
Fixes: QTBUG-109230
Pick-to: 6.5 6.4 6.2
Change-Id: Ic25f31a6b3b16ba6bc06a0b199289c8c5d50bab6
Reviewed-by: Sona Kurazyan <kurazyan.sona@gmail.com>
Linking to 'Drag and Drop' target will link to a page local to Qt
Widgets with that section title. The intention is to link to the
topic page located in Qt GUI module.
Add a descriptive keyword to the correct target page and use that
for linking.
Pick-to: 6.5 6.4 6.2
Fixes: QTBUG-109289
Change-Id: Ib6a39b43f9080cf5bb72fb07ab163e75eefb4da9
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
We are seeing ~200 000 compiler warnings coming from Integrity compiler
not seen on other compilers. Suppress these as a hotfix reduce the
load on CI.
Change-Id: I9636104f07e81f9f5cf39b7fac2ac34ec2456db5
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
Support serializing shaders with specific qsb version. The default
behavior remains the same, using the latest version.
Task-number: QTBUG-101062
Pick-to: 6.5
Change-Id: I090a88c1ccb3be4ac5eee1da4058afaa8bf3111c
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Member functions defined in-class are inline by default. New header
file, let's start with a clean slate.
Change-Id: I5f2192fdf32356ab20363cee56ccdcb989146c5b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Øystein Heskestad <oystein.heskestad@qt.io>
- Initialize members in-class, and in ctor init-list as needed. This
simplifies the constructor and is generally safer as one can't forget
to initialize a member, especially built-in types
- Add copy control members, this is actually a move only class because
of the QMultiHash<QString, RCCFileInfo*> member and the destructor
calling qDeleteAll
- Minor, save a couple of bytes by reordering the members so that they
are in 8 byte chunks as much as possible, sizeof(*this) is now 104,
was 120
Change-Id: Idcf7c5a99fdf02854e09e3c1cade6c8d238ed492
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Move it to the table for QLocale::toString() to make it more prominent.
Explain the meaning for QTextStream::realNumberPrecision().
Pick-to: 6.5 6.4 6.2
Change-Id: Ic2da22ff6bea09e79e17f19b4636cef35dc3a615
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
That follows what File Explorer on Windows 11, or the system UI does for
tooltips in modern UI elements (the tooltip for the "minimize" button in
a titlebar still shows the yellow-colored tooltip). Using the accent
color makes the tooltip pop a lot more, but doesn't look native.
Also make the toolTipPalette helper function do something useful in dark
mode.
Pick-to: 6.5
Change-Id: I2b07abd72eee50508f19f46aaec3408183c27100
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
Searching in qstring.{h,cpp} is slightly easier (it's already too
long).
From the task:
Having similarly-structured header files for all the view classes would
help rebasing the different view classes onto a common template come Qt
7.
Diff best viewed in terminal with git's diff.colorMoved config set to
default.
Task-number: QTBUG-103509
Change-Id: Ie791760bb5bfa23def98d67c206ae8fd00c5f6e6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Instead of the more verbose currentDateTime(QTZ::UTC).
Pick-to: 6.5
Change-Id: Ie759f4270b12fca39c458bf85c8296f5342033db
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The predicate passed to e.g. a std::sort shouldn't modify the objects
it's called on, so move filling the cache to the QDirSortItem
constructor where possible. While that can't be done in all cases, e.g.
filename_cache is used as the tie-breaker when two items have the same
time or type ...etc, so it's only assigned to _if_ needed, we can at
least move some stuff out of the predicate to the QDirSortItem c'tor.
Drive-by change: replace comment with asserts
Change-Id: I0199797ab8e261fe3c0fcb791cfc69b23b6fdc48
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
It is a valid URL reference, which is not what people may want.
Fixes: QTBUG-109855
Pick-to: 6.4 6.5
Change-Id: I69ecc04064514f939896fffd173783ce2228c1d2
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
They got marked as Qt6_PRIVATE_API because of these ARE private classes,
however their pointers are used in user code. For QMutexPrivate, because
we manipulate the pointer in inline code; for QPostEventList, because
it's used in a virtual member function's parameter list.
Pick-to: 6.5
Fixes: QTBUG-109605
Change-Id: I69ecc04064514f939896fffd1736d1fa8d3f1768
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
We may get PointerDown events with "no buttons" as the button
state in some cases such as for tap events on Apple trackpads.
Make sure the mouse button which caused the pointer down
event is in the mouse buttons set for the event.
Fixes: QTBUG-108639
Pick-to: 6.4 6.5
Change-Id: I0a49abc398308bbfed657b99fc74f60c16e05a59
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
According to the CMake documentation, IMPORTED_TARGET should be
specified before the moduleSpec, and after QUIET.
Additionally, double-quote the moduleSpec everywhere, since before, it
was only quoted in some cases.
While this is not required for pkg_check_modules to work, it unifies the
coding style.
Pick-to: 6.5
Change-Id: Ic8ad708a8146f9b39ee40e9a719412441e231452
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
When encountering a batchable target, only add its defines to the
sources that the target contains. Otherwise, the defines interfere
with other tests in the batch.
Fixes: QTBUG-109848
Change-Id: I35d1665d29bb0ce93b82059f7f3b715070539d21
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
Fix test failure in WasmEventDispatcherTest::postEventSecondaryThread()
Revert to using qGlobalPostedEventsCount() for determining
pending events state, but move the final check to after
sending posted events. Also remove a superfluous check.
This partially reverts/amends cc60d706.
Task-number: QTBUG-109066
Pick-to: 6.5
Change-Id: If4f437ce9379282c3d60b0272845a975794883de
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
For both QMutex and QAtomicInt, we have QBasic{Mutex,AtomicInt}, which
are PODs, and therefore constant-initialized. Q_GLOBAL_STATIC, otoh,
forces dynamic initialization, so don't use it.
Raw pointers don't need Q_GLOBAL_STATIC, either.
Patch up users. Instead of adding &'s to QMutexLocker arguments, port
directly to qt_scoped_lock, which takes by reference.
Change-Id: I1a13db2a5e88a52d4338a174a80522a3f5e58fa2
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This is useful when sorting by time and using QTimeZone::UTC, since
native filesystem API uses UTC, that means less conversions, which is
potentially faster.
Use UTC internally except for strings that are going to be shown in a
GUI to the user, these should be in QTimeZone::LocalTime.
[ChangeLog][QtGui][QFileSystemModel] Added lastModified() overload that
takes a QTimeZone, this is useful when e.g. comparing file timestamps
and all that's needed is time in UTC (this is faster as no time zone
conversions is required). QTimeZone::UTC is used internally when sorting
by time (using the sort() function), which should ideally make it
faster too.
Task-number: QTBUG-100349
Change-Id: I0e58f8eb7856b8da7d55db86ddd2c009ff83d970
Reviewed-by: Kai Köhne <kai.koehne@qt.io>
The method is now deprecated in Qt 6.5, not Qt 6.4.
Also, keep the documentation for now, but mark it as
deprecated there, too.
This amends 2436e259ce.
Pick-to: 6.5
Change-Id: Iff3e2c170a8fdb8834c0283de9554b503ed3aca4
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
To support cancellation of continuations attached via the parent future,
we store a pointer to continuation future's data in parent. This
requires preserving the lifetime of continuation future's data while the
parent is still alive (see 24dedaeaa1).
This is achieved by capturing the promise in the continuation's lambda,
which is only cleaned up after the parent's data is destroyed. This is
already the case for continuations without context, but was overlooked
for continuations with context: they transfer the ownership of the
continuation promise to lambda passed to QMetaObject::invokeMethod(),
which destroys the lambda's context after it's run. As a result, the
continuation's promise (and data, if there are no other copies of it)
is also destroyed, leaving the parent pointing to deleted continuation
data.
To fix this, capture a copy of continuation future's ref-counted data in
the continuation's lambda. This will guarantee that the continuation
data remains alive until the parent is destroyed and the continuation
is cleaned up.
Fixes: QTBUG-108790
Pick-to: 6.5 6.4 6.2
Change-Id: Ief4b37f31e652988d13b03499505ac65c7889226
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Added baseline test case for menu (popup), combobox, command link and
lcd number.
New API takeScreenSnapshot() has been added for screen capture and
it serves to capture pop up windows
Change-Id: I5c1e46df270d94faf5c53431cddbd07532c256ee
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Not all locales use ASCII hyphen-minus U+002D as minus sign. On macOS
using the nb_NO locale the U+2212 character is used instead when
displaying negative years. Verify that one of the two characters is
found.
Fixes: QTBUG-109853
Change-Id: I424539cc8d427ac199b4528e44bef98e45312d07
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
with default QObject::connect signal may active from next message loop. invalide cache will hit while accessibility interface is called from windows. Invalide cache will lead to a crash
Fixes: QTBUG-106653
Pick-to: 5.15 6.2 6.3 6.4
Change-Id: I5359672bcd60ed6cfb2edf238645225164cb1b88
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>