Commit Graph

60876 Commits

Author SHA1 Message Date
Amir Masoud Abdol
684d301983 Disable Unity Build for Examples
Pick-to: 6.5
Task-number: QTBUG-109394
Change-Id: I20999512e557db618c14e36d62317680bc17c43a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-06 14:28:24 +01:00
Kaj Grönholm
a2dccbafcf Clear invalid QApplication styleOverride
When QStyleFactory::create() is unable to find/create an override style
set with QT_STYLE_OVERRIDE or "-style", clear the styleOverride. Reason
for this is that Qt Quick Controls otherwise tries to use this invalid
style.

Task-number: QTBUG-100563
Pick-to: 6.5
Change-Id: I48fa6c211ce27d902e2eaf90c34cb5694ad7ecfd
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-04-06 16:28:23 +03:00
Timothée Keller
8009561029 Windeployqt: Prevent '.' and '..' from being added to lconvert
If windeployqt is not able to retrieve any translation information
from the catalog, the translationNameFilters will be empty. This allows
the '.' and '..' folders to be passed to lconvert which in turn causes
an error for the whole deployment. Added a check for the filters being
empty, and a warning in case we have to preemptively return from the
translation deployment.

Fixes: QTBUG-112204
Pick-to: 6.5
Change-Id: I0d114186e630cc3696250006fa093c4c596eb40d
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-04-06 12:18:34 +02:00
Timothée Keller
a81fa2047b Windeployqt: Simplify infix detection for --libinfix builds
Removed fetching the infix through the QtCore Module, since
it is already provided by qtpaths -query

Pick-to: 6.5
Change-Id: I844305fc66b21af094724dd3f516078447ee1dd2
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2023-04-06 11:18:12 +01:00
Friedemann Kleint
aa6339594e Fix qdoc warning about missing QMultiMap code snippet
Bring back missing code snippet src_corelib_tools_qmultimap.cpp#19,
fixing:

qtbase/src/corelib/tools/qmultimap.qdoc:1007 Command '\snippet (//!
[19])' failed at end of file
'qtbase/src/corelib/doc/snippets/code/src_corelib_tools_qmultimap.cpp'

As a drive-by, use a more modern form, avoiding repeated invocation
of end().

Amends 3236b64db8.

Task-number: QTBUG-105109
Pick-to: 6.5 6.2
Change-Id: I09635eedd773ed16517773a9bf282b0386beba26
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-04-06 10:43:22 +02:00
Christian Ehrlicher
be8b3efae6 SQL/QSqlRelationalTableModel escape the auto-generated alias
The alias created by QSqlRelationTableModel to avoid duplicated field
names was not escaped which lead to an inconsistency in the returned
alias name from the database (e.g. postgres lowers all unescaped column
names).
Also adjust the test for QSqlRelationTableModel to use escaped table
names for it's tests and fix it for QIBASE.

Change-Id: I01426320c0c1a70cb9bf8e6dfa2f8b07dbb1c06b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-04-06 05:41:16 +01:00
Christian Ehrlicher
39fab09aad SQL/MySQL: add option MYSQL_OPT_TLS_VERSION & MYSQL_OPT_SSL_MODE
Add the two options MYSQL_OPT_TLS_VERSION and MYSQL_OPT_SSL_MODE to
properly support encrypted connections to MySQL 8.0 servers.
MYSQL_OPT_SSL_MODE will not work when compiled against the MariaDB
C-Connector since it's not supported by the MariaDB client.

[ChangeLog][QtSql][MySQL] Added the two new connect options
MYSQL_OPT_TLS_VERSION and MYSQL_OPT_SSL_MODE.

Fixes: QTBUG-84797
Change-Id: Iec7d682fc00072ce5b2a824c4ea00fca4575a93e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-04-06 04:41:15 +00:00
Volker Hilsheimer
27867de8ca Permissions: respect context object's thread and life time
When a context object is provided, then callers expect that the functor
or slot is executed in the thread of the context object. And if the
context object has been destroyed by the time the permission response
is received, the functor shouldn't be called at all.

To implement this, we either have to plumb the call back through a
signal/slot connection and benefit from QObject's infrastructure. This
is not practical here, as we don't have an "engine QObject" that would
emit a signal.

Instead, we can create a QMetaCallEvent explicitly, following what we do
in e.g. QHostInfo, and using a temporary QObject that handles the event
to then call the functor.

Add test coverage.

Pick-to: 6.5
Change-Id: Id878e45b304857304165ab4a7c6aae76fbee46ce
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-04-06 00:21:50 +02:00
Alexey Edelev
ef27cc126c Guard qopenglcontext_p.h with the QT_NO_OPENGL check
QtGui/private/qopenglcontext_p.h needs to be guarded to avoid
compilation errors when building Qt with openGL disabled.

Fixes: QTBUG-112656
Pick-to: 6.5
Change-Id: I21d120ed2bdb22e7aa2338e396a9a426adb80dbe
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-04-05 21:30:29 +02:00
Amir Masoud Abdol
b408bae864 Remove unused code in qmake, triggering -Wunused-but-set-variable
This seems to be a leftover from a refactoring done a few years ago.

Pick-to: 6.5
Change-Id: I2bd2700aca3a5a6104886eaa0957226786ad615a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-05 19:36:55 +02:00
Volker Hilsheimer
9476283edb Docs: document QTextFormat::Property::ListStart
Fix qdoc warning by documenting the new value.

Change-Id: I8c289cf103ccf008b6592a9e6e940d02e5cab7b3
Reviewed-by: Andreas Eliasson <andreas.eliasson@qt.io>
Reviewed-by: Safiyyah Moosa <safiyyah.moosa@qt.io>
2023-04-05 19:05:04 +02:00
Fabian Kosmale
63b350b2ed cmake: Indicate that export headers are autogenerated
This should help anyone stumbling upon them to realize that they should
not be modified directly.

Change-Id: Ib5218babdb8943646e222342f1040e5bba693076
Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-05 18:25:06 +02:00
Rami Potinkara
792a5b15c9 Android: fix cutout area rendering on Android 9 and above
Fix rendering to cutout areas so that they are filled both
in portrait and landscape modes.

Fixes: QTBUG-96877
Pick-to: 6.5 6.2
Change-Id: I8a29557236ed1b7084afc902dc1fb42d9535ef32
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
2023-04-05 15:59:22 +00:00
Joni Poikelin
588eab99d2 Fix some extra semicolon warnings
Fixes: QTBUG-112648
Pick-to: 6.5
Change-Id: I71446459c7fd6018ecb4deb60a7b9b412c0972ba
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-04-05 18:59:22 +03:00
Assam Boudjelthia
a43f349f9c Android: allow using string based versions in compileSdkVersion
Some platform sdk packages have names that contains non-integer
characters such as android-33-ext5 or android-UpsideDownCake
which fail building with androiddeployqt because build.gradle
expects an integer only. This allows using string based versions
and also fallbacks to setting an integer only value if it finds
that the build.gradle of the project is still explicitly
converting to integer (this to avoid breaking existing projects).

Fixes: QTBUG-112465
Pick-to: 6.5 6.2 5.15
Change-Id: If8cfc0fb84f0880a43644dc0a4188671736d3e21
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2023-04-05 12:38:15 +01:00
Assam Boudjelthia
4521dfe75a Android: fix manual deployment with ANDROID_DEPLOYMENT_DEPENDENCIES
Fix the qtforandroid (i.e. libplugins_platforms_qtforandroid) check
and avoid calling llvm-readobj on non-library files and only add them
to the dependency list.

Task-number: QTBUG-94232
Pick-to: 6.2 6.5
Change-Id: Id1a415b6d9834daaf5337e9bd15e7daf69fd574f
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2023-04-05 12:38:15 +01:00
Assam Boudjelthia
b92854aed3 Android: don't break when finding opengl plugin
avoid breaking when looking for the android plugin when the dependencies
include opengl lib, since that was valid only in the early days where
the Android plugin was separated into two raster and opengl. Now, that
assumption is wrong and might affect the way the manual dependency
works.

Task-number: QTBUG-94232
Pick-to: 6.2 6.5 5.15
Change-Id: I025a5c8b2b064bb43a356a4ad5cb4a1ada41b09b
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2023-04-05 12:38:15 +01:00
Ivan Solovev
028c367f75 Deprecate QtFuture::makeReadyFuture()
[ChangeLog][Deprecation Notice][QtCore] The QtFuture::makeReadyFuture()
method and all its specializations are deprecated since Qt 6.10.
The reason for the deprecation is that the method has a
makeReadyFuture(const QList<T> &) overload, which behaves differently
from all other overloads (including other non-const ref QList
overloads).
Use QtFuture::makeReadyVoidFuture() when you need a ready void QFuture,
or QtFuture::makeReadyValueFuture() when you need to propagate the
input type to the returned QFuture, or QtFuture::makeReadyRangeFuture()
when you need to create a multi-value future based on an input
container.

Fixes: QTBUG-109677
Change-Id: I55125269989df0a02840d5ddd5763ef5f1070df5
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-04-05 13:38:15 +02:00
Ivan Solovev
9b4b32ec98 Long live QtFuture::makeReadyVoidFuture() and QtFuture::makeReadyValueFuture()
[ChangeLog][QtCore][QFuture] Added QtFuture::makeReadyVoidFuture()
and QtFuture::makeReadyValueFuture().

Basically, these methods behave like QtFuture::makeReadyFuture(), but
QtFuture::makeReadyValueFuture() does not have a "const QList<T> &"
specialization returning QFuture<T> instead of QFuture<QList<T>>,
which allows it to always behave consistently.

This patch also introduces usage of the new methods around qtbase.

Task-number: QTBUG-109677
Change-Id: I89df8b26d82c192baad69efb5df517a8b182995f
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-04-05 13:38:15 +02:00
Ivan Solovev
7f38f9f394 Long live QtFuture::makeReadyRangeFuture()
[ChangeLog][QtCore][QFuture] Introduce
QtFuture::makeReadyRangeFuture(). This method takes a container
which has input iterators and returns a multi-value
QFuture<ValueType>, where ValueType is the underlying type of
the input container.

This commit also replaces the usage of buggy
QtFuture::makeReadyFuture(const QList<T> &) overload with the new
method.

Task-number: QTBUG-109677
Change-Id: I019e62eac74c643d88a65b3cc0085bc7c33bc712
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-04-05 13:38:14 +02:00
Ivan Solovev
10242a8250 QPermission: return the combined result of a permission group on Android
QPermission might resolve to multiple underlying permissions on Android.
The existing code was only using the first permission from the list
in checkPermission(), and also checked only for the first result
returned by requestPermissions().
This can lead to a situation when only one of the requested permissions
is granted, but the API reports that all required permissions are
granted.

This patch fixes it by checking the combined status of all permissions.
If at least one of the permissions is denied, the whole list of
permissions in considered denied.

Fixes: QTBUG-112527
Pick-to: 6.5
Change-Id: I243b73bb5a842197cd0ef70937b8eac344ff9596
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2023-04-05 12:34:15 +02:00
Thiago Macieira
2f226336a2 QPluginLoader: don't instantiante multiple, identical instances
This can happen if the same project has two or more Q_IMPORT_PLUGIN
macros in their source. And that can happen when converting from qmake-
based builds to CMake, as qmake didn't generate a source file with the
macro but CMake does.

[ChangeLog][QtCore][QPluginLoader] staticInstances() will not call
duplicated registrations of the same instantiation function, which can
only happen as a result of duplicated Q_IMPORT_PLUGIN for the same
plugin name.

Fixes: QTBUG-102745
Pick-to: 6.2 6.5
Change-Id: Idd5e1bb52be047d7b4fffffd174fb9dd62d8583d
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2023-04-05 00:29:16 -07:00
Christian Ehrlicher
a74059f2bd SQL/PSQL: remove non utf-8 support
PostgreSQL supports the utf-8 encoding ('UNICODE') since at least
version 7.3 which is the oldest version we support. Therefore remove the
non utf-8 codepath completely.

Change-Id: I64b1a4e7b0b85141fe13f5f57e6f35f9eb7d542e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-04-05 05:37:39 +01:00
Christian Ehrlicher
dbcad6392b SQL/Benchmarks: cleanup
The benchmarks were only copied from the tests without a proper cleanup
- therefore clean them up now.

Change-Id: I0285de3fd2b67c21e732d7f3f9d1f4937965be81
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-04-05 05:37:32 +01:00
Alexey Edelev
db705d0794 Fix multi-thread GNU make build
Add the timestamp file creation for configure-time executables.
GNU make treats the custom command artifacts as 'dirty' when one of
the expected outputs is missing. It displays the following disclaimer

  Deleting primary custom command output ... because another output
  ... does not exist.

which leads to the configure-time executable rebuild. The removal
and rebuild is not in sync with the dependency lookup for other
targets(thanks to GNU make) so targets that depend on the
configure-time executables simply miss the dependency at build time.
This happens to syncqt and '_sync_headers' targets. So creating
the timestamp file at configure time indicates to GNU make that
there is no need of removing the syncqt executable and the build
process doesn't fail because of missing dependency.

Fixes: QTBUG-112018
Fixes: QTBUG-111163
Pick-to: 6.5
Change-Id: I6c1e8cae522104cf50d0376fa2b5653a6770f9ca
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-04-05 01:04:28 +02:00
Assam Boudjelthia
65d79fb5f3 Android:CMake: use correct key for manual deployment dependencies
androiddeployqt expects a key deployment-dependencies for dependencies
provided by QT_ANDROID_DEPLOYMENT_DEPENDENCIES.

Pick-to: 6.2 6.5
Task-number: QTBUG-94232
Change-Id: I3fc32e0677db3ee69e24b3aeca74bedd9c7ced58
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-05 00:04:28 +01:00
Carl Schwan
ac973cb74f Implement setBadgeNumber for xcb backend
This use the unity launcher specification which is defined here
https://wiki.ubuntu.com/Unity/LauncherAPI

This spec is used by Plasma and Unity. On other Linux desktop platform
where the unity DBus interface is not detected this is no-op.

Change-Id: I81a9b95fe4886ad597bb4e775641926b161c49a5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: David Edmundson <davidedmundson@kde.org>
2023-04-04 23:53:37 +02:00
Ilya Fedin
447f3ade9a Revert "D-Bus system tray: properly check whether StatusNotifierHost available"
This reverts commit 23e9b57e3d.

The original commit was made based on a KDE workaround for
libdbusmenu-qt crash, but Qt is not using libdbusmenu-qt, Qt is not
watching for StatusNotifierHost registration and Qt is not capable
to switch backends on the fly leading to tray support being
not detected on Plasma Wayland sessions and falling back to the poor
legacy protocol on X11.

Task-number: QTBUG-94871
Pick-to: 6.5
Change-Id: Ic3e4a9c2d6db00299ed1f2b14043c4b675fb8ccc
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-04-05 01:27:48 +04:00
Ilya Fedin
9d031caf09 IBus: fix missing Q_SLOTS
The following warning is printed on systems using IBus:
   qt.dbus.integration: Could not connect "org.freedesktop.IBus" to globalEngineChanged(QString)

It seems either the connection has never worked or moc has changed

Pick-to: 6.5 6.2
Change-Id: Ib96229c85c975603d28c76163fa144ddfe827b18
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-04-05 01:27:47 +04:00
Christian Ehrlicher
7763b83c4c Widgets/Styles: pass correct style option struct to subelements
QHeaderView is using QStyleOptionHeaderV2 which should later be used in
the subelements drawings. But since the subelement rect must be
adjusted, a copy is done - sadly only to QStyleOptionHeader so we're
loosing the V2 information.
Therefore explicitly check if it's a V2 and copy it over to the correct
structure.

Pick-to: 6.5 6.2
Fixes: QTBUG-97571
Change-Id: I1482f118e2114cd6ef21c2a800785bd9910c1c5b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-04-04 19:23:37 +02:00
Axel Spoerl
b932f798a2 QSslCertificate: Add property names to debug operator<<
When qDebugging a QSslCertificate, its properties are printed without
property names. That makes it difficult to identify which output string
correlates to which data element.

This patch adds the property name to each output field.

Pick-to: 6.5
Change-Id: Icdc54520e048f5fa03e8d9ed0ab2a42371e5a00d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-04-04 19:23:33 +02:00
Christian Strømme
f1dc42e19e Fix crash in QIOSTextResponder
When a window that has focus is destroyed we can end up calling
into nextResponder where the focus window is in the process of being
destroyed, so make sure we have a window with a valid platform window
before calling winId()

Fixes: QTBUG-110019
Pick-to: 6.5 6.4
Change-Id: I704c3597b46e465ddf2605bdb71a21cb36cb2a26
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-04-04 18:14:56 +02:00
Thiago Macieira
87103e04e9 QMultiHash: fix missing update to m_size
QMultiHash has access to two sizes: one of them is shared with QHash,
stored in QHashPrivate::Data::size, which counts keys; the other, which
is what our public size() function returns, is stored in
QMultiHash::m_size and counts plain (key,value) entries. We forgot to
update it in the non-const operator[] that created a node.

I've reviewed the rest of the code and can't find any more places where
the item count may be changed and m_size isn't updated.

[ChangeLog][QtCore][QMultiHash] Fixed a bug that caused an element that
was created by operator[] to not be counted, resulting in a hash map
with an incorrect element count and which could cause an assertion
failure depending on how the hash was later mutated.

Fixes: QTBUG-112534
Pick-to: 6.2 6.4 6.5
Change-Id: Idd5e1bb52be047d7b4fffffd17527ec274e1d99e
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
2023-04-04 08:59:32 -03:00
Cajus Pollmeier
59466abc08 Fix default "credential" flag for WASM HTTP connections
In some cases, you might want to set the "credentials" flag for HTTP
requests. But you can't use it everywhere, because it may break the
use of public APIs. As a result, you're running into

Reason: Credential is not supported if the CORS header
        'Access-Control-Allow-Origin' is '*'

on the client side. See

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSNotSupportingCredentials

for details.

This commit restores the former default "false", in order to make
WASM connections that worked prior 6.5 work again.

Fixes: QTBUG-112478
Pick-to: 6.5
Change-Id: I46f6a374c07038608c3484ac831a1dc5999fb120
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2023-04-04 13:41:06 +02:00
Amir Masoud Abdol
da2b0307f8 Replace STREQUAL cases with variable checks
As I was investigating the NO_UNITY_BUILD_SOURCES issue, I realized that
we don't need to pass these quoted, especially now that we have moved
to `cmake_parse_arguments(PARSE_ARGV`, and we can check their existence
just by checking the `arg_*`, and that should be sufficient.

I also left a warning that we are aware of this.

Pick-to: 6.5
Change-Id: I4d939e80dc4671ea3ae9dc61516279f69ba2c5a5
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-04 08:55:02 +02:00
Allan Sandfeld Jensen
c080d1e64d Create any callable using QRunnable::create
The overhead of making new custom classes appears to be less than
constructing a generic std::function.

[ChangeLog][QtCore][QRunnable] QRunnable::create can now take
non-copyable functions as argument.

Task-number: QTBUG-112302
Change-Id: Ied870f13ca6c7eaa14ed6eff9c4e676c7b73881c
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-04-04 01:05:47 +02:00
Ilya Fedin
5c4a94ba85 Make flatpak check more backward compatible
Since 68de00e0d4, the check doesn't work
with flatpak versions lesser than 1.13.1. Checking the file in the root
directory works since flatpak 0.6.10.

Pick-to: 6.5 6.2
Change-Id: Icc83ea5de4a962b52a737c9842248df3b60b1331
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-04-04 01:21:51 +04:00
Paul Wicking
2f35879649 Doc: Add \examplecategory macro
Examples in Qt's codebase must be tagged with specific categories
such that Qt Creator can group them thematically. This can be done
by way of using the `\meta category` construct in QDoc.

At the same time, we want the generated documentation to group the
examples by the same logic as in Qt Creator. Hence, QDoc was modified
to implicitly add a group for each category that is used in a
`meta category` invocation.

By design, QDoc exposes ways to list groups to users, but no way to list
the \meta command invocations. Letting QDoc implicitly add a group for
categories passed to the \meta command as a side-effect, therefore breaks
with the principle of least surprise and the single responsibility
principle.

An alternative solution makes use of QDoc's existing support for code
generation through macros. This patch introduces the macro
`\examplecategory` as a global macro throughout Qt to achieve the same
effect as the aforementioned change to QDoc. The macro takes an argument
enclosed in curly braces. This argument is the example category name. It's
used as meta information in the manifest files consumed by Qt Creator, and
added as the category group name for the QDoc side at the same time.

The introduction of this macro allows reverting the change to QDoc
itself, while maintaining feature parity for both Qt Creator and the
generated content.

Task-number: QTBUG-111891
Pick-to: 6.5
Change-Id: I311b98168253b45ac456ff3c1824db3d835191a9
Reviewed-by: Luca Di Sera <luca.disera@qt.io>
2023-04-03 21:37:12 +02:00
Christian Ehrlicher
5a334b3d2b SQL/tests: Add testcase for QODBC toSQLTCHAR()
Add a testcase for toSQLTCHAR() to make sure to pass the correct number
of encoded characters to the odbc functions.

Pick-to: 6.5
Task-number: QTBUG-112375
Change-Id: Ib67fab678fc3d0b098aedfc6fa9ec2139f2e75c7
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-04-03 17:52:32 +02:00
Christian Ehrlicher
2f709952cf QSqlError: also compare nativeErrorCode() in operator==() / operator!=()
A QSqlError is not equal when the native error code differs. The
database and driver text should not be considered during the
comparison because they might differ due to e.g. different locales.

[ChangeLog][QtSql][QSqlError] The comparison operators have been fixed to
take both error type and error code into account.

Change-Id: Ie7511f183f88dd454eb165c6ff237e51b79d1c08
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-04-03 15:52:03 +00:00
Volker Hilsheimer
07f7ed2bad Fix warning when comparing size_t with qsizetype
Change-Id: Id8e7ae20aea99f2acb03b665484615bf7f932873
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2023-04-03 17:12:18 +02:00
Tor Arne Vestbø
2bffce5719 Darwin: Document that permissions can only be requested in GUI apps
To request them in QtCore only apps we need to use the CoreFoundation
event dispatcher on the main thread, which is currently blocked by
issues in dealing with deferred delete events.

Pick-to: 6.5
Change-Id: I9fe2575c2b3527b1b83fac208cfed6a0d7a8cb42
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2023-04-03 14:22:07 +02:00
Amir Masoud Abdol
ed4d2917ae Use NO_PCH_SOURCES to exclude files
We should be able to just use NO_PCH_SOURCES under MINGW condition
and get the same result.

P.S. The problem with `qwindowspointerhandler.cpp`, most likely caused
due to symbol collision with `qwindowsmousehandler.cpp`. We've
encountered it again when we were building with unity.

Pick-to: 6.5
Change-Id: I20a5091d5d1a329228b5ddb4694f5fd61d803554
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2023-04-03 12:41:14 +02:00
Amir Masoud Abdol
7e074bd8a0 Use Qt CMake APIs to exclude files from Unity Build
This is a bit of a cleanup, mainly around unity build, and a few other
minor things:

- I replaced the direct inclusion of sources files using
  `set_source_files_properties`, and instead used
  `NO_UNITY_BUILD_SOURCES` when possible. In most cases, they are being
  excluded in their respective `qt_internal_extend_target` but sometimes
  I had to make a new extension.
- In few cases, we had to manually exclude the NO_PCH files, so, I
  instead passed them directly to the NO_PCH_SOURCES which also exclude
  them from the unity build as well.
- Removed a few unnecessary ""

Pick-to: 6.5
Task-number: QTBUG-109394
Change-Id: I466576592c1d115a2da4d88672c1e4b9f995f2ed
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-03 12:41:14 +02:00
Amir Masoud Abdol
c19504e708 Clean up NO_UNITY_BUILD instruction
We can now use NO_UNITY_BUILD_SOURCES instead, and we only need to
exclude one of the file to avoid the exclusion.

Task-number: QTBUG-109394
Pick-to: 6.5
Change-Id: I33642eece77e362f8a1de7400c14a30da7889239
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-03 12:41:14 +02:00
Amir Masoud Abdol
936c3bd224 Add NO_UNITY_BUILD support to qt_internal_add_app
Task-number: QTBUG-109394
Pick-to: 6.5
Change-Id: Iefeb3b846cd889d6ae0aa786f9ae23fbfc811b64
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-03 12:41:14 +02:00
Amir Masoud Abdol
c763e74355 Add description to cmake_automoc_parse
It was just missing, and was ending up being Qt cmake_automoc_parse.

Pick-to: 6.5
Change-Id: I710e22bd86404d412dbf45aa960c924dd148fafc
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-03 12:41:14 +02:00
Amir Masoud Abdol
ed85df8008 Improvement to NO_UNITY_BUILD_SOURCES, and fix related bugs
The source of the problem was in `qt_set_target_info_properties` which
was not able to process the NO_UNITY_BUILD_SOURCES, and therefore
leaking it into the `TARGET_COPYRIGHT`, ie., the last argument. So, I
decided to pass Unity Build arguments before them, and closer to
SOURCES, which is nicer to read, and avoid similar situation. And
I reverted the work around in the amend commit, and passing the
arguments normally.

This happens because we pass an unfiltered ${ARGN} from
qt_internal_add_executable to qt_set_target_info_properties and that the
current change is merely a workaround that ensures they get
circumstantially filtered out, because the NO_UNITY_BUILD_SOURCES option
appears before any of the first TARGET_ props.

Amend cd12c1f332

Task-number: QTBUG-99238
Task-number: QTBUG-109394
Pick-to: 6.5
Change-Id: Idb37937cf53e708425402c90f55bda8816e27f29
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-03 10:41:13 +00:00
Alexey Edelev
4105ff809c Avoid syncing and installation of non-module headers
Add CMake rules to skip syncing and installation of header files
that are recognized as non-module. Previously these rules were in
syncqt.cpp only and CMake ignored them when creating the installation
rules. Now we skip any post processing for the header files that:
- are public and located in the '3rdparty' directory unless the module
  is the 3rdparty one
- are not a part of the module source tree unless they are generated
- have the _qt_non_module_header property set to TRUE

Pick-to: 6.5
Change-Id: I045cfc2b8074f0c086c975aae95f14845e3edfef
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-04-03 12:41:13 +02:00
Ivan Solovev
7477dec2d4 QBluetoothPermission: support new Android permissions
Teach QBluetoothPermission to understand new fine-grained Bluetooth
permissions, which were introduced for Android 12.

Also request the ACCESS_FINE_LOCATION permission together with
Bluetooth permissions, because it is required for Bluetooth to work
properly.

At this point QBluetoothPermission simply requests all Bluetooth
permissions, because we do not (yet) have a public API to
distinguish between them.

Task-number: QTBUG-109964
Change-Id: I98d304eb59c238656d6a92917f611c3b3ba9e760
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Juha Vuolle <juha.vuolle@qt.io>
2023-04-03 09:53:00 +02:00