I got build-time errors for memcpy() not being declared, that
helpfully told me to #include <cstring> to get it.
Change-Id: I6ae9e881e5accf496e9c3694ca43701972d64722
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
QODBCResult::isNull() incorrectly checked for the validity of the
internal row cache which lead to wrong results when the requested
column was not yet cached.
Pick-to: 6.4 6.2 5.15
Change-Id: Ic7dcc2117e6f05b63c83f21c6a84ba7e0bda2b2d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
qExchange is one of the few remaining functionalities that have not been
moved out of qglobal. Given that std::exchange exists in the standard, we
can simply move to it everywhere...
...if it weren't for the fact that std::exchange is only constexpr in
C++20, and only has its noexceptness specified in (most likely) C++23.
Still, we want to move to the existing std functionality where
possible, to allow the removal of qglobal includes in lieu of something
more fine-grained in the future.
So leave any constexpr calls[1] alone for now (and observe that none of
our current usages cares about the conditional noexceptness), but
replace everything else.
[1] QScopedValueRollback' ctor and QExplicitlySharedDataPointerV2::take
Task-number: QTBUG-99313
Change-Id: I599cb9846cf319c7ffd3457130938347a75aad25
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The mentioned variable in the configure note is qmake only and not used
anymore. Also, it seems pointless to show such a note on successful
configuration.
FindOpenSSL.cmake of CMake already takes care of library names of
different OpenSSL installations.
Task-number: QTBUG-93948
Change-Id: I5994df231ed4fd664f6ab17b983e88c744feb21a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Pre-requisite for a fix for qHash. The classes inherits from QString
and after the upcoming fix their single-arg qHash overload is no longer
preferred since we want to use a seed. This has been the case since
Qt 5.
Pick-to: 6.2 6.4
Change-Id: I6e8601ab8d591742e2399d10521dec8cfa46f71a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Addressing a comment from the review of QTBUG-98434.
Drop the exta QString() call, it is unnecessary.
Task-number: QTBUG-103100
Change-Id: I5a13deb5d3c52166919302bc4bb45bd0b6b5c770
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Addressing a comment from the review of QTBUG-98434.
Instead of assigning an initial value to the QString, create an empty
QString first and then append to the QString.
Task-number: QTBUG-103100
Change-Id: I8f2569ac2a2203e6459bbc7df789c9ef34f598d0
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Addressing some comments from the review of QTBUG-98434.
Fix the mismatches between string types and string literals.
Task-number: QTBUG-103100
Change-Id: Id619d7b99b9133c983f31ec5a5c2d9cc9d927416
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
This also affects things like line breaks, effectively preventing the paste of copied text to non-Qt applications.
This reverts commit 17eb0f2d8a.
[ChangeLog][QtGui][Drag&Drop] The fix to preserve special characters
like the text/plain part of the clipboard when copied from
a QTextEdit or QLineEdit had to be reverted (QTBUG-107004).
Pick-to: 6.4
Fixes: QTBUG-107004
Change-Id: Ia226f38f31a368c381910e1d43b6422395a5744f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
The fix for QTBUG-39177 was to append Qt's bin dir to PATH. But if we
have a Qt bin dir in PATH that is different from the one windeployqt
belongs to, then we end up calling qtpaths from the former Qt.
Change-Id: I373a3270d1ec950479049b4cdaf0ff13dd8813c7
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Use QDir::listSeparator() for additional entries in PATH instead of the
hard-coded semicolon. This is a preparation for running windeployqt on
non-Windows platforms.
Change-Id: I84f1da130508da7a0f3190d811acf35477564bf7
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
The target_qt.conf file contained a wrong HostData value if the
effective data dirs were set to paths of different levels in the host
and target Qt builds. Fix this by computing the relative path from the
mkspec dir's parent to the ext prefix' data dir.
Note that qmake's HostData dir is the root directory of the mkspecs
directory.
Pick-to: 6.4
Task-number: QTBUG-106712
Change-Id: Id8c9de925f5ff51901677b7218621747169a5cec
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Wasm doesn't play well with these baseline tests in general,
so we can disable them for now.
Pick-to: 6.4
Change-Id: I5a66a932449c8934d88b94e419aae5ddcc89ee78
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Introduce UseCredentialsAttribute that indicates whether
the underlying fetch/XMLHttpRequest should use credentials
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials
Fixes: QTBUG-90893
Change-Id: I2c43e286db52df387c0a22737d027b9a2a8dd2d3
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
The define has always been set, so we can simplify all the code that
checked for it.
Change-Id: I9133ba95dbd6e1da465ade1d1306310bd3fb9a45
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
C++11 atomics should be available everywhere, even it bootstrapped
builds. This will allow further simplificattions.
Task-number: QTBUG-103847
Change-Id: Ic8aaec5667ef7616a6aa1f0dfc2f64d327308501
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
In some OSes, the function takes a plain void*.
Pick-to: 6.4
Fixes: QTBUG-106980
Change-Id: I810d70e579eb4e2c8e45fffd1718bdaf94d8ac0e
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Pre-requisite for a fix for qHash. The Qt50String inherits from QString
and becomes ambiguous once it no longer goes through a catch-all
template function because qHash(QString, size_t) has a better match for
the second argument.
Pick-to: 6.2 6.4
Change-Id: I23c7afb1b3aa167d40dc4838e82b7763de015f6b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
IDEs (vscode) have problems with missing includes.
Change-Id: I2618aaaf79c81a2c3566682e13caf31133ece631
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
This fixes loading plugins on Windows on ARM
since 892d5607d0.
IMAGE_FILE_MACHINE_ARM was used for older Windows targets on ARM,
in particular Windows CE.
Pick-to: 6.4 6.3
Change-Id: I61ef7a6b5920af9192c55209f2641a6c469ad1d2
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
To indicate success of a conversion, the public API has previously only
supported registering member functions of the form To (From::*)(bool *).
When adding custom converters for types that cannot be modified, this is
usually not a possibility.
As an alternative, this patch adds support for std::optional in the
UnaryFunction overload of QMetaType::registerConverter. If the returned
optional has no value, the conversion is considered failed.
Task-number: QTBUG-92902
Change-Id: Ibac52d2cb9b5a2457081b4bebb0def1f03e3c55d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Addressing a comment from the review of QTBUG-98434: instead of the
QL1S constructor use the default constructor and append "Path: "_L1.
With the QL1S constructor capacity == size == rhs.capacity and the
very next append is guaranteed to reallocate. In the other case the
capacity will grow according to the growth strategy.
Task-number: QTBUG-103100
Change-Id: Ifcc1c22a59739c6384b363471dbb27d6a978e306
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Prior to 5.12, the placeholder text color was hardcoded to be the same
as the text color, but with an alpha of 128, i.e. semi-transparent. In
5.12, it instead got its own ColorRole in QPalette. So behavior
changed (In some cases in 5.12 and later, consistently from Qt 6):
placeholder texts no longer got a "light" (semi-transparent) version
of the css-styled color, but just the default gray/semi-transparent
black. That problem was reported as QTBUG-89815. However, the fix for
that bug did not apply the semi-transparency, but only used the same
color as the text. That caused a confusing visual expression, as
actual and placeholder text would look the same. This commit fixes
that.
The problem was made worse since there is no way to specify the
placeholder text color from css, i.e. to style it independently. A
follow up commit will aim to add that.
Fixes: QTBUG-92199
Task-number: QTBUG-93009
Pick-to: 6.4 6.2 5.15
Change-Id: I9e6698d34eba91cbf65c4da07aa5ac6d9f96a9ed
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
OpenSSL by default doesn't provide static libraries and we would fail to
build it in such case.
Fixes: QTBUG-106978
Change-Id: I456fe9bec2bbef5003de8f6cb7d9d8bb226821f9
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Window.localStorage provides a synchronous API for storing
saving data across browsing sessions, and is a good match
for QSettings. Storage is limited to 5MB per origin, which
should be sufficient for typical application settings.
Window.localStorage is shared by all pages/apps on the
origin (e.g. "https://qt.io" is one origin), which makes
key collisions possible. To avoid this the key structure
is "qt-v0-org-app-userkey", where both the organization
and application name is used to differentiate between
keys, and "v0" is a version tag to allow changing the
key structure in the future. We reserve the "qt" prefix
for keys written by QSettings.
Add the new implementation as QWasmLocalStorageSettingsPrivate,
rename the existing settings backend to QWasmIDBSettingsPrivate.
Make QSettingsPrivate::create() support backend selection using
the QSettings::Format enum. It now also supports selecting the
Ini backend, which can be used to store larger amounts of settings,
for example to a file on IDBFS. (alternatively IDBSettings +
asyncify could also be used for this case)
Change-Id: If70aa488635018218bc2a19803c4a719732c0004
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: David Skoland <david.skoland@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
syncqt.pl adds an extra dependency on perl when building Qt. Modern C++
provides the convenient cross-platform way to access a filesystem and
to use regular expressions, so we may replace the perl script with C++
application. The syncqt executable is built at configure time and
installed as QtCore tool. It's running at configure time to deliver the
required header files for IDE to build a consistent code model and at
the build time to keep tracking changes in header files and generate
the missing aliases without reconfiguring. 'syncqt' only parses header
files from a CMake build tree, so the resulting Qt installation only
contains interfacing headers that belong to the platform that Qt is
built for. 'sync.profile' files are not used as the 'source of truth'
for sync qt procedure anymore, all the necessary information is taken
from either CMake files at configure time or from the module header
files while parsing them.
syncqt.pl is still in place since it's required as fallback solution
for a smooth transition to the new syncqt implementation for all qt
repositories.
This patchset only enables the C++ based syncqt for 'qtbase'
repository.
From the performance perspective C++ version works faster then perl
script, also the configure time is reduced significally on subsequent
reconfigurations - up x2 times faster when re-configuring repository,
but it also takes time to compile the tool itself the first time.
Numbers for qtbase:
syncqt.pl syncqt.cpp
initial: 0m16,035s 0m20,413s
reconfig: 0m6,819s 0m3,725s
The syncing procedure can be run separately for each module using
<ModuleName>_sync_headers targets. The 'sync_headers' target can be
used to sync all the modules at once.
Task-number: QTBUG-87480
Task-number: QTBUG-103196
Change-Id: I8c938bcaf88a8713b39bbfd66d9e7ef12b2c3523
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Since setScaledClipRect will actually render only the necessary parts,
there may be insignificant differences in rounding/anitaliasing
compared to rendering the whole image first and then clipping.
Hence this autotest case would always fail. But that would not happen
in CI, since it tests qtbase without the qtsvg module, and then the
SVG tests are skipped. (For some reason, one ran into this in wayland
testing and made an exception for that, but obviously this failure has
nothing to do with wayland).
Work around the issue by converting the rendered images to 4 bpc
format, so the differences in the least significant bits get truncated
away.
Fixes: QTBUG-100917
Task-number: QTBUG-81044
Pick-to: 6.4
Change-Id: I1c14e98af22d0ae22a751960b69e692c7a38399b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
In latest Android versions some functions related with Display metrics
were deprecated. This patch changes some instances of that code to use
the Resources.getDisplayMetrics or WindowManager.getMaximumWindowMetrics
depending on the situation.
Fixes: QTBUG-99543
Pick-to: 6.4 6.3 6.2 5.15
Change-Id: Id9846efa877f704ef7f58c1b0820ad1527b53f09
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Without it, we do not have Q_DECL_DEPRECATED
Change-Id: I6b16176446027e0f7da923f16971e903aacc80d4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit addresses on of the comments from the review of QTBUG-98434.
Use remove instead of replace to delete from the string.
Task-number: QTBUG-103100
Change-Id: Ifa00a9bae24767eb42d6fa5da0ffdbaa230d5d96
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
The full name should obviously indicates what the feature is, no need to specify LTO explicitly. And it also make the line a little longer than it should be. But we should keep LTCG (Link Time Code Generation) in case the user don't know LTCG also refers to this feature.
Change-Id: I95a2e5335d0b76c40c67f0484d77a4d50f5fd85f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Scanning of the Qml imports should be run if either Qml root paths or
.qrc files are specified for androiddeployqt.
Task-number: QTBUG-106939
Pick-to: 6.2 6.4
Change-Id: I3229ec6d3f2ac17ef751b4a6ed74e8e98db7465e
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This improves moc's support for nested inline namespaces, so that code
containing them will not break compilation.
For simplicity, we allow nested inline namespaces even in C++17 mode
(the actual C++ compiler will reject the code anyway, and probably with
a better error message than moc could output).
moc still has no real awareness how inline namespaces work, but that is
a preexisting issue.
Pick-to: 6.4 6.2
Fixes: QTBUG-106920
Change-Id: I7b415a99133575f101bc81d01d4670a5f752917f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
When it was added, along with the type it describes, it wasn't added
to the QDoc-only fake version of Type's declaration, or to the \enum's
list of \value entries. There being no clear reason for those
omissions, I'm presuming to guess they were just an oversight.
This amends commit c7ce1bc05c which was
included in Qt 6.0.0.
Pick-to: 6.2 6.4
Change-Id: I1bf9fe0f0a31219a888666550a197e479d8eadc1
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
The real Type has several "administrative" members beside LastCoreType
and LastGuiType, but only these two appear in the qdoc-only fake
version of Type, only to be \omitvalue'd out in the docs. Save the
perpetual "need" to keep updating them with each new addition (they
weren't even in sync with the real versions anyway) by removing them.
Change-Id: If7c5da87655a2da5c7f29f394c9dd9921ff0c1a7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Use OpenSSL 3.0 as a provider of all hashing algorithms, except the
BLAKE2b and BLAKE2s. BLAKE2b and BLAKE2s algorithms support a variable
length digest, but OpenSSL's implementation outputs only a digest of a
fixed length (the maximum length supported). This is 512-bits for the
BLAKE2b and 256-bits for the BLAKE2s and for that reason we still use
the original implementation.
[ChangeLog][QtCore][QCryptographicHash] Uses the OpenSSL 3.0
implementation now, where available.
Change-Id: Ia4e4139b92ea9b40a18aa480aa5c06562178f916
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This appears to have been overlooked. It's just the copy-construction
of a QSharedDataPointer, which is declared noexcept, so transparently
safe.
Change-Id: I85e1f750be26dfa94d52dfc0b14efe9c1857d645
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Add latest versions that were missing in QOperatingSystemVersion and
the version names used with QSysInfo::prettyProductName().
Change-Id: I933158898f9ec39f1c224e15fd6456b7e0546a67
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Addressing a comment from the review of QTBUG-98434. QSettings has been
already ported to use QAnyStringView keys so use C literals to call
beginGroup, setValue and value.
Since the constructor of QSettings does not have an overload for
latin1 strings, change the calls to use u""_s instead of _L1.
Task-number: QTBUG-103100
Change-Id: I9407ac8cf9d4c6f045a774b2abe7541086401b07
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
This provides a better size hint than the pseudo-random mod 4GiB
number used before. In particular, it will make the Qt 5
implementation fail fast, because UINT_MAX will be recognized as a
non-representable size right away.
Pick-to: 6.4 6.3 6.2
Task-number: QTBUG-104972
Change-Id: I6010f558eb71bbf02fb0f71bee1b3b1a15ec6e3f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
While this is a behavior change, we never documented that we'd return
an empty instead of a null QByteArray in this situation. Indeed,
returning bazip, with its fully-preserved capacity, is an expensive
way of signalling an error condition.
Conclude that this is not what the original author wanted and return a
default-constructed byte array instead, leaving bazip and its excess
capacity to be destroyed before the return from the function.
Pick-to: 6.4 6.3 6.2
Task-number: QTBUG-104972
Task-number: QTBUG-106542
Change-Id: I2ee1fc6fdbb9da28f1987b16915516b51bb348c3
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
(The old one was 404 page not found)
Pick-to: 6.4 6.3 6.2 5.15
Change-Id: I06818443a1f89709b749ea66c05b4023e33b15d0
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>