Commit Graph

61604 Commits

Author SHA1 Message Date
Samuli Piippo
84e6d89c1b treeview: fix build without accessibility
Amend 6a4afebc5c and add ifdefs around
use of Accessibility.

Pick-to: 6.5
Change-Id: Ib40132dabeec9c3cff2f71dd5182eb1715b9c76a
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-24 18:29:14 +03:00
Christian Ehrlicher
048a68c1e9 SQL: Make QSqlDatabase::DriverDict creation thread-safe
Make the QSqlDatabase::DriverDict thread-safe and make sure it's
properly cleaned up on destruction.

Pick-to: 6.5 6.2 5.15
Fixes: QTBUG-112961
Change-Id: I1ff70e477579231754ef829fdede944d6042894d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-24 17:27:55 +02:00
Yuhang Zhao
68f35a571a QAbstractScrollArea: don't call QScrollBar::sizeHint unless we need to
We only take the scrollbar's extent into account if the respective
policy is Qt::ScrollBarAlwaysOn, so don't compute it otherwise.

Done-with: Ilya Fedin <fedin-ilja2010@ya.ru>
Pick-to: 6.5
Change-Id: Idaf9404860d1f778d7a89b19d9f7fc16201ce29e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-24 11:25:29 +00:00
Yuhang Zhao
f7511171ac WASM: fix build error
CMake gives me an error if the double quotation marks are missing.

Pick-to: 6.5
Change-Id: I83a6037dde7503bf2e6fa9316aed732d5ef08576
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-05-24 11:23:18 +00:00
Yuhang Zhao
8cae710c6c WASM: fix wrong parameter passed to CMake function
The function needs TRUE/FALSE, not NO_EXCEPTIONS.

Change-Id: I3e173e26fafc02996577466afd09e85351a0380f
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-05-24 11:22:47 +00:00
Thorbjørn Lund Martsum
178da993a0 QDialog - avoid potential crash
In case the dialog is deleted while signals are emitted, we should
likely prevent a crash. Now, obviously it would be remarkable
if people deleted the dialog meanwhile, but it can also happen if the
attribute WA_DeleteOnClose is set and QAppliction::processEvents() is
called in a slot connected to accepted or rejected.

Pick-to: 6.5
Change-Id: Iafa708dec2c1064ea890f222ff5a8d15c94cbe4c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-24 11:08:35 +00:00
Mårten Nordheim
c891d16490 Skip diffie-hellman parameter test when not supported
Pick-to: 6.5
Change-Id: I0c21aeea813ee48f8c62689dafce6f7fb9620001
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-05-24 13:08:34 +02:00
Eskil Abrahamsen Blomfeldt
baba1f1b39 Change QFont::fontFeatures() -> QFont::features()
The 'font' is redundant here, and we don't prefix any other
properties like that.

Change-Id: Iee1f492b232e5bbcae399b472d7478406d8a81ef
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-05-24 13:05:02 +02:00
Laszlo Agocs
413e74e9a5 Move qopenglwidget example to manual tests
Pick-to: 6.5
Change-Id: I76e6377008484a7b17c65e3c03139a0fb2fc5c34
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2023-05-24 12:58:27 +02:00
Bartlomiej Moskal
a273ea7f41 Android: fix problem with release package for cmake based builds
After 9efaf8bae9 commit there was no
possibility to create release package for cmake based builds.
The new cmake variable (QT_ANDROID_DEPLOY_RELEASE) was already added to
allow turning on release build manually

This commit sets the --release flag automatically for androiddeployqt
tool for Release, RelWithDebInfo and MinSizeRel build types.

The --release flag is not set automatically if QT_BUILD_TESTS variable
is set. This is the workaround for tests. Release package need to be
signed. Signing is currently not supported by CI. What is more, also
androidtestrunner is not working on release APKs.

Fixes: QTBUG-112921
Fixes: QTBUG-108132
Task-number: COIN-882
Pick-to: 6.5
Change-Id: Ia81465f4a0f0e5b8dfa50c44028658f7a2346c1a
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2023-05-24 12:58:27 +02:00
Morten Sørvig
433d67e767 Make QOpenGLWidget work with QT_WIDGETS_HIGHDPI_DOWNSCALE
Get the DPR from QWidget::metric(), which has a code path
for handling the QT_WIDGETS_HIGHDPI_DOWNSCALE case.

Fixes: QTBUG-111105
Pick-to: 6.5
Change-Id: I821cbdf00423de211719173ae5c0af7b76594f60
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2023-05-24 06:55:57 +00:00
Amir Masoud Abdol
7367cba9eb Compile Network with NOMINMAX
On Windows, when building using Unity Build, min/max macro form
`window.h` makes it to some files, and messes up evaluation of code like
`std::numeric_limits<T>::max()` which leads to compilation error.
We don't use min/max macros in Qt base, and it might be the time to pass
NOMINMAX to our targets.

Pick-to: 6.5
Task-number: QTBUG-109394
Change-Id: Ia1ff5de36538075264c8556ef3b0416f3c15168c
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2023-05-24 08:39:53 +02:00
Volker Hilsheimer
db2f4d5e46 Doc: fix links to examples
Remove the xml prefix, only reference the example by title. The
streambookmarks example is gone, so remove that link.

Change-Id: Ie3a77be24f60fca9e8f9ef0323f0ea5ffc904075
Reviewed-by: Safiyyah Moosa <safiyyah.moosa@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-05-24 07:04:31 +02:00
Volker Hilsheimer
8e46ac8d05 Doc: fix warnings from parameters not matching the documentation
Change-Id: I6588336e12db0a3af9b9dfd2ab22a3e1b7c54238
Reviewed-by: Safiyyah Moosa <safiyyah.moosa@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-05-24 07:04:31 +02:00
Thiago Macieira
ecaf93c366 QDnsLookup: centralize printing of warnings
Any resolution error that is caused by an invalid request, invalid reply
(only happens on Unix), or a system error can be printed as a warning,
using category "qt.network.dnslookup". Those warnings are disabled by
default.

Change-Id: I5f7f427ded124479baa6fffd175fc40b3e21c969
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-05-23 21:23:45 -07:00
Thiago Macieira
f5b584022b QDnsLookup: replace Q_GLOBAL_STATIC with Q_APPLICATION_STATIC
Replaces a lot of the manual content.

Change-Id: I3e3bfef633af4130a03afffd175e839f4b05975c
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-05-23 21:23:45 -07:00
Thiago Macieira
9a4eb45df1 QDnsLookup: simplify the processing of the runnable and reply
Change-Id: I3e3bfef633af4130a03afffd175e827dce2af966
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-05-23 21:23:44 -07:00
Thiago Macieira
282b078fca tst_QDnsLookup: add a test for setNameserver
I had to write a sample query test to ensure that those servers can be
reached. They can't from the my corporate network, for example:

QDEBUG : tst_QDnsLookup::setNameserver(normal) QHostAddress("8.8.8.8") discarded: "Network operation timed out"
QDEBUG : tst_QDnsLookup::setNameserver(normal) QHostAddress("2001:4860:4860::8888") discarded: "Network unreachable"
QDEBUG : tst_QDnsLookup::setNameserver(normal) QHostAddress("1.1.1.1") discarded: "Connection refused"
QDEBUG : tst_QDnsLookup::setNameserver(normal) QHostAddress("2606:4700:4700::1111") discarded: "Network unreachable"

This will also take care of ignoring the IPv6 servers on systems without
it (as above).

Change-Id: I3e3bfef633af4130a03afffd175de18af24add70
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-05-23 21:23:43 -07:00
Thiago Macieira
bce7009f55 QDnsLookup: add support for setting the port number of the server
I couldn't make my Windows 10 or 11 query a non-standard port. It kept
complaining about "The parameter is incorrect.", so as a result the unit
test doesn't actually test the new feature there. I can't find a single
example of this on the Internet; my speculation is that the backend API
that DnsQueryEx uses does not support setting port numbers
(DnsQuery_{A,W} didn't offer that option).

[ChangeLog][QtNetwork][QDnsLookup] Added setNameserverPort().

Change-Id: I3e3bfef633af4130a03afffd175d60a581cc0a9c
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-05-23 21:23:42 -07:00
Thiago Macieira
029e0bf552 QDnsLookup: add a number of functions to simply setting error conditions
This also updates a few messages and transfers the translation context
from QDnsLookupRunnable to QDnsLookup.

Change-Id: I3e3bfef633af4130a03afffd175e86715e4a25e3
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2023-05-23 21:23:42 -07:00
Thiago Macieira
c5c7712910 QProcess/Unix: allow startDetached() to also use vfork()
The same arguments that applied to the regular process-starting code in
commit e1a787a76e (6.4) apply here too.

Task-number: QTBUG-104493
Change-Id: Icfe44ecf285a480fafe4fffd174da1b05d0054bc
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
2023-05-23 18:41:43 -07:00
Thiago Macieira
815bb2a4fb QProcess/Darwin: disable use of vfork() on this OS
The CI is failing running all the startDetached() tests, despite this
passing on my machine (both macOS 12 and 13). We don't know why it's
happening, so we just disable use of vfork(). This doesn't affect the
regular startProcess() because forkfd() requires full fork() in OSes
without pidfd or pdfork, but it does prevent changing startDetached()
behavior, starting with the next commit.

Change-Id: Ib5ce7a497e034ebabb2cfffd1761d91c456f20e0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-05-23 18:41:41 -07:00
Volker Hilsheimer
9526e8dc33 macOS: Extend accessibility testing of treeview
Check that we can navigate to rows and columns, and that we get the
right text back for cells.

We see API failures in CI on some macOS nodes, accompanies by the debug
message:

AXUIElementCopyAttributeValue( "AXTitle" ) returned error =
  AXError(value=-25201, name=kAXErrorIllegalArgument,
  description="An illegal argument was passed to the function.")

On hosts where the test fails, we always see this warning, so extend the
test helper with an errorOccurred boolean that we can test and if set
skip the test.

Pick-to: 6.5
Change-Id: Iacad4c41f8597243abeff36ca91cf290446c13a1
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-05-23 19:42:16 +02:00
Amir Masoud Abdol
c3d3e73124 Prefer GSS.framework on macOS over libgssapi_krb5.tbd when using vcpkg
On macOS, vcpkg toolchain sets the value of CMAKE_FIND_FRAMEWORK and
CMAKE_FIND_APPBUNDLE to LAST which causes an issue when it comes to
GSSAPI. This change in behavior leads to FindGSSAPI.cmake finding
`usr/lib/libgssapi_krb5.tbd → Kerberos.framework` instead, which is not
exactly what we want, and it misses some necessary symbols, and as a
result Network fails to build.¹

We need to make sure that we find `GSS.framework`. Here by dropping the
alternative name on Apple platform, we end up getting the Framework
even if vcpkg prefer finding the framework LAST.

[1]: https://github.com/microsoft/vcpkg/issues/23782

Pick-to: 6.5
Change-Id: I0e7e6272dcb0fdf2c746149d2969468d66ca9ec2
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2023-05-23 18:57:21 +02:00
Amir Masoud Abdol
840939799e Remove duplicate code
There is an identical entry right above it.

Pick-to: 6.5
Change-Id: Ia962b19c01be2fdd143eeb5932c6ba309c73be34
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2023-05-23 18:57:20 +02:00
Alexey Edelev
e5d7a3920a Make sure that QT_QMAKE_TARGET_MKSPEC is not empty
If target platform is not detected the QT_QMAKE_TARGET_MKSPEC
variable remains empty. We need to check this explicitly.
Also store the default QT_QMAKE_TARGET_MKSPEC variable in the target
toolchain file. This is useful if users want to build repos
one-by-one or build standalone tests without the need to specify
the QT_QMAKE_TARGET_MKSPEC each time when configuring new repo or
tests.

Task-number: QTBUG-113630
Pick-to: 6.5 6.2
Change-Id: I57dfc6c97752a645868d77998d8f52e16bdfd5c8
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2023-05-23 18:57:19 +02:00
Alexey Edelev
604af4d5bc Require only module-specific sync_headers for header_check target
Use the module-spefic sync_headers target when specifying dependencies
for the headersclean custom command.

Pick-to: 6.5
Fixes: QTBUG-113643
Change-Id: I6eb6f4a8881b252f7732ecfa79a9893ace5ce19f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2023-05-23 16:08:18 +02:00
Mårten Nordheim
ada2c573c1 Schannel: Reject certificate not signed by a configured CA certificate
Not entirely clear why, but when building the certificate chain for a
peer the system certificate store is searched for root certificates.
General expectation is that after calling
`sslConfiguration.setCaCertificates()` the system certificates will
not be taken into consideration.

To work around this behavior, we do a manual check that the root of the
chain is part of the configured CA certificates.

Pick-to: 6.5 6.2 5.15
Change-Id: I03666a4d9b0eac39ae97e150b4743120611a11b3
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-23 14:29:59 +02:00
Eirik Aavitsland
2385d66923 Image IO: increase the default allocation limit
Time passes, Moore's law is working.

As a drive-by, make the doc more informative.

Fixes: QTBUG-113637
Pick-to: 6.5
Change-Id: Ic388b8850ace02c429d4d8175d31db86912d3afe
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2023-05-23 14:29:58 +02:00
Shawn Rutledge
8d11e05f8f doc: Reduce expectations for QInputDevice::devices()
I was hoping we could get the list mostly correct and complete on most
platforms; but in practice, it's proving difficult on most platforms.
Hopefully we can find ways to improve it over time.

Task-number: QTBUG-101648
Task-number: QTBUG-101875
Task-number: QTBUG-112432
Task-number: QTBUG-113706
Task-number: QTBUG-113711
Change-Id: I16b6900cddb54197fb7b833a513e36996de72d51
Pick-to: 6.2 6.5
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2023-05-23 10:36:35 +02:00
Friedemann Kleint
bfa557da91 uic: Generate QFont::HintingPreference
Task-number: QTBUG-113670
Pick-to: 6.5
Change-Id: I326d310b2a0df9a6f11e33588e553dff66e5a6f4
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2023-05-23 10:13:08 +02:00
Christian Ehrlicher
67b8dec0d0 QSqlDatabase: use a QReadWriteLock to access DriverDict
DriverDict might be accessed from different threads so we have to make
sure it's thread-safe. Use the already existing QReadWriteLock from
QConnectionDict for later merging of these two global instances. The two
instances do not interfere each other (DriverDict is a dictionary for
custom registered sql drivers, QConnectionDict contains all current
active database connections) so the dual-use of the mutex is fine.

Pick-to: 6.5 6.2 5.15
Change-Id: I84c77df666e72e826d0d3d291cecd5417bbd1baf
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-23 06:20:09 +02:00
Alexey Rochev
bc85390dcc Don't run version script test when its result won't be used
Pick-to: 6.2 6.5
Task-number: QTBUG-111514
Change-Id: Ibcac8cd591125f173e906e256d08593764a1cf66
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-05-23 01:44:27 +03:00
Giuseppe D'Angelo
313bb32364 QRegularExpression: match newlines when converting wildcards
A * or a ? in a wildcard pattern is allowed to match any character,
including newlines. When converting a wildcard pattern to a PCRE,
* and ? were converted to ., which by default does _not_ match over
newlines (/s is necessary).

There isn't a metacharacter that matches everything, so either we modify
the returned pattern to enable dot-matches-all (for instance, by
wrapping the returned expression in (?s:...)), or use a character class
that includes everything. Picking this last approach for simplicity.

Change-Id: I86703f654e3414783427c4c8e0bb018885b42e54
Fixes: QTBUG-113676
Pick-to: 6.5
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-05-23 00:03:37 +02:00
Thiago Macieira
c5221f6be0 QProcess/Linux: add a flag to re-enable the vfork()-like semantics
Commit 29b2fe40dc disabled it by reverting
commit d6bf71123d. We now add the promised
flag to opt-in. The flag is added to all Unix systems, but it really
only applies to Linux right now.

No ChangeLog because the whole UnixProcessParameters structure is new
and has its own changelog.

Task-number: QTBUG-104493
Task-number: QTBUG-111243
Task-number: QTBUG-111964
Change-Id: Icfe44ecf285a480fafe4fffd174d4effd3382495
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2023-05-22 10:43:53 -07:00
Thiago Macieira
f9c87cfd44 QProcess/Unix: add setUnixProcessParameters()
This commit adds those three flags that are either frequent enough or
difficult to do: close all file descriptors above stderr and reset the
signal handlers. Setting SIGPIPE to be ignored isn't critical, but is
required when the ResetSignalHandlers flag is used, as this is run
after the user child process modifier.

[ChangeLog][QtCore][QProcess] Added setUnixProcessParameters() function
that can be used to modify certain settings of the child process,
without the need to provide a callback using setChildProcessModifier().

Change-Id: Icfe44ecf285a480fafe4fffd174d0d1d63840403
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-22 10:43:50 -07:00
Volker Hilsheimer
6a4afebc5c macOS: Fix assertion in accessibility implementation for treeviews
In QAccessible's widget implementations, trees are treated as tables,
with a rowCount implementation that is based on the view's current
item content. That item content is the view's content, not the model's,
and it changes when tree branches are expanded.

The Cocoa bridge for accessibility allocates arrays of row data
structures based on the rowCount implementation. Those data structures
need to be invalidated and recreated when the view's content changes.
To do that, emit an accessibility event for a model reset when laying
out items changes the size of the view's item array. We don't know what
changed during that layout process to makes this any more granular.

Amends 11ae55e918, but the problem
with the data structure being stale and incorrect would have been there
before that chain of changes optimizing. It didn't trigger an assert,
but probably resulted in incorrect data being reported.

To make trees testable, we need to actually expose them as AXOutline
to the macOS accessibility framework. Until now, they have been treated
like plain QWidget, e.g. AXGroup. This made them in practice in-
accessible. With this change, VoiceOver works much better (although not
perfeclty yet).

Also remove an assert that could be triggered by an accessibility
client asking for a cell for an invalid index (which can be reproduced
by navigating around in a tree, following debug warnings from
QAccessibleTree::indexFromLogical: invalid index).

Pick-to: 6.5
Change-Id: I7650342aa0dcd7925a94ae6a36de5a0b344c467d
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-05-22 16:45:28 +02:00
Volker Hilsheimer
b60c31de52 macOS: show the test function in the title of the test window
This makes it a bit easier to know what's going on when debugging.

Pick-to: 6.5
Change-Id: I5955b9b590c7aea584748f36e4fe15d41fd05ac1
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-05-22 16:45:27 +02:00
Volker Hilsheimer
e4e186771e Fix warning, remove unused variable
Change-Id: I77167919a2382f38d10694ce14ccd209cc7c2377
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
2023-05-22 16:45:27 +02:00
Axel Spoerl
980a499ad0 Implement color role AccentColor in QStyleSheetStyle and QCssParser
The color role AccentColor has been added to QPalette.

This patch implements the new color role in QCssParser and subsequently
in QStyleSheetStyle.
The QBrush variable names used to populate brushes, have been changed
into speaking names for better code readability.

tst_QCssParser has been adapted accordingly.
The test function accentColor() has been added in tst_QStyleSheetStyle.

Documentation has been updated.

Change-Id: Ib09ddc1b61868f2bb8f70f654e83ea1c35276d30
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-22 14:45:26 +00:00
Axel Spoerl
227b639499 Make Gnome theme react to color theme changes without GTK
Qt doesn't react to color theme changes on systems running Gnome
without GTK.

This patch adds support for such in QGnomeTheme, following
https://blogs.gnome.org/alexm/2021/10/04/dark-style-preference/

Pick-to: 6.5
Change-Id: I1f6252d4f394b810b9e4aebe00f2715c8fec3b56
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-22 16:43:02 +02:00
Morten Sørvig
486a89f7bb wasm: add INSTALL_LIBDIR as library search path
Fixes error where Emscripten fails to find Qt library
dependencies at application link time.

Change-Id: I03b154f60ab5dc3a4c8d0d21d47551c9584029a2
Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-05-22 16:43:01 +02:00
Ievgenii Meshcheriakov
8d13a9e387 QtDBus: Move dispatch enabling code into a single function
Remove the helper class.

Change-Id: I82edd7fa1ce1d8b9044938a1378f992a40a0bbdf
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-05-22 11:49:30 +02:00
Samuli Piippo
f99e518327 QDnsLookup/Windows: add missing typedefs for older mingw
Amend 9a73bc5f3d with more typedefs
missing from older mingw headers:

| src/network/kernel/qdnslookup_win.cpp:40:3: error: 'PDNS_QUERY_COMPLETION_ROUTINE' does not name a type; did you mean 'LPOVERLAPPED_COMPLETION_ROUTINE'?
|    40 |   PDNS_QUERY_COMPLETION_ROUTINE pQueryCompletionCallback;
|       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| src/network/kernel/qdnslookup_win.cpp:47:9: error: 'PDNS_QUERY_RESULT' has not been declared
|    47 |         PDNS_QUERY_RESULT   pQueryResults,
|       |         ^~~~~~~~~~~~~~~~~
| src/network/kernel/qdnslookup_win.cpp:77:5: error: 'DNS_QUERY_RESULT' was not declared in this scope; did you mean 'DNS_QUERY_REQUEST'?
|    77 |     DNS_QUERY_RESULT results = {};
|       |     ^~~~~~~~~~~~~~~~

Change-Id: I812525aaa938764d337923820d0eb8b3e24a0004
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-05-22 05:27:33 +00:00
Axel Spoerl
17c589df94 Shoehorn AccentColor into QPalette and keep existing 64bit resolve mask
It is necessary to add an AccentColor role to QPalette.
QPalette currently has 21 color roles and 3 color groups, which
require 63 bits to resolve. The resolve mask is implemented with a
qint64, which doesn't provide spare bits for another color role.

The color role NoRole is used as a default value, marking that a role
has not (yet) been defined. The enum value does not represent a valid
brush, even though it can theoretically be stored in QPalette's shared
data.

This patch adds the enum value AccentColor to QPalette::ColorRole,
increasing the available color roles to 22.
To keep the resolve mask at 63 bits, AccentColor is mapped to NoRole
in static constexpr bitPosition.

As the enum range would exceed 64 bits without this tweak, 3 additional
bits are substracted in the respective static assertion.

With NoRole having no bit in the resolve mask, the following adaptions
have been implemented:
- QPalette::resolve() is adapted to explicitly ignore NoRole.
- QPalette::isBrushSet() always returns false for NoRole.
- tst_QPalette::setAllPossibleBrushes() to verify the latter
- operator== ignores NoRole (documentation updated)

AccentColor is added in tst_QPalette::roleValues and enum documentation
is adapted.

In QPalette's default constructor, the AccentColor brush is defaulting
to the Highlight brush, it this is available. Otherwise it is made 30%
darker or lighter than the Base brush, depending on dark/light mode
heuristics.

QPalette's data stram functions have been extended from QDataStream
Version Qt_6_6. If earlier versions are de-serialised, the AccentColor
defaults to Highlight. An autotest function dataStream() has been added
to tst_QPalette.

The QDataStream Version Qt_6_6 has been bumped to 21.
tst_QDataStream has been adapted to the new version and the new
color Role.

Change-Id: I98bbf9de95fb83bda921e9614a0db3a3c0ebdf75
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-05-21 18:36:37 +02:00
Axel Spoerl
0328e4297e QGenericUnixThemes: Make DBus listener configurable
The DBus locations and signals QGenericUnixThemesDBusListener has
listened to, were hard coded.
While these hard codings were in line with the signals emitted by the
Linux systems officially supported by Qt, this approach has made it
impossible for Qt to react to (color) theme changes when they are
announced by other DBus signals.

This patch replaces hard coded signals with a QFlatMap member.
The member is populated with the DBus locations/signals currently
supported.

If the environment variable QT_QPA_DBUS_SIGNALS_SAVE contains a valid
file name, the default configuration is stored in a JSON file.
If the environment variable QT_QPA_DBUS_SIGNALS contains a valid file
name, the default configuration is replaced with its content.

While the patch doesn't change existing behavior, it adds the
possibility to customize alternative DBus signals to listen to.

Task-number: QTBUG-103093
Pick-to: 6.5
Change-Id: I37e085c74bf53eed5cda7ec0dd7105562df0ed21
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-21 18:18:20 +02:00
Laszlo Agocs
1dd8b5ceec rhi: Make it a QPA-style private but semi-public API
qrhi.h, qshader.h, qshaderdescription.h (and qshaderbaker.h from
shadertools; done separately) become "RHI APIs", following the concept
of QPA APIs.

Mirror completely what is done for QPA headers, but using the "rhi"
prefix for the headers. This involves updating syncqt to handle the
new category of headers. (a note on the regex: matching everything
starting with "qrhi" is not acceptable due to incorrectly matching
existing and future headers, hence specifying the four header names
explicitly)

There is going to be one difference to QPA: the documentation for
everything RHI is going to be public and part of the regular docs, not
hidden with \internal.

In addition to the header renaming and adding the comments and
documentation notes and warnings, there is one significant change
here: there is no longer a need to do API-specific includes, such as
qrhid3d11[_p].h, qrhivulkan[_p].h, etc. These are simply merged into a
single header that is then included from qrhi.h. This means that users
within Qt, and any future applications can just do #include
<rhi/qrhi.h> (or rhi/qshader.h if the QRhi stuff is not relevant), no
other headers are needed.

There are no changes to functionality in this patch. Only the
documentation is expanded, quite a lot, to eliminate all qdoc warnings
and make the generated API docs complete. An example, with a quite
extensive doc page is added as well.

Task-number: QTBUG-113331
Change-Id: I91c749826348f14320cb335b1c83e9d1ea2b1d8b
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-05-21 15:42:58 +02:00
Thiago Macieira
30a8e79243 QCallableObject: work around VS2022 compiler bug
Address Sanitizer in Visual Studio reported:

 ==17744==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x11ffe2ba0760 at ...
 WRITE of size 1 at 0x11ffe2ba0760 thread T0
 0x11ffe2ba0760 is located 0 bytes to the right of 16-byte region [0x11ffe2ba0750,0x11ffe2ba0760) allocated ...

Disassembly of QCallableObject's constructor shows that the compiler did
emit that 1-byte store of a null byte, 16 bytes after the object start,
of an object whose size is 16 bytes. The location of this code implies
it was the initialization of the StorageEmptyBaseClassOptimization
sub-object. Without an explicit constructor, this was an aggregate
initialization.

This seems to be the same issue as [1]. The workaround is to give it an
explicit constructor, the same workaround as [2].

I suppose other people using Empty Base Optimization haven't run into
this issue because that empty base usually overlaps something inside the
object. So an alternative workaround would be to invert the order of
derivation such that StorageEmptyBaseClassOptimization was the first
base.

[1] https://developercommunity.visualstudio.com/t/address-of-empty-base-class-is-wrong-c-bad-code-ge/322444
[2] https://developercommunity.visualstudio.com/t/empty-class-derived-from-empty-base-class-causes-r/451088

Change-Id: I5f7f427ded124479baa6fffd17609adca0f8e235
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-20 20:18:23 +02:00
Thiago Macieira
8566c2db85 QUuid: add support for 128-bit integers
[ChangeLog][QtCore][QUuid] Added support for converting between QUuid and
quint128, on platforms that offer 128-bit integer types (all 64-bit ones
supported by Qt, except MSVC).

Change-Id: Id8e48e8f498c4a029619fffd1728c9553e871df5
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-20 04:59:43 +00:00
Thiago Macieira
befda1acca QTypes: add q{u,}int128 as a first-class, integer type
This is supported on all 64-bit platforms by Clang and GCC and will be
used by QUuid, with support in QDataStream and partial support in
QTextStream. CBOR also has a reserved "additional information" field for
128-bit quantities, but it's not allowable right now.

This conflicts with the quint128 type in QtBluetooth, which was not an
integral type. It has been removed in 1e903be81f43da4e31385bb7866bb4d3f07e5eba.

Change-Id: Id8e48e8f498c4a029619fffd172893c81aed3481
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-05-19 20:09:42 +00:00