Commit Graph

39444 Commits

Author SHA1 Message Date
Mårten Nordheim
f828b47e43 Document QFutureWatcher::isFinished behavior change
in the Qt6 changes documentation

Pick-to: 6.2
Change-Id: Ief45c145cbb9353455af39060a3fb444afe3f1b9
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2021-10-13 16:43:20 +00:00
Assam Boudjelthia
7235eeab19 Android: replace ndk.dir with android.ndkVersion in build.gradle
The use of ndk.dir in local.properties is deprecated in favor of
android.ndkVersion in build.gradle, and will be totatlly removed in
the future, so we need to adapt to that.

Fixes: QTBUG-91391
Pick-to: 6.2
Change-Id: I54c57113a759d43c3685c9cdf2b9dcc5c948c0fd
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Rami Potinkara <rami.potinkara@qt.io>
2021-10-13 18:33:32 +03:00
Volker Hilsheimer
f7a4a79c62 Take overshoot into account when laying out QAbstractScrollArea
QAbstractScrollAreaPrivate::layoutChildren() positions the viewport, but
did not take the overshoot from scrolling with a scroller into account.
If the scroll area was resized during a scroll, then this resulted in the
roll back overcompensating for the overshoot, placing the viewport outside
the visible area.

Fix this by taking the overshoot into account when positioning the
viewport.

Add a test case. We have to use QWindow-based mouse event simulation, as
the QWidget based move events use QCursor::setPos, which doesn't reliably
go through the gesture framework.

Done-with: Volker Hilsheimer <volker.hilsheimer@qt.io>
Done-with: Zhang Hao <zhanghao@uniontech.com>
Fixes: QTBUG-94769
Pick-to: 5.15 6.2
Change-Id: Idf650c91e5a9cffa996e23e743939243b1d4fcc0
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-13 14:27:12 +00:00
Friedemann Kleint
36a6d17af0 Windows QPA: Fix mouse event position for QWindows with Qt::WindowTransparentForInput
The local position needs to be corrected when the Qt receiver window
does not correspond to the native event receiver window.

Fixes: QTBUG-97095
Pick-to: 6.2 5.15
Change-Id: Ic9fa3d84b6ee84ae5f8fa2408b0d60e35dbfa328
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
2021-10-13 08:37:17 +02:00
Giuseppe D'Angelo
2bd3c53a95 QLalr: use QList iterators in algorithms
There's no need to dereference+reference a QList's iterator
only to pass the result to an algorithm, just pass the iterator.

Change-Id: I7367010f6ab489d951715259bd51aeec790d3c84
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-13 04:33:21 +02:00
Ivan Tkachenko
871802455e Doc: Fix \notes in QObject
Pick-to: 5.15 6.2
Change-Id: Ic442f56d3fb0c3e073c3cd69f193829958550296
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-10-13 02:40:32 +03:00
Ievgenii Meshcheriakov
9940e4812b Add suffixes to loop variables for Q_FOREACH
Currently using nested Q_FOREACH loops produces warnings about
shadowing local variables (if enabled). For example, this code:

    QList<int> aList;
    QList<int> bList;
    foreach (int a, aList) {
        Q_UNUSED(a);
        foreach (int b, bList)
            Q_UNUSED(b);
    }

produces the following warning with MSVC:

    warning C4456: declaration of '_container_' hides previous local
    declaration

This is due to using variable _container_ as loop variable for both
loops.

This patch appends current line number to the name of the loop
variables so that most of the uses of Q_FOREACH will not result
in shadowing.

The patch originally by Benoit Regrain.

Fixes: QTBUG-79081
Pick-to: 5.15 6.2
Change-Id: I55235e917e920171b138c8b3239a95dfe2ac7988
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-13 01:40:32 +02:00
Peter Varga
d24651d548 Guard WinRT API code for clang-cl
It is unsupported with clang-cl and breaks the build.

This is a fixup for:
  51e8d3592a Let QLocale::uiLanguages() use WinRT API when possible

Task-number: QTBUG-94341
Pick-to: 6.2
Change-Id: Icf32339e81d67d4c119b7fb8d8d834c744b9ead0
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-12 21:34:02 +00:00
Jonas Kvinge
ced47a05aa openglblacklists: Fix typo in description
Pick-to: 5.15 6.2
Change-Id: I13fa34099daed8de8d23af3952aa18f1ecde7883
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
2021-10-12 23:15:45 +02:00
Jonas Kvinge
cf81ccd1cd qwindowsdrag: Fix typo in documentation
Pick-to: 5.15 6.2
Change-Id: I4bd8ff5b4ddeee1760b012bd603b014d535534ed
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
2021-10-12 23:15:45 +02:00
Jonas Kvinge
79e209c4c3 windows: Fix typos in source code comments
Change-Id: I5d83574639d0b1f935843a75217aae70a5925fa0
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
2021-10-12 23:15:45 +02:00
Edward Welbourne
ba23507960 Fix handling of time-zone gap in QTimeZonePrivate::dataForLocalTime()
This was handled correctly when the backend supplies transitions
bracketing the time in question, but the fallback code tried to use
the DST offset at the time with larger offset from UTC; this did not
work when the gap was due to a change in standard time. Discovered by
ANS1 parsing of a date-time with two-digit year, for which the
date-time parser tried to use 1921-05-01T00:00 local time when filling
in the fields it had parsed; but, when run in Europe/Helsinki, there
is no such time due to the 20m 11s skipped when joining EET from the
prior local solar mean time.

Correct the calculation to use the actual change in offset from UTC,
as used in the (far better tested) between-transitions branch of the
code, rather than the DST offset after the transition.

Add a test-case based on the ASN.1 certificate date whose parsing
revealed the issue. Although it seems nothing in Coin can reproduce
the issue, the reporter has verified that the test does indeed fail on
the system where the bug was found and the fix does fix it.

Fixes: QTBUG-96861
Pick-to: 6.2
Change-Id: I12b02bad01daca2073d1a356452cd573684aa688
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-12 22:52:50 +02:00
Assam Boudjelthia
22e330db48 Android: remove unused imports and fix warning on network java code
Pick-to: 6.2
Change-Id: Ifa69c04f7f2e75751b6f8a157d04f3870f0c0eb1
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-12 22:12:08 +03:00
Mike Achtelik
91d8443f6d CMake: Fix adding generated resources on iOS with CMake and Xcode
When adding resources generated via a custom command, the project fails
to configure when targeting iOS with CMake and Xcode with the error:

CMake Error in src/CMakeLists.txt:
  The custom command generating
    src/.qsb/TestShader.frag.qsb
  is attached to multiple targets:
    TestApp_other_files
    TestApp
  but none of these is a common dependency of the other(s).  This is
  not allowed by the Xcode "new build system".

This happens e.g. when using qt6_add_shaders, which adds a custom
command to generate the qsb files. Or by simply adding resources via
qt6_add_resources, which depend on a custom command.

The problem is that qt6_add_resources also adds the resource to a
second "fake" target ${target}_other_files via
_qt_internal_process_resource and _qt_internal_expose_source_file_to_ide.
See c7d1874cd1.
Since these targets do not have a common dependency CMake fails to
configure the project.

So lets fix it similar to change 1bd0a5ce02352a600367beb5a5421c8f8332e1fe
and let the ${target}_other_files depend in the main ${target}.

Pick-to: 6.2
Task-number: QTBUG-95763
Change-Id: Iecdb40993a91da8bfbf6553892f9b0722d2e886c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-10-12 17:36:57 +00:00
Volker Hilsheimer
8513bcd90c Fix caching of parsed border color values in CSS parser
When parsing CSS, a border-color value is parsed as four brushes, as css
allows assigning up to four values, one for each side.

When applying the CSS to the HTML, we accessed it as a color value,
which overwrote the parsed value with a QColor. So while we had a valid
parsed value (and didn't re-parse), the code accessing that value still
expected it to be a list, and thus failed to retrieve the data.

There are several ways to fix that, but the cleanest way without
introducing any performance penalty from repeatedly parsing (and in fact
removing a parse of the string into a color) is to enable colorValue to
interpret an already parsed value that is a list without overwriting the
parsed value again. To avoid similar issues in the future, add assert
that the parsed value has the right type in brushValues.

As a drive-by, speed things up further by making use of qMetaTypeId
being constexpr, which allows for it to be used in a switch statement.

Add a test case.

Fixes: QTBUG-96603
Pick-to: 6.2 5.15
Change-Id: Icdbff874daedc91bff497cd0cd1d99e4c713217c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-12 18:26:26 +02:00
Thiago Macieira
878b2047b5 QList::iterator: use templates for advancing operators
Because of the addition of the operator T*(), the expression "it + N"
where N was not exactly qsizetype but any other integer type was a
compilation failure because of ambiguous overload resolution.

With GCC it's apparently a warning:

 warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
 note: candidate 1: ‘QList<T>::iterator QList<T>::iterator::operator+(qsizetype) const [with T = char; qsizetype = long long int]’
 note: candidate 2: ‘operator+(char*, ptrdiff_t {aka long int})’ (built-in)

With Clang, it's an error:

 error: use of overloaded operator '+' is ambiguous (with operand types 'QList<int>::const_iterator' and 'ptrdiff_t' (aka 'long'))
 note: candidate function
        inline const_iterator operator+(qsizetype j) const { return const_iterator(i+j); }
 note: built-in candidate operator+(const int *, long)

Pick-to: 6.2
Fixes: QTBUG-96128
Change-Id: Ie72b0dd0fbe84d2caae0fffd16a06f23dd56b060
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2021-10-12 08:46:31 -07:00
Jonas Kvinge
2675c288e8 wasm: Fix source code comment typos
Change-Id: I9b2b76c01880c7bb515fdc1a6c4ef1f0bcf6be95
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2021-10-12 15:55:53 +02:00
Timur Pocheptsov
0e58b3db34 Don't send the default SETTINGS_INITIAL_WINDOW_SIZE
And don't set non-default large value in QNetworkRequest's constructor.
Some servers consider those values as 'flow control error'.

Pick-to: 6.2
Fixes: QTBUG-97384
Change-Id: I801b7c83fe7e7392a02ba653c36dfa8a22c21d1e
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-12 14:08:08 +02:00
Topi Reinio
b836098179 Doc: Fix usage of \summary macro
The macro takes only one parameter, sentences must be wrapped in {}.

Pick-to: 6.2
Fixes: QTBUG-97441
Change-Id: I7177548a32a67d720c2b551d16c09d898b0fda51
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-10-12 14:08:08 +02:00
Volker Hilsheimer
3b6a027885 macOS: fix window activation when popup is open
On macOS, it is possible to right-click-open a context menu for a window
that is not active. This does not activate the window.

When then clicking into the window to activate it, the popup is closed,
but only after the WindowActivate events has been sent. This blocks the
event delivery, as QApplication (since commit 78264f333e)
interpreted activation changes while popups are open to be just delayed
focus events. The UI ends up in a broken state where focus cannot be set
on the widgets in the window.

To fix this, don't ignore such activation events on macOS. As a drive-by,
give the variables more meaningful names.

Note: We cannot call closeAllPopups before delivering WindowActivate,
as that would close the popup before the mouse event is delivered, making
it impossible to select any of the actions from the menu.

Ideally, clicking into a popup of an otherwise inactive application would
not activate that application (that is the default behavior for native
macOS applications), but that's out of scope for this patch.

Fixes: QTBUG-78750
Task-number: QTBUG-69710
Task-number: QTBUG-66513
Pick-to: 6.2
Change-Id: I6344370ae7be31630e37514e04918b2d6cb8b69a
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2021-10-12 14:08:08 +02:00
Ievgenii Meshcheriakov
3715166539 QPoint: Don't claim that QPoint[F]::dotProduct() produces length squared
The documentation snippets name the result of dotProduct()
"lengthSquared", but it is just a coincidence, not the property of dot
product of two different points. Just name the result `dotProduct`
without claiming any properties.

Also fix the type of the result in the QPointF case.

Fixes: QTBUG-94979
Change-Id: I4c337dd8335953489eac86c07a219c0a2d232369
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-12 12:08:08 +00:00
Eskil Abrahamsen Blomfeldt
e05e3c7762 freetype/no-fc: Disambiguate fonts with different widths
When using the Freetype font database, we would ignore the
typographical width of loaded fonts, which could make it
impossible to select certain fonts in a family.

[ChangeLog][Freetype] Fixed a bug where fonts of different
width within the same family would be unselectable if the
Freetype font database (no-fontconfig configuration) was in
use.

Pick-to: 5.15 6.2
Fixes: QTBUG-89640
Change-Id: Ic9c17a7c3cc14eb7e942b05d6b21b7c1602816cf
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2021-10-12 13:33:19 +02:00
Eskil Abrahamsen Blomfeldt
6f0d7eb92e RHI: Don't retain texture operations after frame is done
Retaining texture upload commands comes at a price, because it
means we also retain the backing storage, which could e.g. be
fullscreen buffers for applications on Wayland. These would
eventually be overwritten, but just clearing the array between
frames is also fine because the data is never reused and the
array is a QVarLengthArray anyway so it already has a lot of
reserved space.

Pick-to: 6.2
Change-Id: I7389487be67b671830787e30e1468c303b7ac5c2
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2021-10-12 11:33:19 +00:00
Giuseppe D'Angelo
95fd21a26a RHI: introduce a way to disable framebuffer clears on GL
On low-end hardware without fast framebuffer clears one can
significantly reduce the fill rate by disabling framebuffer clears
(provided, as it's usually the case, that the application has content
filling the entire framebuffer).

Add a couple of environment variables to do so, one to disable all
clears and one to disable only color clears (in case the surface is
requested without a depth buffer). Note that disabling all clears
on a surface *with* a depth buffer still requires
QSG_NO_DEPTH_BUFFER to be set, otherwise QtQuick is going to assume
that there is a clean usable depth buffer.

Change-Id: I96ad0a3d28dd0ab65cc960fb7cb2e0a8b6f35628
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2021-10-12 13:33:19 +02:00
Jonas Kvinge
5ed0974ef4 concurrent: Fix typo in documentation
Pick-to: 6.2
Change-Id: Ibe3715de704f420ba3796d19c9e78cd6204eb4e5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-12 10:52:03 +00:00
Jonas Kvinge
aa97bc5f6c concurrent: Fix namespace typo
Change-Id: I7fed1f3965f97a4e1c4d096bc19f98572ea35c53
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-12 12:52:03 +02:00
Jonas Kvinge
13b5c269d6 gui: Fix typos in documentation
Pick-to: 5.15 6.2
Change-Id: I533f5a55cd0cd60a76990b552d7dab51a301ac1c
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
30613163ba widgets: Fix typos in documentation
Pick-to: 5.15 6.2
Change-Id: I6b77f0ec043d08da3b7958d780dce9595daf97a6
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
616802fe88 QEventDispatcherWasm: Fix typo in debug message
Pick-to: 6.2
Change-Id: I183de5fd477b9529dd5272c88a196b9bebf4ab66
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
00ebab71d3 gui: Fix typo in CMake feature
Pick-to: 6.2
Change-Id: Icf81eac4d12fb61bcec2ca92d118ce88f970522e
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
6c4403e92a network: Fix typos in source code comments
Change-Id: Iff505451e3f00de2d753de0f1d891a73cf73ef0d
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
1cebe7d7db network: Fix typos in messages
Pick-to: 5.15 6.2
Change-Id: Ibad852372c80a988efeabc2b0757bf238b92b9a3
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
dce874415d QWindowsWindow: Fix typo in documentation
Pick-to: 5.15 6.2
Change-Id: Ib20b2f23e399b295e26b8c29084023e4e1361579
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
18e1711f7a corelib: Fix typos in documentation
Pick-to: 5.15 6.2
Change-Id: I64d63af708bc6ddaabd12450eb3089e5077f849e
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
231fec7ca2 corelib: Fix typos in source code comments
Pick-to: 6.2
Change-Id: Ic78afb67143112468c6f84677ac88f27a74b53aa
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
651d7debe1 gui: Fix typos in source code comments
Pick-to: 5.15 6.2
Change-Id: Ie53e5542a8f93856470982939ecd8ec90b323d69
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
5cb48619e2 xml: Fix typos in documentation
Pick-to: 5.15 6.2
Change-Id: Ie2a4df380dc2e519a55db4457bd17e326e62046f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
9f701b6ffc tools: Fix typos in source code comments
Change-Id: I9666104a320f66b22c5144375ce7440bb59737e6
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
f55c1fb3b4 cocoa: Fix typo in debug messages
Pick-to: 5.15 6.2
Change-Id: I0a4c344f2104241175a9bfce7cfc7128c3f7d3ed
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-10-12 12:52:02 +02:00
Jonas Kvinge
93f808b781 qcocoa: Fix typos in source code comments
Pick-to: 6.2 5.15
Change-Id: Ide20e1d133891890a7673c8403ea91b489baa8f6
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-10-12 10:52:01 +00:00
Jonas Kvinge
9bf555e3c8 qcocoa: Fix typos in documentation
Pick-to: 5.15 6.2
Change-Id: Ibf86b9b95715e20e8bf9c49a347f9c8ca0c04bb5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-10-12 12:52:01 +02:00
Jonas Kvinge
84d0d089a8 qwindowsxpstyle: Fix typos in documentation
Pick-to: 5.15 6.2
Change-Id: I5dc4649783b0d4c2b17e0555b98874b83a5b9f30
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-12 12:52:01 +02:00
Jonas Kvinge
12f937d909 styles: Fix typos in source code comments
Change-Id: If0f140f4ad02395bd0dd5eee08f90318d3a7e930
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-12 12:52:01 +02:00
Jonas Kvinge
72c7c96143 network: Fix typos in documentation
Pick-to: 5.15 6.2
Change-Id: I386c6e4a21dacb2553a39a073052dcf6d92a9854
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-12 12:52:01 +02:00
David Rosca
5f01d33dbf evdevtouch: Fix loading screen name for output mapping
Accidentally broken in 4b899a29fa

Change-Id: I8ff52153c3549fcda4ebd178cc4fc1ea9538be86
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Elvis Lee <kwangwoong.lee@lge.com>
2021-10-12 12:52:01 +02:00
Jonas Kvinge
b64c6285f7 tls: Fix typos in source code comments
Change-Id: Iec42e4d0f3476bd421861a0139731ff89788ee23
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-12 11:29:15 +02:00
Mårten Nordheim
dc01509878 QNI: Add missing transportMedium documentation
I forgot

Fixes: QTBUG-97409
Change-Id: I5ee94b2cc4c70b6408bb9bb9368c6876f3179783
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-12 08:54:17 +00:00
Shawn Rutledge
826765f654 Select a single range of cells in QTableView, away from merged cells
- when there is no intersection between the current selection and the
  spans collection, get ranges for all cells, just as if no span exists
- when there is an intersection between the current selection and the
  spans collection, get separate ranges for each cell (as before)

This fixes the regular case of selecting multiple non-spanned cells
after some cells are merged (get a single range for all cells instead of
separate range for each cell). However, when selecting together a group
of spanned and non-spanned cells, you still get a separate range for
each cell. But this is normal behavior in similar applications; for
example in LibreOffice, you cannot select and merge spanned and
non-spanned cells: an error dialog tells you that it's not allowed.

Done-with: Christos Kokkinidis
Pick-to: 6.2
Fixes: QTBUG-255
Change-Id: Ic38f9a064a1f499825e7f750668013fc2dc564ba
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-12 09:07:54 +02:00
Volker Hilsheimer
9a77230685 QTableWidgetSelectionRange: Make it possible to compare for equality
Add operators as hidden friends, add test case to make sure that
basic value-type operations are possible with this type.

Task-number: QTBUG-255
Change-Id: I7fbf453aa16084c0b2a0079487cacb4e092ff664
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-10-12 09:07:54 +02:00
Jonas Kvinge
9684764bda xml: Fix typos in source code comments
Pick-to: 6.2
Change-Id: I33aaefec7128009ca5e1b368fdb67e2fbcd06e30
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-12 07:07:54 +00:00
Thiago Macieira
f11bc38850 QOffsetStringArray: rewrite in modern C++17
Less clunky due to having better constexpr support, plus fold
expressions.

Change-Id: I3eb1bd30e0124f89a052fffd16a6bc73ba79ec19
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-11 19:00:52 -07:00
Thiago Macieira
d105a7bd62 qconfig.cpp: Remove the install date
It's not used anywhere. It's been a legacy since 5.0 anyway.

Pick-to: 6.2
Change-Id: I2bbf422288924c198645fffd16a9740444c7f13b
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-10-11 19:00:31 -07:00
Thiago Macieira
8e5fcf02bd QPlugin: add qt_plugin_query_metadata_v2() to dynamic plugins
They return a pointer to the actual header, skipping the magic string.
This is done in preparation for the header located in an ELF note, which
won't have the magic.

Change-Id: I3eb1bd30e0124f89a052fffd16a8229bec2ad588
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-11 18:59:52 -07:00
Thiago Macieira
c89286b26a QPlugin: suppress the "QTMETADATA !" magic in static plugins
The .qtmetadata section is already suppressed for static plugins, but we
carried this unnecessary magic string. For library file formats where we
don't have a scanner (Windows COFF PE), a library that linked multiple
static plugins could end up with multiple metadata found.

We can't suppress the header because the version of moc could be
different to the version of Qt, so we need to read the header version
too. Right now, the version isn't output by moc (all the logic is in
qplugin.h), but this could change again in the future. In any case, 4
extra bytes are not a big deal, so the header stays.

Change-Id: I3eb1bd30e0124f89a052fffd16a82088d8303081
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-11 18:59:45 -07:00
Sona Kurazyan
64e9312464 Fix compilation error with MSVC 2019 and C++20
Fixes: QTBUG-97425
Pick-to: 6.1 6.2
Change-Id: Id327e3494d1deae852f953211c0409a80beafe88
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2021-10-12 00:51:27 +02:00
Thiago Macieira
333b40a12e QUtf32: fix bad assertion in convertFromUnicode
Looks like it was copied from QUtf16::convertFromUnicode(), but for the
UTF-32 case that is not correct. UTF-16 to UTF-32 conversions can change
the length of the string due to surrogates.

There are unit test tests for creating and parsing UTF-32 headers, and
for detecting content as UTF-32, but there aren't any for UTF-32
conversions. I don't have time to add a full test for that.

Fixes: QTBUG-97122
Pick-to: 6.2 6.1
Change-Id: Ic17a33f599b844d8ab5dfffd16ab2c4cb6b0547d
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-11 11:08:15 -07:00
Mitch Curtis
2b77e779ce QGtk3Theme: implement appearance function to detect dark themes
This allows Qt Quick Controls to detect if a dark theme is in use,
and if so, use a dark theme of the current style (if available).

Fixes: QTBUG-93955
Pick-to: 6.2
Change-Id: I15fc8a2271acf9ba27232359056d5a681d4cffca
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-10-11 16:18:38 +02:00
Edward Welbourne
04419c2852 Set tm_isdst = -1 before calling mktime()
Leaving it set to 0 will cause mktime() to interpret other fields as
in standard time, potentially "correcting" them and tm_isdst to
represent the equivalent moment in daylight-saving time. Set it to -1
to tell mktime() to let the system work out whether the time is
standard or daylight-saving.

Change-Id: Id33d4cb0afdb14f236ca5ce04cf605610a30d712
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-11 16:01:56 +02:00
Edward Welbourne
299f016b5d Broaden condition on use of MS's localtime_s()
It's available on MinGW, so not limited to MSVC; and the MinGW
localtime() and localtime_r() fail in some cases where it works.

Use the generic name rather than _localtime64_s(), since localtime_s()
now just calls it; and, in any case, we were assuming time_t is
__time64_t when calling it.

Change-Id: I316cc5b1a3e19cd6725555042dfaba3124a25a03
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-11 16:01:56 +02:00
Alexander Neumann
a4e9ea7a1f avoid max macro expansion on windows if NOMINMAX is missing
Pick-to: 6.2
Change-Id: I1c19da59bdf97a434be52239c2a5b1b517341bcb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-11 14:01:56 +00:00
Volker Hilsheimer
44b9aec8d9 QDialog: respect WA_ShowWithoutActivating
QDialog overrides setVisible to set focus on the default push button, or
(if there is no such button), make the first autoDefault push button the
default button. QDialog also explicitly sends a FocusIn event to the
focus widget in the dialog.

All this should not be done if the dialog does not become active after
getting shown, which will be prevented if the WA_ShowWithoutActivating
attribute is set.

Add a test case.

Fixes: QTBUG-8857
Pick-to: 6.2
Change-Id: If47021a4721a280ba45e95b43d0424cdacd9b4ea
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2021-10-11 15:48:33 +02:00
David Skoland
3fc58a5ed8 Remove union in QFileSystemEngine
The need for this union has disappeared at some point during refactoring
It does confuse MemorySanitizer, though, so it's good to remove it.

Change-Id: I5f5050adba302bf96db96d5f303d2a25630543ce
Fixes: QTBUG-97109
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-11 15:46:46 +02:00
Volker Hilsheimer
6c4dc722cb Reduce the width of a hfw-widget if scrollbar would be flipping
For a widget that implements height-for-width, the vertical scrollbar
becoming visible might be just enough to make the scrollbar unnecessary.
In that situation, the scrollbar flips on and off continuously.

To avoid that situation, make the width of the widget smaller until the
height fits without scrollbar, up to the point where we have space for
the scrollbar anyway.

The calcuation here is assumed to be cheap, but depends on the
heightForWidth implementation in the widget. Running the while-loop a
few dozen times should have no performance impact during resizing
and laying out the scroll area contents.

Add a test that confirms that within a brief period of time we only get
the one hide-event we expect.

Done-with: Zou Ya <zouya@uniontech.com>
Fixes: QTBUG-92958
Pick-to: 6.2 5.15
Change-Id: I0faeb5f9b1a226aada958c18333d9c2ac8203dd1
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2021-10-11 10:49:57 +02:00
Timur Pocheptsov
dd57605b9e Http/2 - handle PADDED flag correctly
Previously, when deciding where the actual data is, Frame was calling
padding() to test if offset is needed. A curious case with a DATA frame
containing compressed body and having 'PADDED' flag set with a padding
equal to ... 0, ended in a decompression error (and assert in 6.2 code).

Pick-to: 6.2 5.15
Fixes: QTBUG-97179
Change-Id: I9341a4d68510aa4c26f4972afdcd09a530d5a367
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-09 12:49:01 +02:00
Qiang Li
5d4b91ea66 Fix QTabBar's SelectPreviousTab behavior
When setCurrentIndex is called by removeTab, the old current index
might no longer be valid. Only update the lastTab value of the new
current tab if the old current index is still valid.

As a drive-by, use the validIndex helper function.

Fixes: QTBUG-94352
Pick-to: 6.2
Change-Id: I945e2093a90a1fccbba86d32b1113f83fedd41de
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-09 05:41:00 +02:00
Ievgenii Meshcheriakov
4682af483f QString: Use QStringIterator in QtPrivate::isRightToLeft()
This simplifies the code. While at it, also expand default case
so changes in the QChar::Direction enum don't go unnoticed.

Change-Id: Id52140b0aaf7fd259c4b8079462811603eb3ff93
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-09 02:54:45 +02:00
Fabian Kosmale
e5183c49dd androiddeployqt: Use QElapsedTimer to get elapsed time
No need to reinevent the wheel. Also, use nanoseconds
now that we have the precision available.

Change-Id: I287d06198edc3f5bdf7f85bd5f3e235b1fea95a3
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-10-08 20:03:22 +02:00
Sona Kurazyan
ce59ccb334 Optimize QPromise destructor
Unify cancel and finish in QPromise destructor in a single call. This
saves us one extra mutex lock and atomic state change.

Task-number: QTBUG-84977
Change-Id: Iac06302c39a2863008b27325fcf6792d4f58c8ae
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-08 17:17:20 +02:00
Mårten Nordheim
22248a4e96 QNI: Windows: Remove unneeded friend
Change-Id: I5d66a67a5c16a479f62b9f43cb769d5ee5f66b60
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-08 14:46:14 +02:00
Joerg Bornemann
08a0ba5733 Doc: Prettify -G cmake arguments in SQL drivers documentation
Use '-G Ninja' instead of '-G"Ninja"'.

Pick-to: 6.2
Change-Id: I53a77ea3b2d1547bb516b3ab756f5ae0f24092b1
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-10-08 14:16:51 +02:00
Joerg Bornemann
bf9f0844c2 Doc: Fix cmake build/install commands in SQL driver documentation
Pick-to: 6.2
Fixes: QTBUG-97098
Change-Id: I1c5214d66341aa412c5fc9b2de6d0e26ba4612aa
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-10-08 14:16:51 +02:00
Laszlo Agocs
46e6a9a759 gl: Try the local CacheLocation when the shared one fails
We prefer the shared cache path, because there is no reason to give up
benefitting from sharing the content between applications. If that path
is not QFileInfo().isWritable(), we fall back to the local cache path.

However, there are reportedly systems with security solutions such as
AppArmor where the writable check passes and yet attempting to create a
file still fails. Then there is no cache in effect, because nothing ever
gets written out.

Handle this better: if writing the file fails and we still use our first
choice, the global cache location, fall back to the secondary choice
(the app-local path) and try again.

Pick-to: 6.2 6.1 5.15
Fixes: QTBUG-96789
Change-Id: Ifea32e9af0cf85aa70f3069256ed3d6a7e2fbe90
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Dalton Durst <dalton@ubports.com>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2021-10-08 11:07:15 +02:00
Laszlo Agocs
cef788f398 rhi: metal: Query supported sample counts from the device
Check if 2, 4, 8 are actually supported.

Pick-to: 6.2
Fixes: QTBUG-97146
Change-Id: I23c22c2bfeb072b9658f3b5dfba51dd6dc850de3
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2021-10-08 11:07:15 +02:00
Mitch Curtis
3fbf1f13ae Doc: clarify case sensitivity in QCompleter
This was confusing for me, being unfamiliar with the API.

Pick-to: 6.2 5.15
Change-Id: I831c6d0aa30847e069a7c21c279f147a1b24e486
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-08 08:00:39 +02:00
Thiago Macieira
1bac82fa99 QtTest: fix build with MinGW/GCC 9: no std::mutex support
Unfortunately we can't depend on the C++11, 14 or 17 Standard
Library, which is not properly and completely implemented
everywhere. All Library features above C++98 must be checked with
their corresponding __cpp_lib macro before use. This does not
apply to the C++17 Core Language.

qwaitcondition_p.h:144:20: error: 'mutex' in namespace 'std' does not name a type
  144 | using mutex = std::mutex;
      |                    ^~~~~
qwaitcondition_p.h:59:1: note: 'std::mutex' is defined in header '<mutex>'; did you forget to '#include <mutex>'?
   58 | #include <condition_variable>
  +++ |+#include <mutex>
   59 | #include <mutex>
qwaitcondition_p.h:145:33: error: 'condition_variable' in namespace 'std' does not name a type
  145 | using condition_variable = std::condition_variable;
      |                                 ^~~~~~~~~~~~~~~~~~
qwaitcondition_p.h:59:1: note: 'std::condition_variable' is defined in header '<condition_variable>'; did you forget to '#include <condition_variable>'?
   58 | #include <condition_variable>
  +++ |+#include <condition_variable>
   59 | #include <mutex>

Pick-to: 6.2
Change-Id: I2bbf422288924c198645fffd16a9249e5330136a
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-08 00:09:33 +00:00
Volker Hilsheimer
e0b6b27d39 Add style hint for preventing spin box selection on up/down
On a mobile device, selecting text in a line edit brings up the text
action popup for select/copy/cut. In a spinbox where the user changes the
value using the buttons, this can be very irritating, without providing
any usability - the user is unlikely to start typing, at least not
without first transferring focus into the lineedit first to bring up the
keyboard.

This style hint allows styles to override the default behavior of
QAbstractSpinBox. Implement the customization for the Android style, and
add a test case for QSpinBox.

[ChangeLog][QtWidgets][QStyle] A new style hint, SH_SpinBox_SelectOnStep,
specifies whether pressing the up/down buttons or keys in a spinbox will
automatically select the text.

Fixes: QTBUG-93366
Change-Id: If06365a7c62087a2213145e13119f56544ac33b5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2021-10-08 00:45:18 +02:00
Mårten Nordheim
1834fcad33 QNI: NetworkListManager: Extract the Events class
Moving the class out makes it easier to navigate the code

Change-Id: I8de67641512a7dbbf6446cdca9d8dea79a63c217
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2021-10-07 19:08:47 +02:00
Mårten Nordheim
5d941c7660 QNI:NetworkManager: Update dbus interface usage
We were using the non-standard interface for PropertiesChanged, and
support for this was dropped in a Network Manager update earlier this
year[0].

Switch to using the standard interface.

[0] https://networkmanager.dev/blog/networkmanager-1-32/

Pick-to: 6.2
Change-Id: Ibdf2b635ae13a3150c4d2faa028c15c70c8af5ca
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2021-10-07 19:08:39 +02:00
Mårten Nordheim
5d2fa94297 QNetworkInformation: support transportMedium with NetworkManager
Task-number: QTBUG-91023
Change-Id: Ie50e29ec321768ec6d0358d96a8c36b9b7cb10ba
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-07 19:08:35 +02:00
Mårten Nordheim
5b8a4c2063 QNI:Android: unify behavior of callbacks
The first callback added for the android backend does not have the value
as a parameter which is something the other callbacks have. Change it so
it does.

And promote the lambda to a real function.

Change-Id: I06f10f7c79f33a5ea3154f2fc6d20d550cd7eca7
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-07 19:08:30 +02:00
Mårten Nordheim
589389843c QNetworkInformation: add support for transportMedium on Android
It's part of the capabilities which we are already using. It also lets
us work around a pre-existing edge-case where, if you have a VPN enabled
and enable Airplane mode it will continue to tell you it is Online even
when it is not. This happens because VPN is reported as a transport and
when Airplane mode is enabled it may be left enabled as the _only_
transport.

At the same time clear the default filters (if any), and filter out
suspended connections. May not necessarily make any difference.

And add a comment for why we cannot use a technically more suitable
type of callback.

Task-number: QTBUG-91023
Change-Id: Ic26c4d4e8da139ec8606a0b1bf5fb7157bd0beaf
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-07 19:08:26 +02:00
Mårten Nordheim
7fb855e175 QNetworkInfo: Add transport medium detection API
The new public API returns and notifies changes to the currently active
transport medium for the application. And there's a new private API to
report it, with backends to follow.

Task-number: QTBUG-91023
Change-Id: I527985f9dabcd7bc4a32f36597e21bc4ab664c4e
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2021-10-07 19:08:23 +02:00
Fabian Kosmale
d9f6fba385 Fix compilation with -trace
Fixes: QTBUG-97241
Pick-to: 6.2
Change-Id: I877c6f0792ad2281ccfc73b7549dad7d6bd68995
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-07 17:42:38 +02:00
Doris Verria
911c97f2b5 QCocoaWindow: Make window key if the app's modal window is hidden
On macOS, when showing a window, we decide if it should be made
key and therefore active, if the app has no active modal session
or if the window's worksWhenModal returns true.

However, the window needs to be made key also when a modal window
is present, but not visible. Add this condition when checking if
the window needs to be made key.

This makes the behavior consistent with what happens when a modal
is minimized on macOS. The input focus is passed to the next window,
and the window appears active, even if it can not be interacted with.

Fixes: QTBUG-85574
Pick-to: 5.15 6.2
Change-Id: I204d4f912128f4a46840789fc2ee08e1b2716bfc
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-07 14:30:53 +00:00
Edward Welbourne
c1281c306c Fix handling of grouping characters when validating doubles
In QDoubleSpinBoxPrivate::validateAndInterpret() some code still
assumed checking one entry in a QString is enough (it isn't - the
grouping separator may be a surrogate pair) and nothing considered the
case of an empty grouping separator (as can arise if the user sets
that in their system configuration, as a brute-force way to suppress
digit-grouping). Failure to consider this case failed an assertion on
dereferencing the first character of the separator.

Handle the case of empty separator and suppress tests that try to
match a separator, when there is no separator.

Pick-to: 6.2
Fixes: QTBUG-96734
Change-Id: I63d3205ef8656a2cd2c0d855a25e712ad66e2429
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2021-10-07 14:22:56 +02:00
Morten Johan Sørvig
7b46ba165e Add message debug entry for DPI change events
WM_GETDPISCALEDSIZE and WM_DPICHANGED.

Pick-to: 6.2
Change-Id: I0614b0f552e52fc77d026dbc7e8c13b05f7d0e9e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-10-07 14:22:56 +02:00
Morten Johan Sørvig
81707951fe Fix programatic geometry change to different DPI
The event flow for programatic window geometry change
(e.g. from MoveWindow()) differs from user-interactive
geometry change: We still get WM_DPICHANGED, but this
event is not preceded by WM_GETDPISCALEDSIZE, so we don’t
get to override the window size.

However, Qt has already scaled the window size for the
new DPI in this case (the scaled size is provided to
QWindowsWindow::setGeometry()), so we can omit making
second native set-geometry call.

Pick-to: 6.2
Change-Id: Ia7d42d7fee49adf757e7fe75d77f1731405ad519
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-10-07 14:22:55 +02:00
Morten Johan Sørvig
2cfca7fd19 Handle WM_GETDPISCALEDSIZE
By handling WM_GETDPISCALEDSIZE we can keep QWindow’s
device independent size constant across DPI changes.
This is done by scaling QPlatformWindow’s native size
such that the change of scale factor and change of
QPlatformWindow size cancels out.

Qt now handles DPI change using two events:

WM_GETDPISCALEDSIZE: Compute the new size for the window.
WM_DPICHANGED: Apply the new DPI and window geometry.

The reason for this complication is that Windows retains
control over the window position during the DPI change,
in order to e.g. accurately track the cursor position
during a screen change.

The default WM_GETDPISCALEDSIZE implementation (provided
by Windows) scales the win32 window size linearly with
the DPI change. We want to use linear scaling as well,
however the win32 window size includes the margins, which
do not change linearly as the DPI changes.

Instead, scale the QPlatformWindow size, and then add
the new margins.

Pick-to: 6.2
Change-Id: I4f225be8fad56b1fa77e9e3cfd6538a206589d73
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-10-07 14:22:55 +02:00
Morten Johan Sørvig
cd96d87011 Move VM_DPICHANGE handling to QWindowsWindow
We want to have as little code in the QWindowsContext
event switch as possible.

Pick-to: 6.2
Change-Id: I04d578aae81c4ee804310a70bd87ee60b2890b6a
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2021-10-07 14:22:55 +02:00
Kai Köhne
3936648c60 Doc: Remove mentioning of CMake 3.9 minimum version
Change-Id: Ia63bc7f305e673588ec57a7405ed5c0fdf3f5074
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2021-10-07 14:22:55 +02:00
Volker Hilsheimer
51300566ff Fix closing and showing a window with a native child
Closing a window with a native child results in the native child's
QWidgetWindow being closed. That explicitly calls setVisible(false)
on the child, which will still have the ExplicitShowHide attribute
set from the initial (explicit) show. Even though we then reset
the ExplicitShowHide, the WState_Hidden attribute will still be
set, so Qt considers the window to have been hidden, and not show
it again when the parent becomes visible.

Add a test case.

Fixes: QTBUG-96286
Fixes: QTBUG-79012
Fixes: QTBUG-71519
Change-Id: I482e6d5236c959d82ce66798176b259a3176972c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2021-10-07 12:54:10 +02:00
Ulf Hermann
5d17487723 Return a plain QMetaObject* from toDynamicMetaObject()
The only place where we use it, we swiftly cast it to QMetaObject*
anyway. Generating an object with virtual methods, only to then cast to
its non-virtual base type is dangerous. Also, if we are required to
return a QAbstractDynamicMetaObject from a method of
QDynamicMetaObjectData, we cannot implement QDynamicMetaObjectData
without also implementing QAbstractDynamicMetaObject. This indirectly
forces us to copy metaobjects around as we cannot wrap an existing
metaobject into a QDynamicMetaObjectData subclass.

Copying metaobjects around makes QMetaObject::inherits() unusable
because inherits() assumes identity is determined by identity of the
pointer.

Change-Id: Icbe697efa6fd66649eef3c91260c95cda62e3c90
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-10-07 12:54:10 +02:00
Volker Hilsheimer
638e0c3144 Silence static analyzer warning
The static analyzer can't see that the QPointer not being null implies
that the QWidget pointer is still valid. Since we reset the widget
pointer to nullptr earlier on if the QPointer is null, just test for the
widget pointer instead.

Amends f6befd3e63 and fixes report
020fbdde70065e8de370537304d13d21.

Change-Id: I715764956a02b1300766a3cea2d427f840f1cec8
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2021-10-07 10:54:10 +00:00
Eskil Abrahamsen Blomfeldt
4d47b18c81 Revert "Support family names that end/start with space"
This reverts commit 7fd9ed3201.

While trimming the font name worked for cases with application fonts,
it actually introduced an assert for system fonts that ended with a
space, because enumerating these failed. So the original assumption
that all Windows APIs also trimmed the family name was wrong.

The original bug was that the font with the trailing space could
not be selected, but when using setFamilies(), it can. So there is
a perfectly fine way around the original bug when using a font that
has this problem. Therefore, no additional fix is needed for that.

[ChangeLog][Windows] Fixed an assert that happened when the system
had a font with a trailing or leading space in its name.

Pick-to: 5.15 6.1 6.2
Fixes: QTBUG-93885
Task-number: QTBUG-79140
Change-Id: I6d9df31a4f2c6555d38d51da374f69b6fb0f1ecb
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-07 12:35:04 +02:00
Ulf Hermann
7ecb3d3f1a QPlatformFontDatabase: Don't copy metaobjects
This is expensive and unnecessary here.

Change-Id: I542c0309db5839c696f51b066cd5423a63468438
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2021-10-07 11:25:24 +02:00
Ilya Fedin
62a81bddfa Always fallback opening URLs to the regular way if portal fails
Even if the code fails, the runtime will have a xdg-open binary
that supports the required API (portals in flatpak and userd launcher
in snap)

Task-number: QTBUG-83939
Change-Id: I8527cfe20411c535686b7171ff9ef285ab9e10aa
Reviewed-by: Jan Grulich <jgrulich@redhat.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-07 01:54:36 +04:00
Thiago Macieira
46fc01d7ca QElfParser: rewrite using elf.h
This rewrite uses the actual structures supplied by the system's C
library, so it should be easier to read. It removes hardcoded constants
with little evident meaning in favor of sizeof() and the macros from
that header. It also removes advancing the data pointer in favor of
having absolute offsets.

The resulting implementation is stricter than the original, checking
more fields in the header. Because the QPluginLoader and QFactoryLoader
users may make decisions based on availability of plugins before
attempting to load them, it's better to be stricter here than to fail
later when trying to dlopen() them.

Debugging and testing are much improved. Instead of stored artifacts, I
added a routine to modify a valid plugin to make it invalid, given the
conditions we've found so far.

If you turn debugging on for this category, you'll see things like:

 not-elf.fcqdMq.so : Not an ELF file (invalid signature)
 wrong-word-size.QrnSAx.so : ELF 32-bit LSB (GNU/Linux), version 1, shared library or PIC executable, x86-64
 invalid-word-size.bOkXvp.so : Invalid ELF file (class 0), LSB (GNU/Linux)
 unknown-word-size.ogYKeF.so : Invalid ELF file (class 66), LSB (GNU/Linux)
 wrong-endian.owiElX.so : ELF 64-bit MSB (GNU/Linux), version 1, shared library or PIC executable, x86-64
 invalid-endian.FRxClR.so : ELF 64-bit invalid endianness (0) (GNU/Linux)
 unknown-endian.FfvRrP.so : ELF 64-bit invalid endianness (65) (GNU/Linux)
 elf-version-0.gPTdpQ.so : ELF 64-bit LSB (GNU/Linux), file version 0
 elf-version-2.jlIUUg.so : ELF 64-bit LSB (GNU/Linux), file version 2
 executable.LlXiFp.so : ELF 64-bit LSB (GNU/Linux), version 1, executable, x86-64
 relocatable.UsOYuy.so : ELF 64-bit LSB (GNU/Linux), version 1, relocatable, x86-64
 core-file.hqvNRz.so : ELF 64-bit LSB (GNU/Linux), version 1, core dump, x86-64
 invalid-type.CIJgfS.so : ELF 64-bit LSB (GNU/Linux), version 1, unknown type 259, x86-64
 wrong-arch.UcNmgz.so : ELF 64-bit LSB (GNU/Linux), version 1, shared library or PIC executable, AArch64
 file-version-0.lZYuda.so : ELF 64-bit LSB (GNU/Linux), version 0, shared library or PIC executable, x86-64
 file-version-2.ucfdwL.so : ELF 64-bit LSB (GNU/Linux), version 2, shared library or PIC executable, x86-64
 no-sections.rSjsHh.so : ELF 64-bit LSB (GNU/Linux), version 1, shared library or PIC executable, x86-64
 no-sections.rSjsHh.so : contains 0 sections of 64 bytes at offset 0 ; section header string table (shstrtab) is entry 0
 no-sections.rSjsHh.so : no section table present, not able to find Qt metadata
 qtmetadata-executable.vrxcIf.so : ELF 64-bit LSB (GNU/Linux), version 1, shared library or PIC executable, x86-64
 qtmetadata-executable.vrxcIf.so : contains 42 sections of 64 bytes at offset 997256 ; section header string table (shstrtab) is entry 41
 qtmetadata-executable.vrxcIf.so : shstrtab section is located at offset 996831 size 423
 qtmetadata-executable.vrxcIf.so : section 0 name "" type NULL flags X offset 0x0 size 0x0
 qtmetadata-executable.vrxcIf.so : section 1 name ".note.gnu.property" type NOTE flags AX offset 0x2a8 size 0x30
 qtmetadata-executable.vrxcIf.so : section 2 name ".note.gnu.build-id" type NOTE flags AX offset 0x2d8 size 0x24
 qtmetadata-executable.vrxcIf.so : section 3 name ".hash" type HASH flags AX offset 0x300 size 0x44c
 qtmetadata-executable.vrxcIf.so : section 4 name ".gnu.hash" type 0x6ffffff6 flags AX offset 0x750 size 0x3b8
 qtmetadata-executable.vrxcIf.so : section 5 name ".dynsym" type DYNSYM flags AX offset 0xb08 size 0xd50
 qtmetadata-executable.vrxcIf.so : section 6 name ".dynstr" type STRTAB flags AX offset 0x1858 size 0x15d8
 qtmetadata-executable.vrxcIf.so : section 7 name ".gnu.version" type 0x6fffffff flags AX offset 0x2e30 size 0x11c
 qtmetadata-executable.vrxcIf.so : section 8 name ".gnu.version_r" type 0x6ffffffe flags AX offset 0x2f50 size 0xb0
 qtmetadata-executable.vrxcIf.so : section 9 name ".rela.dyn" type RELA flags AX offset 0x3000 size 0x480
 qtmetadata-executable.vrxcIf.so : section 10 name ".rela.plt" type RELA flags AX offset 0x3480 size 0x7e0
 qtmetadata-executable.vrxcIf.so : section 11 name ".init" type PROGBITS flags AX offset 0x4000 size 0x1b
 qtmetadata-executable.vrxcIf.so : section 12 name ".plt" type PROGBITS flags AX offset 0x4020 size 0x550
 qtmetadata-executable.vrxcIf.so : section 13 name ".plt.got" type PROGBITS flags AX offset 0x4570 size 0x8
 qtmetadata-executable.vrxcIf.so : section 14 name ".text" type PROGBITS flags AX offset 0x4580 size 0x110e
 qtmetadata-executable.vrxcIf.so : section 15 name ".fini" type PROGBITS flags AX offset 0x5690 size 0xd
 qtmetadata-executable.vrxcIf.so : section 16 name ".rodata" type PROGBITS flags AX offset 0x6000 size 0x473
 qtmetadata-executable.vrxcIf.so : section 17 name ".qtversion" type PROGBITS flags AX offset 0x6478 size 0x10
 qtmetadata-executable.vrxcIf.so : section 18 name ".qtmetadata" type PROGBITS flags AX offset 0x64a0 size 0x19b
 qtmetadata-executable.vrxcIf.so : found .qtmetadata section
 qtmetadata-writable.stzwrk.so : ELF 64-bit LSB (GNU/Linux), version 1, shared library or PIC executable, x86-64

Change-Id: I42eb903a916645db9900fffd16a4437af9728eea
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-06 12:12:53 -07:00
Timur Pocheptsov
3abcff49eb QTlsBackend (OpenSSL) : detect incompatible versions
OpenSSL v3 among other nice things brought some nasty crashes
(essentially, finally breaking what was already not so nice
in 1.x: see, e.g. ASN1_ITEM_free and ASN1_ITEM_ptr that we
have to use to free resources allocated by openssl). Let's,
at least, not use v3 from Qt built with 1.1.1 and vice
versa.

Pick-to: 6.2 5.15
Change-Id: If14a2a0ce2189a1b7967b7ab7248d11d0f2fc423
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-06 21:12:53 +02:00
Assam Boudjelthia
b02d88e416 Android: Update and add missing gradle files for jar folders
Update the build.gradle for main Qt jar code, and add same files for
network and network information backend, so the code can be managed
from Android Studio.

This also adds .gitignore to ignore Android Studio build artefacts.

Pick-to: 6.2
Change-Id: Ic06e9d12708070fad112f17e58b8754608d184f3
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-06 16:05:19 +03:00
Assam Boudjelthia
3dbca82f86 Android: use gradle repo mavenCentral() instead of jcenter()
jcenter() is deprecated and will be shutdown by next year [1], thus
the replacement mavenCentral() could be used instead.

[1] https://blog.gradle.org/jcenter-shutdown

Pick-to: 6.2
Change-Id: Ic9d1c15d657f23712ee4c866d5c1a45706353429
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2021-10-06 16:05:18 +03:00
Allan Sandfeld Jensen
733923c81c Add a safer way to use QThreadPool::reserveThread
Add startOnReservedThread that specifically releases a reserved thread
and uses it atomically for a given task. This can make a positive
number of reserved threads work.

Change-Id: I4bd1dced24bb46fcb365f12cbc9c7905dc66cdf1
Reviewed-by: David Faure <david.faure@kdab.com>
2021-10-06 14:55:20 +02:00
Ilya Fedin
816c5de460 Add support for EGL_EXT_platform_xcb
This allows to create EGL context without involving Xlib.
This extension was created a year ago and is present in Mesa since 21.0

Change-Id: Id9bcbffe8c46cb00d9cc0a9a425c1706d1b52b28
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2021-10-06 15:34:17 +04:00
Alex Trotsenko
82b86960c0 QLocalSocket/Win: stop reading in close()
After calling close(), the socket can enter 'Closing' state, in which
we try to write buffered data before disconnecting. As the device is
already closed, we must disable any pipe reader activity and clear the
read buffer.

Change-Id: I8994df32bf324325d54dd36cbe1a1ee3f08022d1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2021-10-06 10:16:14 +03:00
Tor Arne Vestbø
b689d8dccd macOS: Disable PCRE JIT when running under Rosetta
Although the Apple docs claim that Rosetta can translate apps that
contain just-in-time (JIT) compilers, it seems to have problems with
the PCRE JIT.

https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment

To be on the safe side we disable the JIT explicitly when detecting that
we are running under Rosetta. It's already disabled when we're running
on macOS ARM natively (see 2f8df4d1a8).

Fixes: QTBUG-97085
Pick-to: 6.2
Change-Id: I0e133939f28087560d4bc8354b7e49013e94a9f9
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2021-10-05 20:28:41 +00:00
Wang Chuan
60caec953f macOS: Ensure cancelOperation is sent as regular key event
Since 9e1875483c the logic of sending
QKeyEvent was changed to only happen when we explicitly decided to not
treat input as complex text, or when a selector for a command was not
found. This missed the case where we handle cancelOperation by falling
back to sending a regular key event. We now set m_sendKeyEvent to true
to trigger this logic.

Fixes: QTBUG-97119
Pick-to: 6.2
Change-Id: Ibb72f4b068cce735db8d76e5e0a1882aae115207
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-10-05 20:28:41 +00:00
Ievgenii Meshcheriakov
cb651f81de Update Harfbuzz to version 3.0.0
[ChangeLog][Text] Updated bundled Harfbuzz to
version 3.0.0.

Change-Id: I8d9fb465586bc1dbe58ce91b7f49c8483982c75a
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2021-10-05 21:53:10 +02:00
Giuseppe D'Angelo
fab1debb74 QTest: support initMain() in QTEST_APPLESS_MAIN
The various macros that implement a test's main() call a test object
initMain() static function, except for QTEST_APPLESS_MAIN. Add it to it.

[ChangeLog][QtTest] initMain() is now also supported when using
QTEST_APPLESS_MAIN.

Change-Id: I46b1eae5ce3bb8c9a5aca525f193c9250e520c6d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-05 21:53:10 +02:00
Eirik Aavitsland
2a546690bf Support transformations in pattern/texture brushes in pdf
The brush transform was ignored for pattern/texture brushes. Since
fill patterns always have a transform in pdf anyway, we can just
multiply in the brush transform.

Fixes: QTBUG-96978
Pick-to: 6.2
Change-Id: I80357f61fb879dfb1226d4ef9469ae5c9a9c1147
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
2021-10-05 20:38:02 +02:00
Tor Arne Vestbø
719990d4ef xcb: Flush scrolled region of backingstore to client when requesting image
We were doing this for composeAndFlush already, which accesses the image
via graphicsBuffer().

Task-number: QTBUG-64504
Task-number: QTBUG-64414
Pick-to: 6.2
Change-Id: I51cc002db8a15991f8a8aa32e849c07318e6e74c
Reviewed-by: Błażej Szczygieł <mumei6102@gmail.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2021-10-05 18:29:11 +02:00
Alexey Edelev
0a02d84555 Add basic android multi-abi support for CMake projects
Use CMake external project to crosscompile android libraries for
mutliple android ABIs at the same time.
The idea behind is to use pre-compiled Qt for each android ABI in
external projects, compile libraries and then utilize results of
compilation in common androiddeployqt call.

By default multi-abi build uses the main ABI that qt toolchain file
belongs to. The list of the autodetected Qt for Android ABIs is stored
in QT_DEFAULT_ANDROID_ABIS cache variable. Users may change the set of
the Android ABIs project-wide using QT_ANDROID_ABIS CMake variable or
for the specific target by adding the ANDROID_ABIS argument when
calling qt6_add_executable. To enable build for the autodetected ABIs
user may set the QT_ANDROID_BUILD_ALL_ABIS option to TRUE.

By default build procedure is looking for the respective android_<abi>
folders to run per-abi build. If user's Qt for Android folder structure
is different then one is created by Qt installer, path to the each
Qt for Android might be overwritten using QT_PATH_ANDROID_ABI_<abi>
CMake variable.

Note: This only adds support for the multi-abi build of user's
applications.

TODO: This commit limits projects to not have in-tree library
dependencies. That means that executable targets may have
dependencies only from Qt directories or android sysroots.
See QTBUG-94714 for details.

[ChangeLog][Android][Platform Specific Changes] Added basic support
for multi-abi builds of user projects.

Task-number: QTBUG-88841
Change-Id: I3239ffe61e6b437e170c8decc5c36a9e774ed0fb
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2021-10-05 17:56:20 +02:00
David Faure
a5073956f8 QSFPM: remove redundant call to update_source_sort_column()
Everywhere else in this code, it says
  if (update_source_sort_column() && dynamic_sortfilter)
so, doing the same here.

This originally comes from commit 3ffcfc357d
but skelly isn't around anymore, and Milian (reviewer) had
no objection to this change either. Looking into the implementation,
calling it twice is a no-op anyway, create_mapping will early-return
with "already done".

On the other hand, now it has a chance of returning true, while before
it would always return false in the second call ("return true if the column was changed").
I couldn't write a unittest for that case though, it would require that
a source reset also changes the proxy->source column mapping somehow,
but I don't see how that can be done (the latter being the QSFPM setup).

Change-Id: Ie560facf1039a1afc02543e83bfdef0f8f2e09fc
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-05 17:53:04 +02:00
Juan Casafranca
0263cfdfa0 Remove qshadergraph files
- Those files were moved as part of Qt3D as its the sole
  user of these
- Also removed associated unit tests

Pick-to: 6.2 5.15
Change-Id: I302bc219218a58071c86d2447cb4449601fca32c
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mike Krus <mike.krus@kdab.com>
2021-10-05 17:49:51 +02:00
Mårten Nordheim
f2040b8939 QNetworkInformation: refactor NetworkManager backend a little
Using individual booleans to track that the value had changed was not
necessary.

Change-Id: Ieb4712776339aa78bdc75d7608fd74f96d19bbae
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-05 17:34:41 +02:00
Kai Köhne
2b48a4ebca Doc: Do not highlight DTLS client/server
The client and server do in practice depend on each other.
So setting up things is a tad more complicated, and the use
case not big enough to warrant both to be highlighted.

Task-number: QTBUG-96575
Pick-to: 6.2
Change-Id: I0ed69f7a20ec490cc977bde7f1b09162153d0bd2
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2021-10-05 13:48:22 +00:00
Kai Köhne
461c3c58db Doc: remove unnecessary newline in snippet
Pick-to: 6.2
Change-Id: I6031fe8db971be4cbcaec8f1dc6fa7346edb601b
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-10-05 13:48:22 +00:00
Kai Köhne
214afbdddf Doc: Make it explicit when CMake API is defined
Task-number: QTBUG-96239
Pick-to: 6.2
Change-Id: Iaa99024f98f5422aa39f148a89594186b40344bf
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-10-05 15:48:22 +02:00
Fabian Kosmale
5381f6c877 Remove QWeakPointer::operator->
operator-> was only defined if QWEAKPOINTER_ENABLE_ARROW is defined.
However, even in that case it would call QWeakPointer<T>::data, which
does not actually exist. Take this as an indicator that nobody actually
uses operator->, and remove the code completely.
Note that the QWEAKPOINTER_ENABLE_ARROW was not documented, and neither
was operator->.

Change-Id: I2f4aa961a64281542c8c1b248a993e83471c059d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2021-10-05 12:26:24 +02:00
Alex Trotsenko
1bed4a2565 QLocalSocket/Win: add missing check to waitForBytesWritten()
Calling pipeWriter->checkForWrite() can indirectly close the socket
even if the bytesWritten() signal has not been sent. So, we need to
make sure the handle is valid before checking pipe state in the
reader.

There is no harm in calling PeekNamedPipe() with an invalid handle,
but the wrong call should be avoided.

This patch amends b2c3b3e8fe.

Change-Id: I5d2ecbbbe0af817aac68ad6f1173b0ed9b324e98
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2021-10-05 08:32:58 +03:00
Thiago Macieira
2549a88ba2 QPlugin: pass the direct header to qJsonFromRawLibraryMetaData()
This is done in preparation for storing the metadata without the magic
string in static plugins and in ELF notes.

Change-Id: I3eb1bd30e0124f89a052fffd16a820454dd56d3e
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-04 21:51:50 -07:00
Thiago Macieira
b07345504c QHash: suppress annoying GCC warning about allocation size too big
GCC is right, the maximum memory allocation is half the VM size,
not the full VM size or multiple times that. QHashPrivate::Span
is big.

 qhash.h:552:17: warning: argument 1 value ‘18446744073709551615’ exceeds maximum object size 9223372036854775807 [-Walloc-size-larger-than=]

Change-Id: Ie72b0dd0fbe84d2caae0fffd16a071ffb5d0c70f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-04 21:00:41 -07:00
Lorn Potter
0e100a4d89 wasm: add simd support
Emscripten only supports
SSE1, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, and 128-bit AVX instruction
sets at this time.
https://emscripten.org/docs/porting/simd.html

Browsers might need to enable simd support in the advanced
configurations
about: config or chrome:flags

Enable by configuring Qt with -sse2

Pick-to: 6.2
Fixes: QTBUG-63924
Change-Id: Ifeafae20e199dee0d19689802ad20fd0bd424ca7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2021-10-05 11:30:06 +10:00
Alexey Edelev
ef623fd16f Fix __cpp_lib_hypot related error when building in macos
If __cpp_lib_hypot is undefined in macos you may observe the error:

  error: '__cpp_lib_hypot' is not defined, evaluates to 0 [-Werror,-Wundef]

Adding the explicit check for definition suppresses the warning that
is treated as an error.

Change-Id: Ie4c185fefde2f5bab699d8fc79b6a170e64af393
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
2021-10-05 01:54:46 +02:00
Thiago Macieira
52377899d5 QPlugin: add error messages to the qt_get_metadata()
This is the already-loaded counterpart to the file scanning code

Change-Id: I3eb1bd30e0124f89a052fffd16a81f518fa95f0d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-04 14:01:44 -07:00
Thiago Macieira
279176aa5d QPlugin: simplify handling of exact results from Q{Elf,Mach}Parser
Those two scanners always return exact results, if the metadata is
present, so we don't need to re-scan (haven't needed since Qt
5.0). Especially since we scan from the end, we were spending cycles
doing unnecessary work.

Change-Id: I42eb903a916645db9900fffd16a4ccfdc7342278
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-04 14:01:43 -07:00
Thiago Macieira
461084b6c4 Q{Elf,Mach}Parser: harmonize the arguments passed
Both functions took a QString for the input file name, but while the ELF
parser had an optional QLibrary pointer (which was never null) where to
store the error string, the Mach-O parser received a pointer to a
QString. So make both of them take a single in/out QString pointer,
which has the file name on input and is cheap for us because of COW.

Drive-by fix the name of the static function in qmachparser.cpp from
"ns" (which stood for "not suitable") to "notfound".

Change-Id: I3eb1bd30e0124f89a052fffd16a8182f4f8541c3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-04 14:01:42 -07:00
Thiago Macieira
349fb14c1d QPlugin: update the arch requirements to match the x86-64 ISA levels
When we created the functionality, the levels were not yet standardized.
Now they are and you can use -march=x86-64-v3 (for example) to get to
them. We're making a split between "v1" and "baseline" here for the
benefit of 32-bit, which is not included in the ISA levels.

Change-Id: I2de1b4dfacd443148279fffd16a397a700b9a15a
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-04 14:01:40 -07:00
Thiago Macieira
16e7366b5c QPlugin: use one global metadata magic string
And use QByteArrayView where applicable.

Change-Id: I2de1b4dfacd443148279fffd16a39ec22908f75f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-04 14:01:37 -07:00
Thiago Macieira
788a7bfdb1 QPlugin: move some of the logic from moc's output to qplugin.h
This will allow us to make changes in QtCore itself, without having to
worry about moc compatibility.

The output uses an #ifdef so this version of moc can still be used to
compile earlier versions of Qt (usually, in cross-compilation
environments). See discussion in the mailing list[1].

[1] https://lists.qt-project.org/pipermail/development/2021-September/041732.html

Change-Id: I2de1b4dfacd443148279fffd16a39784c80c5f3b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-04 14:01:34 -07:00
Thiago Macieira
2adf444b5e QPlugin: change the generic metadata scan to forwards
The reason it scanned backwards was valid, but unfortunately that
doesn't work if the metadata magic appears in the debug info that comes
after the metadata.

Task-number: QTBUG-67461
Change-Id: I2bbf422288924c198645fffd16a9276767ca2589
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-04 14:01:32 -07:00
Thiago Macieira
f21522a4b4 src/corelib/plugin: sort #includes
Change-Id: I2de1b4dfacd443148279fffd16a3e4bdb1a49f88
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-04 14:01:31 -07:00
Thiago Macieira
96a1da00d2 QEventLoop: remove unnecessary bits of Qt 5 suggestion
Pick-to: 6.2
Change-Id: I2bbf422288924c198645fffd16a974803ab43b7f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-04 12:01:20 -07:00
Assam Boudjelthia
2028b80b6b CMake: Allow providing custom QT_ANDROID_SDK_BUILD_TOOLS_REVISION
The current CMake configuration sets QT_ANDROID_SDK_BUILD_TOOLS_REVISION
only internally, taking the latest build-tools found. A project might
still want to manually set specific build-tools version.

Pick-to: 6.2
Task-number: QTBUG-97002
Change-Id: I553563638160fdef7a27b9b334d1d9aae5d8b7e1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2021-10-04 21:17:07 +03:00
Albert Astals Cid
ae10084ef9 Respect font stretch if set together with font style
Fixes: QTBUG-77854
Change-Id: I2bf9cea9d5ecd151a9d96bbe93e9477a9159ca1f
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2021-10-04 16:10:11 +02:00
Albert Astals Cid
c89c145616 Fix QPainterPath with QFont::SmallCaps
Previous code was getting the QFontEngine from the font+script instead of from
the QTextEngine.

The font+script is not enough information to know if a given character is
smallcaps or not, while the QTextEngine actually has access to the information
needed and returns a properly a scaled fontengine if character is small caps

Pick-to: 6.2
Fixes: QTBUG-13965
Change-Id: I9f95bd2f3c3bdff76c3acb94fa2edc99cdeb0a13
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2021-10-04 16:10:04 +02:00
Edward Welbourne
3a8c8e7cf6 Remove an overly-complex assertion
It tried to sanity-check the correction being made to the time as a
result of converting zone to UTC, but handling also the case where the
correction avoided a gap. However, there are too many quirky cases to
permit a simple condition. The latest to trip it up is a case of a
zone leaving local solar mean time; a time in the gap that hits is
shunted by the width of the gap, which could be any old thing, and
won't show up on the data describing the zone before or after the
transition.

In any case, one branch of the check was doubling the zone's standard
time offset, which makes no sense. As that was checking for
double-DST, it would need to check standard offset plus twice the
usual DST offset; but the data it's looking at probably has its DST
offset set to the doubled one that needs to deal with. In general a
change in DST without going via standard time will have problems here,
and a change to standard time could also present problems.

Stop trying to shore up the assert and just trust the offset we got.

Change-Id: I4519f47e79dfb7595f4a12c259b80a338bc7033c
Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-04 16:03:36 +02:00
Kai Köhne
e0ecb0ded2 Doc: Add overview pages to CMake API
So far the pages were only 'rooted' in the separate qtcmake
documentation. Let them have a page per module too, so that
it's easy to navigate.

At the same time rename the cmake-macros-qtcore group to
cmake-commands-qtcore. This will require a fixup in qtdoc
repository.

Pick-to: 6.2
Change-Id: Ifc09b27a6c220b5feab64686ca47c60d3342e71a
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-10-04 15:55:10 +02:00
Tor Arne Vestbø
d78245ce8f Fix reference to quitOnLastWindowClosed in WA_QuitOnClose docs
The property is nowadays on QGuiApplication.

Pick-to: 6.2
Change-Id: I8759761b08b0cdcef786ca96a7fa6364331f157d
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2021-10-04 15:55:10 +02:00
Kai Köhne
23125b3f01 Doc: Add summary to CMake commands
For normal \page elements, \brief is just showing in the
\generatelist or \annotatedlist commands. Make sure the description
is also visible in the actual CMake command/variable/property
page by defining a \summary macro.

Pick-to: 6.2
Change-Id: I12bc854d547059a2f6309a5922bb0b2a36d4e41c
Reviewed-by: Craig Scott <craig.scott@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2021-10-04 15:55:10 +02:00
Andreas Buhr
1405c1d5bf androiddeployqt: only write enabled architectures to build.gradle
androiddeployqt writes a list of architectures into the build.gradle
file. This list should only contain the architectures which are enabled.
This patch adapts the generation of this list accordingly.
Amends 07cfab07a2.

Change-Id: I5c7c1886c54cc3b9a7e42af6eefbaf2a067a67d5
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2021-10-04 12:04:16 +02:00
Alex Trotsenko
a8823db578 QRingBuffer: port internals from int to qsizetype
Since Qt6, QByteArray uses qsizetype as an integral type for offsets
and sizes. In order to support large blocks, we have to migrate to
that as well.

Change-Id: I2c2983129d6a2e0a1e8078cc41d446a26e27288c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-03 21:01:51 +03:00
Ievgenii Meshcheriakov
9a3f4afb70 Remove checks for features available in C++17
This patch removes most of the checks that are made using C++20
__cpp_* macros for features available in C++17 and earlier.
Library feature check macros (__cpp_lib_*) are unaffected.

Change-Id: I557b2bd0d4ff09b13837555e9880eb28e0355f64
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-02 17:54:39 +02:00
Assam Boudjelthia
a1e7c441de Android: remove comments from the manifest file
The comments are not needed, since we're adding a docs page
for the manifest, which include the information from these
comments and more. Keep the manifest clean.

Pick-to: 6.2
Task-number: QTBUG-95285
Change-Id: I1fd8bc695f5aab1bcc69f549cb3ddeeaac168b98
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2021-10-02 12:11:23 +00:00
Assam Boudjelthia
eb0a783e63 Android: fix Gradle version in qt_attribution file
The Gradle version in qt_attribution.json doesn't mention the actual
version that is currently used.

This amends 67c3f3f4ff.

Pick-to: 6.2
Fixes: QTBUG-71328
Change-Id: I50fbabd56beb44389f9453666822f9667bab7d61
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-02 12:11:16 +00:00
Fabian Kosmale
55689e301c Purge Q_NO_TEMPLATE_FRIENDS and platforms lacking support for them
Given that we rely on C++17, it should be safe to mandate that level of
language support.

Change-Id: If07ccb36bea2a5113a8f5aacf635be7d2590baf7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2021-10-02 12:47:43 +02:00
Karsten Heimrich
fe360a9d52 Replace 0 with nullptr
Change-Id: I9ee25644a3e066391e881bd2f64274909eabfcbf
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2021-10-02 12:37:27 +02:00
Giuseppe D'Angelo
b4e290a9ab Update PCRE2 to 10.38
[ChangeLog][Third-Party Code] PCRE2 has been updated to version 10.38.

Change-Id: Ib6ab544790747a94a00b8eb516314ff3c57e4c79
Pick-to: 6.2 5.15
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-02 09:28:19 +02:00
Thiago Macieira
f6fa78fd60 QByteArrayMatcher: add QByteArrayView overloads
The modification to the existing constructor was necessary to avoid
ambiguous overloads from plain strings. They'd previously only match
QByteArray, but now they match QByteArrayView too.

The QByteArray constructor must stay even in Qt 7 because the pattern is
stored. The QByteArray indexIn also stays in because of ambiguous
overloads. Unless we want to remove the const char* overloads.

Change-Id: I2bbf422288924c198645fffd16a92859b67f3978
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2021-10-01 14:23:15 -07:00
Tor Arne Vestbø
90c54b02f8 Fix scrolling of QRasterBackingStore when operating on QRasterGLSurface
We were to strict in what surface type we allowed scrolling for. The
RasterGLSurface type is an odd one, used by widgets to compose GL
and raster content, which means we still have a raster backingstore
we can scroll. It's just the flush that's different.

Pick-to: 6.2
Change-Id: Ia229c21c00ad38df9e87f4fc78e341e030ef228d
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2021-10-01 20:12:15 +02:00
Edward Welbourne
f8a5bb3c32 Use %.6g rather than %s and QByteArray::number()
The comment against the use of this claimed qvsnprintf() lacks 64-bit
support, which is probably untrue by now but certainly irrelevant as
the value being formatted is a qreal, not a 64-bit integral type.
Since %g wants a double, make the value passed explicitly double by
casting its denominator. Casting its numerator to qreal was
superfluous as that's its type already.

Change-Id: I5ff885fbeb9b638b2b0507061e0a19e3b8522143
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-10-01 19:24:31 +02:00
Edward Welbourne
09fd398959 Clean up QXmlTestLogger's xmlQuote() and xmlCdata()
Make the overloads taking a size private (they're only called by the
implementation of the others) and have them take qsizetype for the
size, rather than size_t. Make the still-public ones consistently
return 0 on failure and move the documentation to them.

Change some spurious checks (QTestCharBuffer::size() is necessarily
positive) to assertions, use '\0' for the nul character to make it
visually distinct from the integer 0. Use a do..while loop instead of
break-ing out of the tail of a for (;;) loop. Remove spurious extra
nul-termination - the function taking size alread did that, so the
wrapper to size-expand needn't. Minor style cleanups.

Change-Id: I7440f3d9be5e3b2dd88c2aad62bcd1af9fc02278
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2021-10-01 19:24:31 +02:00