Commit Graph

33873 Commits (c549ff3fd4e0ae770e6728f541db2a257d4eabd8)

Author SHA1 Message Date
Volker Hilsheimer ee92ee7a3c Remove deprecated QProcess methods
Add default parameter for arguments in start, startDetached, and
execute for better source compatibility with Qt 5.15. This has the risk
of then hiding incorrect calls to the previous overload taking a single
"command" strings if code is ported from pre-5.15 or ignores deprecation
warnings. This is acceptable, given that the alternative is that all
calls to these functions would require a default constructed QStringList
as the second parameter.

Change-Id: I1ba4df97ac4894d007da5083c8359015d784ddbb
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-05-27 11:55:06 +02:00
Shawn Rutledge 3373aa8b35 QTextMarkdownImporter: allow nesting text span formatting
The bold+italic combination indicated by ***triple stars*** requires
this; but it enables combinations of italics, bold, strikeout, anchor
text (and associated link formatting), image alternate text, and inline
code formatting (monospace). A code span overrides the formatting from
surrounding spans (which might be a bug to fix in another patch, if we
compare to how md2html formats code nested in bold-italics for example),
but the format stack restores state when any char format span ends.

Task-number: QTBUG-81306
Pick-to: 5.15
Change-Id: I289556fa53de400eb50a4d159b9b344eafc517da
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-05-27 11:55:02 +02:00
Inho Lee 2503a59e35 QRhiVertexInputAttribute : Add unsigned int formats for vertex input
Task-number: QTBUG-83173
Change-Id: I640cd1fe74227d2cc96672d6c7aaac93e1930bcd
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-27 11:54:56 +02:00
Ulf Hermann 524d781607 QProperty: Support multiple observers
Previously, only the first observer would get notified. Also, make sure
that the notifiers are always retained when switching between bindings
and values.

Change-Id: I9c25c0f2e288dac3a335b68e618f7ddeb44be25a
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-05-27 11:54:30 +02:00
Ulf Hermann 36bd34dbdc QProperty: Apply coding style and avoid warnings
Change-Id: I14efdb293a4be39b3849b34bd8013fdab016ce7e
Reviewed-by: Simon Hausmann <hausmann@gmail.com>
2020-05-27 11:54:16 +02:00
Allan Sandfeld Jensen 3768a915bc Update QColor::operator== documentation
We also compare exact encoding, not just the same values in RGB.

Pick-to: 5.15
Fixes: QTBUG-84436
Change-Id: Ia50be17864ee42cf1f6d44dd2cad27daca317faa
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2020-05-27 11:53:28 +02:00
Sona Kurazyan d7d6a1fe32 Don't queue events in QFutureWatcher when pause is requested
When QFutureWatcher (or QFutureInterface) is paused, it doesn't
mean that it will take effect immediately: the pending tasks may
still be in progress and keep reporting results. At the moment
QFutureWatcher will queue those events and report only with the
next resume. This behavior is wrong, QFutureWatcher should not
decide when to report events, the sender should decide when is the
right time. There's no benefit in reporting already happened events
with delay. Because of this, even the pause event itself was being
reported after resume.

Fixed the behavior by removing the logic of queueing events when
the state is set to "paused". It seems unlikely that the users of
QFutureWatcher rely on reporting events with delay.

[ChangeLog][Important Behavior Changes][QtCore] QFutureWatcher will not
immediately stop delivering progress and result ready signals when the
future is paused. At the moment of pausing there may be still computations
that are in progress and cannot be stopped. Signals for such computations
will be still delivered after pause, instead of being postponed and
reported only after next resume.

Fixes: QTBUG-12152
Change-Id: I9f0b545ac096578c52cc72d60575c018c01e3368
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2020-05-27 11:53:28 +02:00
Fabian Kosmale d8a2456fbf moc: handle include directives in enums
When including files, moc inserts a MOC_INCLUDE_BEGIN and
MOC_INCLUDE_END token into the token stream. Those are already handled
in the toplevel Moc::parse function, but parseEnum lacked support so
far.

Pick-to: 5.15
Fixes: QTBUG-80578
Change-Id: I35c8fd959347d94af20090b3a505dd9e6bfaff88
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-27 09:21:08 +02:00
Eric Lemanissier 370324f6e2 QMimeDatabase/xml: use xmlstarlet instead of xml
some distributions (eg Ubuntu) don't provide xml executable, but only xmlstarlet executable

Change-Id: Icc801ded8d4ec1ec4d1dab93289a2365f8cd9cbd
Pick-to: 5.15
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-26 18:04:40 +00:00
Friedemann Kleint bdcb141464 Windows: Fix wrong default font sizes after changing scaling
Use the ForDpi versions of retrieving non clientMetrics.

Pick-to: 5.15
Task-number: QTBUG-82267
Change-Id: I434f6980c47258bfe40d38723d3f66d71217e186
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-05-26 20:04:40 +02:00
Kai Koehne ec3ba7209e Document how to use CMake for Qt TestLib
Task-number: QTBUG-73058
Change-Id: I6e29a83a1346ea0d2f94fcf445e1de9c07072aa6
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-05-26 15:11:41 +02:00
Kai Koehne cede00ec89 Document how to use CMake for Qt Xml
Task-number: QTBUG-73058
Change-Id: I2d19670016c9aef5e96d74b2b7e22c675058f30c
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-05-26 15:11:41 +02:00
Kai Koehne 4f59d94bf3 Document how to use CMake for Qt Concurrent
Task-number: QTBUG-73058
Change-Id: I11398c5837b45ccacb9232609317213133ef20ea
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2020-05-26 15:11:41 +02:00
Lars Knoll 9980ba5ba5 Don't change the implementation of a method depending on QT_USE_QSTRINGUILDER
This is rather evil and caused crashes in static builds, when library
and application where compiler with different settings of the
QT_USE_QSTRINGBUILDER flag.

The reason is that the implementation of QStringDecoder::operator() was
different (and returning different data) with or without the setting.
The compiler would thus create two very different versions of this method
in different .o files. When linking the app, one of the implementations
would be chosen, leading to crashes in places where the other one was
expected.

Fix this by only providing the QStringBuilder enabled version of the
methods. They return a temporary object that's converatable to a
QString/QByteArray anyway. Make sure that qdoc shows a simple signature.

As a drive by fix a compile error in a code path that didn't get hit
so far.

Change-Id: I312fa564d0bc6b464f2b4466de1d53841f7b7b0f
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-05-26 13:11:41 +00:00
Lars Knoll a989c98393 Initialize variable
Change-Id: Ibcccd93fd4654a087c323fde08dbadb64d22156c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-05-26 15:11:41 +02:00
Kai Koehne 6456893c0b Document how to use CMake for Qt OpenGL
Task-number: QTBUG-73058
Change-Id: I8ba85fbba533c882ef63c56c1b9f20becfb36ebc
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-05-26 15:11:41 +02:00
Kai Koehne a716ee67fd Doc: Remove mentioning of qmake from Qt PlatformHeaders documentation
Change-Id: I902df9c7803e593000c2e0f9cc3ccf1505899886
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-05-26 15:11:40 +02:00
Kai Koehne 3c31dd0330 Document how to use CMake for Qt PrintSupport
Move the details on how to build after the index page.
Remove mentioning of the central include. Instead, mention
the CMake functions to use.

Task-number: QTBUG-73058
Change-Id: Ibf5952530c3b86915c9fb6562f7d9e0b010720ee
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-05-26 15:11:40 +02:00
Kai Koehne 292d49c5e9 Document how to use CMake for Qt SQL
Task-number: QTBUG-73058
Change-Id: I07fa128853531ec09852647436d9302abac1c12c
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
2020-05-26 15:11:40 +02:00
Kai Koehne 1c0ca1f3d8 Document how to use CMake for Qt DBus
Task-number: QTBUG-73058
Change-Id: Ibe0779d109682cc41e21783a3ba5fa5130d5ff7f
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-05-26 15:11:40 +02:00
Kai Koehne 162ea888bf Doc: Document Qt 6 changes for QHash, QMultiHash, QSet
Change-Id: I9a83d33f05d7c3e5d23399129dfac45a1cb0d6ad
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-26 15:11:40 +02:00
Kai Koehne b229100430 Add 'Qt Core Changes in Qt 6'
Skeleton to document changes to Qt Core in Qt 6.

Task-number: QTBUG-71036
Task-number: QTBUG-84051
Change-Id: I2720beffb934121258331efd9eeb91c07d40a5bf
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-05-26 15:11:40 +02:00
Laszlo Agocs 752497910b Remove ANGLE
This marks the end of EGL and OpenGL ES support on Windows.

The concepts of -opengl dynamic, -opengl desktop, QT_OPENGL=software,
etc. remain unchanged, with the exception of the disapperance of
everything ANGLE related.

CMake builds now work identically to qmake on Windows: they default to
'dynamic' OpenGL on Windows, unless -DINPUT_opengl=desktop is specified.

On Windows, Qt 6 is expected to default to the "dynamic" OpenGL model by
default, just like Qt 5.15. This can be changed by switching to "desktop"
OpenGL, which will link to opengl32 (publicly, so other libs and applications
will do so as well) and disallows using another OpenGL DLL.

The "dynamic" mode is essential still because the fallback to a software
rasterizer, such as the opengl32sw.dll we ship with the Qt packages,
has to to work exactly like in Qt 5, the removal of ANGLE does not
change this concept in any way (except of course that the middle option
of using ANGLE is now gone)

When it comes to the windows plugin's OpenGL blacklist feature, it works
like before and accepts the ANGLE/D3D related keywords. They will
then be ignored. Similarly, requesting QT_OPENGL=angle is ignored (but
will show a warning).

The D3D11 and DXGI configure time tests are removed: Qt 5.14 already
depends on D3D 11.1 and DXGI 1.3 headers being available unconditionally
on Win32 (in QRhi's D3D11 backend). No need to test for these.

[ChangeLog][Windows] ANGLE is no longer included with Qt. Dynamic OpenGL
builds work like before but ANGLE is no longer an option. OpenGL proper
or an alternative opengl32 implementation are the two remaining options
now. Attempting to set QT_OPENGL=angle or Qt::AA_UseOpenGLES will have
no effect on Windows.

Fixes: QTBUG-79103
Change-Id: Ia404e0d07f3fe191b27434d863c81180112ecb3b
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-05-26 15:11:40 +02:00
Giulio Camuffo 7db527dbdd Add a property to QSFPM to show children of accepted items
[ChangeLog][QtCore][QSortFilterProxyModel] Add a 'autoAcceptChildRows'
property to always show children rows of accepted rows.

Change-Id: I2402469ece438179d0f19888b9775cc27cf5c749
Reviewed-by: David Faure <david.faure@kdab.com>
2020-05-26 15:11:40 +02:00
Filipe Azevedo 3197932e6f Fix QTabBar crash with offscreen platform plugin
The offscreen implementation does not have a QPlatformNativeInterface
implementation.

Pick-to: 5.15
Change-Id: Ife4f296f52c307a2fab90de2cdc1ef0cc7796385
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-05-26 09:24:56 +02:00
Volker Hilsheimer 37b0a9c8a3 Fix deprecation warning by not going through QChar
mValue is a QByteArray, so no need to expand data to UTF16 just to
compare it to a Latin1 character.

Change-Id: Ib3c8770867cd5509bb4c2ac5e45aabca577b3bba
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-05-25 19:18:30 +00:00
Michal Klocek 71d63049f7 Fix typo in documentation of QPlatformWindow
QOpenGLWidget has backing store and does not really fit into
doc's context. Change it QOpenGLWindow.

Change-Id: I7f92e49497b8cc35d322b607c865c2914672ace3
Pick-to: 5.15
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-25 14:46:35 +02:00
VaL Doroshchuk 0ffef9cb8d RHI: Introduce QRhiTexture::RG8
Change-Id: I58f35b2629bd6464f08cba66e852215472fcbe2a
Fixes: QTBUG-84384
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-25 14:21:03 +02:00
Eirik Aavitsland ecca816ea1 Fix RHI-GL mapping of DXT3/5 compressed texture format identifiers
DXT1 is BC1, but DXT3 is BC2 and DXT5 is BC3.

Change-Id: Icb0ea4cc9efeab2453343753e9fda7f825c9b8d1
Pick-to: 5.15
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-25 13:55:52 +02:00
Alexander Volkov f57e6a3b03 xcb: Fix comments' indentation
Change-Id: Ic0a3e65dd1abc907f1941590ab042f785d90d91c
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-05-25 12:33:27 +03:00
Martin Koller 7c5775f918 allow definition of SP_LineEditClearButton in css
Added the new css property lineedit-clear-button-icon

Change-Id: I4596b923eb34325a73d0a80b72d963fd6204ea26
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-05-25 11:09:50 +02:00
Lars Knoll f1cbc3c9d2 Change QString::toIntegral_helper to use QStringView
This implicitly makes it use qsizetype for the length.

Change-Id: Ib39a5a8dd71e48b45179079f7c7fe5e4edbdb5eb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-25 10:34:31 +02:00
Lars Knoll f315f42dfd Cleanup header file
Remove dead code

Change-Id: I315f9ae2f098b1a7b72d7cd24161325822c62edd
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-05-25 10:34:14 +02:00
Rolf Eike Beer c4b172b7f0 QVncScreen: fix crash on disconnect client did not request cursor
Change-Id: I758c79d87bd239b6fde9bae4e97c5b31450fa813
Pick-to: 5.15 5.12
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-25 10:29:37 +02:00
Lorn Potter 3fbf7b34cc wasm: set status codes from network operation
Pick-to: 5.15
Fixes: QTBUG-83991
Change-Id: Ie1e88189bee8b6a9dc6cb2a721777a5e1032307a
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-05-25 17:42:06 +10:00
Lorn Potter 745a7fa31e wasm: fix heap crash when making multiple network calls
Pick-to: 5.15
Task-number: QTBUG-83991
Change-Id: I354934b53799f3eeb958395932bed18289b1e279
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-05-25 17:41:49 +10:00
Friedemann Kleint f061c413de Windows: Fix wrong DPI used in font size after changing scaling
QWindowsFontDatabase::defaultVerticalDPI(), which was used
for converting the point sizes was missing an updating
logic for scaling changes. When implementing it, it turned
out that the value obtained from GetDC(0) does not adapt
to scaling changes.

Remove the function and set it from the screen manager directly
to the DPI of the primary screen.

Pick-to: 5.15
Task-number: QTBUG-82267
Change-Id: If05ebc893fe78a9461500aba97f2dc127cdf4406
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-05-25 08:52:32 +02:00
Christian Ehrlicher 8657296173 QItemSelectionModel: simplify QItemSelectionRange
Simplify QItemSelectionRange by removing the unneeded
user-defined functions - the compiler can generate them by it's own.

Change-Id: I49c00f937df98bb1ad18057b7bae7a0e06919909
Reviewed-by: David Faure <david.faure@kdab.com>
2020-05-23 10:53:30 +02:00
Christian Ehrlicher f9874ad7bd QListWidget: remove unused member
Remove the 'dummy' member - it's not needed since ages.

Change-Id: I4869cf9153c892ea065340335ff7accd529a79c6
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-05-23 10:53:29 +02:00
Christian Ehrlicher c7ef17b231 Models: remove version check for clearItemData()
The version checks for clearItemData() are no longer needed now.

Change-Id: I5052188fb96cf637128662f3442d339820f0f41d
Reviewed-by: David Faure <david.faure@kdab.com>
2020-05-23 10:53:26 +02:00
Giuseppe D'Angelo ed2c3f6756 QSslCertificate: overhaul ASN.1 datetime parsing
Instead of manual string splitting (EW!), use QDateTime parsing.
Moreover, X.509 certificates *must* have a valid start/end date.
In case of parsing failure, reject the certificate. An autotest
for this last case is coming in a separate patch.

Change-Id: I934bf9e6a4a92e4befdb3b0f9450f76f67bad067
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-05-22 15:40:22 +02:00
Tor Arne Vestbø 7a1650e343 Move QtVulkanSupport into QtGui and QtOpenGL
Task-number: QTBUG-83255
Change-Id: Ib021cecebda89fa2ab9332752124a8cec0a51a10
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-22 15:38:28 +02:00
Kai Koehne 948134371e Licenses: Remove reference to change in Qt 5.4
Qt 5.4 is not documented anymore since quite some time.

Change-Id: I6811ead502178f7acbed8cf450e42d7fd33ae29b
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-05-22 15:38:28 +02:00
Eirik Aavitsland 880f709fd0 RHI: facilitate compressed atlas textures in gles2 backend
Since glCompressedTexImage2D() does not allow zero data, it could not
be executed during texture build. Instead it would be done during the
first subresource upload. This made atlasing clumsy, since one had to
introduce a fake upload of the full texture size before the subtexture
uploads. This commits lets the gles2 backend deal with that instead.

Introduces the UsedAsCompressedAtlas QRhiTexture::Flag for opting in
to this behavior.

Task-number: QTBUG-78582
Change-Id: Ib6e4ea637c62cc8a51bd9a4a06e59882f335f2a7
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-22 10:32:11 +02:00
Eskil Abrahamsen Blomfeldt 3ec0df4b5f RHI: Store texture handle as 64-bit int
When storing a void* pointer to the texture handle, we had
to ensure that the variable would exist until the build phase,
which is error prone and caused errors in QQuickWidget because
we copied the texture ID from the FBO into a local variable
before passing it into QQuickWindow::setRenderTarget().

The reason for using a void* was that we cannot know the width
of the handles in the different backends, but we do know that
they are 64-bit at maximum, so instead of storing potentially
dangling pointers, we just make it a 64-bit integer and cast
it back and forth in the backends.

Task-number: QTBUG-78638
Change-Id: I7951e24351ddb209045ab6197d81eb1290b4da67
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-22 10:32:10 +02:00
Friedemann Kleint 547d5e1f55 Windows QPA: Fix deprecated QString::fromUtf16(ushort*) call
Amends 23849826b4.

Change-Id: Iefd29bd4c19aaf7c4444b2913bd143dc11c03d3c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-05-22 09:29:12 +02:00
Tor Arne Vestbø f76161d61f Move QRasterBackingStore to QtGui
Task-number: QTBUG-83255
Change-Id: I339173de6e109c5a9b9572972ba894c15053c034
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-05-21 20:28:37 +02:00
Lars Knoll 2f05aa82e7 Adjust resize() behavior of QString and QByteArray to match Qt 5
resize() to a smaller size does not reallocate in Qt 5 if the container
is not shared. Match this here.

As a drive-by also fix resize calls on raw data strings to ensure
they are null terminated after the resize.

Change-Id: Ic4d8830e86ed3f247020d7ece3217cebd344ae96
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-05-21 17:59:31 +02:00
Tor Arne Vestbø 42024666a3 Move QMacInternalPasteboardMime to QtGui
Task-number: QTBUG-83255
Change-Id: I00fda24479ad2c04781c5fefaa15fac1118033a8
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-05-21 13:21:53 +02:00
Alexander Volkov 9bad3508fc Add missing override
Change-Id: I88000e82ecbdc55e621dc8e22aff5e8f55cf9d0e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-21 11:34:12 +03:00
Timur Pocheptsov e7ca98f40f QSslSocket::addCaCertificates - do not duplicate certs
If we already know the certificate, there is no need in adding it again.
This function is deprecated, but will stay forever in 5.15.

Pick-to: 5.15
Change-Id: I760f5bcffea78ac02c5643ee1112725edd32f15a
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-05-20 19:46:16 +02:00
Timur Pocheptsov c86e54fb17 Make OpenSSL back-end work with 3.0 alpha
DSA/DH/etc _bits functions were first deprecated, then un-deprecated,
so we don't worry about them for now. SSL_CTX_load_verify_location was deprecated
and two new functions were introduced instead (one using file, the second
- path). It's unfortunately 3.0 only, so we have to check OpenSSL version.
DH_check is deprecated and we have to use EVP_PKEY_param_check with
tons of a boilerplate code around.

Fixes: QTBUG-83733
Pick-to: 5.15
Change-Id: Icd401ab6aad30c23c37443c7bc82c702fb843640
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-05-20 19:45:53 +02:00
Marc Mutz e1cab870cb Extend QTypeInfoMerger to more than four arguments
Use template argument pack and C++17 fold expressions.

Because MSVC doesn't grok fold expressions in
enumerator-definition contexts, use static constexpr bool
variables.

Change-Id: I13a676d9be687679ef41f7b003e50116c4cd533c
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-05-19 21:45:57 +00:00
Marc Mutz 7c070ac959 Sweep Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6 -> Q_DECLARE_SHARED
This is Qt 6, so Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6 is the same as
Q_DECLARE_SHARED.

Let's hope we'll collectively get better at detecting missing
Q_DECLARE_SHARED so we won't need a
Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT7 in the future.

Change-Id: I3da9faff4c66b64a3b257309012a2a10a6c6d027
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-19 23:45:54 +02:00
Andy Shaw 857722ed8f Android: Only have one valid QMimeData object kept around
Once the clipboard data is queried then we can clean up the previous
QMimeData object created. So rather than keeping on to it and cleaning
up when the clipboard is created we can delete it at that point. This
means it is not necessary to make it a QObject subclass, so we can save
in that respect too.

Pick-to: 5.15
Change-Id: I152ca6ea5c713abe25f75ca2016759c0e3152bfb
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2020-05-19 21:40:35 +00:00
Andy Shaw 77e978001b Android: Clear the m_selectedFile variable when showing again
Since the helper is being reused then the m_selectedFile variable should
be cleared, otherwise it ends up appending the new result to the old
one.

Change-Id: I72c24409dc91f91bad55a7da2772605f03fb4623
Pick-to: 5.15
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
2020-05-19 23:40:24 +02:00
Jan Arve Sæther 5b3a86a87b a11y: Fix bug in the accessibility cache
We could sometimes cache a partially constructed object if the accessibility
interface for that was created during construction time of the object. This
usually ended up in that the interface for e.g. QMenuBar was stored in the
cache as a QAccessibleWidget, regardless of if the a11y factory supported it.
Since it was already in the cache, it remained the same for the entire lifetime of the
application, causing e.g. QMenuBar not have the correct accessibility behavior.

Task-number: QTBUG-83993
Change-Id: I72b2d5a93f6b397fd3666d45951109e3e5aff754
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
2020-05-19 13:33:02 +02:00
Joerg Bornemann 759da6742a CMake: Generate information about 3rdparty libs in module .pri files
For modules that are not yet ported to CMake and that use
   QMAKE_USE += libfoo
we need to provide the information about libfoo in the qt_lib_XXX.pri
files.

Also, we now generate qt_ext_XXX.pri files for bundled 3rdparty libs.

Task-number: QTBUG-75666
Change-Id: I9e4b057a197554ecb37c294c0bf09e2a2b3aa053
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-05-19 13:26:53 +02:00
Mårten Nordheim aed7a65b8b QAuthenticator: Reprioritize authentication methods
The addition of Negotiate to QAuthenticator caused a soft sort of
regression in environments where there is key distribution center
set up. This was due to how QAuthenticator works in that it will
simply prefer the latest entry in the enum, which now was Negotiate,
which sadly wasn't really a valid option in that situation. And it is
not smart enough to fall back and try another method.

To work around this issue we re-order the enum to prioritize
authentication methods to restore previous behavior.
Note that Negotiate is still preferred over Basic and None because
they're not likely to appear together.

Pick-to: 5.15
Task-number: QTBUG-83905
Change-Id: Ic528318b6b711aa04d42a86c684452bb6ebde112
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-05-19 09:18:40 +00:00
Alexandru Croitor 19b6ae6637 Fix relocated Qt to be found when its path has non-ASCII characters
The path returned by dladdr seems to be encoded with the current
locale encoding which means that if it contains unicode characters, the
fromLatin1() call mangles the path, and QFile::exists reports that
the path does not exist.

To preserve non-ASCII characters use fromLocal8Bit() instead.

This should fix the runtime issue of finding the Qt prefix when the
Qt library path has non-ASCII characters.

Amends 2f52afda8e.
Amends 4ac872639e.

Fixes: QTBUG-84272
Task-number: QTBUG-15234
Pick-to: 5.14 5.15
Change-Id: I37019ed219cf2cf7d9663cb1e16acdb97b3bdf09
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-19 10:16:23 +02:00
Marc Mutz 2259a433ca QString: throughly port internals to char16_t
This includes allocating QString data as char16_t instead of ushort.

This isn't the end of the port, but an important milestone: the
traditional foldChar() functions are now all unused.

Change-Id: I766bebc2d70b6972e2045d3474c7f5770f4676d9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-19 10:15:38 +02:00
Andy Shaw 60ec350bc7 Windows: Update the hasFrame setting when changing window flags
Since changing the window flags can make it frameless or have a frame
then it should ensure that the hasFrame setting is updated accordingly
when the window flags do.

Change-Id: I7bf4995d7967623b117426d8750e63fa97967e2c
Pick-to: 5.15
Pick-to: 5.12
Fixes: QTBUG-84029
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2020-05-19 10:15:30 +02:00
Allan Sandfeld Jensen 63a88d0d26 Allow multithreaded opengl to be disabled
Pick-to: 5.15
Change-Id: I5bffb6d6844c19adc575d86d5f9846af344a8679
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-19 10:15:18 +02:00
Allan Sandfeld Jensen dddd0c3ad8 Add error message on unaligned profile inputs
Pick-to: 5.15
Task-number: QTBUG-84267
Change-Id: I7ec2100455bd0178cdff0de2d24abbe6c19f812f
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-05-19 09:31:35 +02:00
Kai Uwe Broulik cdfafec01b QTreeView: Use devicePixelRatioF for cached animation pixmap
Ensures it stays crisp also when using fractional scaling.

Change-Id: I4a319929bca0e2dc4810c2c07d06f98b7f4e10b4
Pick-to: 5.15
Reviewed-by: Liang Qi <liang.qi@qt.io>
2020-05-19 09:27:36 +02:00
Kai Koehne b19ccc3af4 Remove -qt-xcb, -system-xcb from README and comments
The options got removed in commit 60588e1a5d

Pick-to: 5.15
Change-Id: Ic94f58885dab6de3c563b3dab70385570864b47d
Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
2020-05-19 06:42:35 +00:00
Liang Qi b2c991bfea Merge "Merge remote-tracking branch 'origin/5.15' into dev" 2020-05-19 08:21:02 +02:00
Samuli Piippo 8718b0d070 cmake: add config module name for devicediscovery
Add special case for using correct module name.

Change-Id: Icfd88eccfa8adf55a69091d86a01bd1658fe2b54
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-05-19 08:51:44 +03:00
Friedemann Kleint 26100ccb83 Direct Write Font Engine: Fix leaking IDWriteFontFace instances
Patch as contributed on bug report.

Pick-to: 5.15
Pick-to: 5.12
Fixes: QTBUG-84265
Change-Id: I73d73cf7d1b46944767750bf0f0c727c7b00b1d7
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-05-19 07:44:34 +02:00
Lars Schmertmann 1b7589a25c Enable Universal Links on iOS
Pick-to: 5.15
Change-Id: I05b5bede49f619576dd9ab37444f7cb5fe0f15f0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-05-19 06:37:03 +02:00
Jani Hautakangas 4683b0b57f webOS: Fix allocateTimerId
Change-Id: I8b3777f4035401763d86b0245de43b63573b9ea6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-05-18 17:20:15 +09:00
Jarek Kobus 8a11641bb9 Enable setting custom QThreadPool for QtConcurrent methods
Task-number: QTBUG-53465
Change-Id: Icff05d5f65dce453ff702502b85c35e20fca86a9
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-05-18 10:03:29 +02:00
Liang Qi 2cd6d76d68 Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
	src/corelib/text/qbytearray.cpp

Change-Id: I63706409464d31391012bacdadfd1f6300509787
2020-05-18 08:52:33 +02:00
Friedemann Kleint 4857fee0fc Windows QPA: Fix window class name clash when mixing Qt libraries
Fix the check of the return value of GetClassInfo() to detect
a clash when mixing libraries with identical Qt namespaces.

Pick-to: 5.15
Fixes: QTBUG-84005
Change-Id: I2d13b909a85dae947c65551b7e390334c83d2e2a
Reviewed-by: André de la Rocha <andre.rocha@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-05-18 08:10:29 +02:00
Lars Knoll b800f3039a Cleanup qUncompress
Cleanup the code in qUncompress and make use of QArrayDataPointer
to keep track of memory.

Change-Id: I2c11f0468813698d2b7c25acd0f8786a289739a0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-17 20:37:48 +02:00
Lars Knoll 88c72d972a Don't access QArrayData::sharedNull() from QByteArray anymore
Change-Id: I1292f8d2d62fa96ae4c6aa91c7c95c1f3a18570f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-05-17 20:37:42 +02:00
Marc Mutz fae7a47bb3 QChar: make fullConvertCase()'s result type more usable
Move it into the function, give it an explicit size and make it
iterable and indicate to QStringView that it's a compatible container.

Change-Id: I483d9225ac73ad93f2037489f2d32473c377e8b7
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-05-17 18:06:17 +02:00
Marc Mutz 395fa85403 Add central macro to disable float comparison warnings
QParsedNumber will need it, as do some others, like QAngle.

Change-Id: Iee09f498d2cdbb28d43b94301328ec7858661ad2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-16 20:24:32 +02:00
Sona Kurazyan 1a5cc8d13d Add support of cancellation handler callbacks to QFuture
Added QFuture::onCanceled() method, for attaching handlers to be called
when the QFuture gets canceled.

Change-Id: I1f01647d6173ba0c1db6641e14140108b33ac7c4
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-05-15 22:35:30 +02:00
Sona Kurazyan 612f6999c8 Add support of connecting signals to QFuture
Introduced QtFuture::connect(sender, signal) function returning a
QFuture object, which is resolved when the signal is emitted.

Task-number: QTBUG-81589
Change-Id: Idbe301eb247b468b9b34f3470c3359d6a7af2f3a
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-05-15 22:35:06 +02:00
Takao Fujiwara 54aa63be9b IBus: Use WAYLAND_DISPLAY on Wayland sessions to make up socket names
A recent change in IBus made it prefer the WAYLAND_DISPLAY envvar in
order to compose its socket path for Wayland sessions. This is because
DISPLAY is unreliable in those environment: It might not be there, there
might be several displays pointing to the same Xwayland server (as it's
the case in GNOME 3.36), or there might even be multiple Xwayland servers
(eg. to enforce inter-app isolation with X11 apps).

Fixes: QTBUG-82910
Pick-To: 5.15
Change-Id: I4883b5d06863ba284883dd95281bed2ce7203e29
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-15 20:11:11 +00:00
Marc Mutz 5ffa5808f8 QTaggedPointer: some API cleanups
- don't refer to the class with template arguments in the body of the class
  (incl. one where we got the template args wrong)
- make namespace-level swap a non-member friend
- make default ctor constexpr and non-explicit
  (default ctors should never be explicit)
- make ctor from std::nullptr_t constexpr
- remove op= from std::nullptr (will be handled by op=(T*) anyway)
- pass QTaggedPointer by value (it's a Trivial Type, so can be passed in registers)
- fix missing QTypeInfo for non-default Tag types
- remove unused include limits.h
- make qHash-able (why is the tag ignored?)

Change-Id: Idee1d685ac365c988698a8637fd5df3accfc1396
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-15 20:00:24 +02:00
Volker Hilsheimer 2b10a192a1 Remove deprecated method from QFont, QFontMetrics, and QFontInfo
Change-Id: Ifc8fb5c5d53359b33b8abab3bbee3de61bfef539
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-05-15 18:56:20 +02:00
Fabian Kosmale 794150e5bd QMetaType: Support char16_t and char32_t
Change-Id: Ieec6d4bc64967d875ea12b31638aab05bc682ea3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-15 18:46:39 +02:00
Volker Hilsheimer 45cf8da63c Reduce QDesktopWidget API to bare minimum
The class is documented as obsolete, and the majority of APIs is marked
as deprecated. In this first phase, remove all explicitly deprecated
APIs and trivial implementations.

The test case is complete removed; what's left when code that uses any
of those deprecated methods is removed is not testing anything
meaningful.

For some methods, there is no practical replacement using QScreen yet,
and QDesktopWidget is still used in QWidget internals. Those require
refactoring to only use QScreen before the rest can be removed.

Change-Id: I8f7c968ec566820077221d37b817843758d51d49
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-05-15 18:46:39 +02:00
Andy Shaw 9803ba9b6f Deprecate QGuiApplication::paletteChanged() signal
Rather than have a paletteChanged() signal which can be connected to for
tracking when the application palette has changed, then it is better to
use the event that is sent to all windows and the application itself.
That way it is easy for a window/widget or item that cares about the
change to the application font to catch it in the event() function.

[ChangeLog][QtGui][QGuiApplication] Deprecated paletteChanged() signal
in favor of QEvent::ApplicationPaletteChanged.

Change-Id: I95da211e30590e357007cc14d8ee266baceba7b3
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-05-15 18:46:39 +02:00
Mårten Nordheim bd3b978701 QNetworkReply: Remove some bearer management leftovers
migrating backend was done if the QNetworkSession changed. With
QNetworkSession gone this was no longer called from anywhere.

Change-Id: I8c995001f9d4c7ae83446b4d29fa62c954c79889
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-05-15 15:44:22 +02:00
Andy Shaw 035c16e9ff Use correct order of arguments when calling QCalendar::daysInMonth()
Change-Id: Ic4e30d8ffea80c1dc1dc8da1f97f4bb0d21b63e3
Pick-to: 5.15
Fixes: QTBUG-83870
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-05-15 15:44:22 +02:00
Fabian Kosmale 40c6fe88a4 cmake: QTestCase: enable threading support
Change-Id: I55a9b57172659ae420890556e55810bf7f4a725c
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-05-15 11:47:11 +02:00
Alexandru Croitor 0cdcbb40a1 CMake: Enable default usage of utf8 sources for Qt consumers
And enable the same default when building Qt itself (it's implicit).

Allow opting out on a target-by-target basis, by using the public
qt_disable_utf8_sources() API call.

Change-Id: Ifc19a744d57b96b1c74a6926a0c6628c2a820464
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-05-15 11:47:09 +02:00
Marc Mutz c5f7cb7e14 QString: remove more functions overloaded on char
These functions mess in bad ways with the overload set (they, fatally,
attract char16_t, e.g.).

The no-ascii warning now comes from the QChar(char) constructor, so
it's not lost.

[ChangeLog][QtCore][QString] Also removed op=(char), op+(char,
QString), op+(QString, char).

Change-Id: I1471c9ddb4c6869aff6e527516e2c78b80b7d7d3
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-15 05:01:00 +02:00
Marc Mutz b655734965 QString: fix an aliasing issue in remove(QString)
Even in Qt 5, remove() can be passed an alias to *this. In Qt 6, with
the advent of substring sharing, this will become even more
pronounced. Use the same fix as was already used in QString::insert().

Pick-to: 5.15
Change-Id: I1a0d3d99fd7dff6e727661646d2cbfdc94df2682
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-05-15 03:00:45 +00:00
Andy Shaw f468f76455 Add an option to set the alignment of the text in QComboBox
Change-Id: Ic9dca8864643302b2b3ff7dbd86260efdb0ab1d5
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-05-15 05:00:10 +02:00
Volker Hilsheimer 6028e16b86 Remove deprecated QAccessible::updateAccessibility overload
Change-Id: Ib953e584685804b0f34ec6b305e2a9a6b8062c07
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2020-05-15 04:59:30 +02:00
Volker Hilsheimer 6f34c0c650 Initialize TextureOp and BufferOp structs
Fixes Coverity warnings, and avoids hard-to-debug errors, at minimal
overhead.

Change-Id: I3ff530a9263693d1123932458b3e186e79a14b7e
Coverity-Id: 263692
Coverity-Id: 263693
Coverity-Id: 263699
Coverity-Id: 263700
Coverity-Id: 263702
Coverity-Id: 263705
Pick-to: 5.15
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-15 04:59:20 +02:00
Volker Hilsheimer 7bee4e9cb3 QLabel: lay out text using a text control when label can get focus
QLabel ensures a text control in its focusInEvent, and from that point
on lays the text out using the control. A label with text control will
place the text so that there is space for a cursor and text selection,
resulting in text shifting when a label receives focus without having
had a text control before.

Instead of creating the control only on focusIn, ensure that it's
created for any QLabel that can receive focus.

Change-Id: I26c9df3affa08f2360ad4b94de43bd85e2e2e164
Fixes: QTBUG-84080
Pick-to: 5.15
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2020-05-15 04:59:07 +02:00
Dmitry Kazakov d26ee69140 Fix artifacts when rendering multisubpath dashed QPainterPath with openGL
It might happen that the resulting subpath generated by the QDashStroker
will have no lines at all. It happens when further LineToElement items
compare as equal to the starting MoveToElement when compared in 'float'
space. In such case QTriangulatingStroker::process() skips LineTo elements
and the vertexBuffer ends up with unconnected vertices, which generate
unwanted triangles.

See related bugs:
https://bugs.kde.org/show_bug.cgi?id=419240
https://bugs.kde.org/show_bug.cgi?id=413220

Change-Id: Ie70955287da47e9f7aa9cdeaea506e1c817b2317
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-05-15 02:06:25 +03:00
Marc Mutz 49e69827d2 QString: fix quadratic behavior in QString::remove(QString)
Calling linear-complexity remove(int, int) in a loop is O(N²).

Fix by implementing a remove_if()-like algorithm which ensures each
character is written at most once, which is linear.

[ChangeLog][QtCore][QString] Fixed quadratic worst-case complexity of
remove(QString). The function now has linear complexity in all cases.

Pick-to: 5.15
Change-Id: I12f70fbc83fb5da4a9aae4bd02f525d7657cc940
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-05-14 20:30:22 +00:00
Giuseppe D'Angelo 9e1dc1e8a9 QStringView: add converting constructor from array-like containers
Centralize, rather than keeping adding constructors from any
array-like container.

A more robust implementation, likely following the converting
constructor for std::span ([span.cons]), is out of scope for C++17
and will require C++20's ranges and concepts.

[ChangeLog][QtCore][QStringView] QStringView can now be constructed
from any contiguous container, as long as they hold string-like data.
For instance, it's now possible to create a QStringView object
from a std::vector<char16_t>, a QVarLengthArray<ushort> and so on.

Change-Id: I7043eb194f617e98bd1f8af1237777a93a6c5e75
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-05-14 12:19:47 +00:00
Giuseppe D'Angelo 594abde1a2 Enforce that statically allocated array-like containers have 0 capacity
It has been the case for both QStringLiteral and QByteArrayLiteral
since Qt 5.0, and Q_ARRAY_LITERAL since Qt 6.0.

Since it's definitely surprising, add a note in the docs, which
is "somehow" consistent with the interpretation of capacity as
the biggest possible size before we reallocate. Since it's 0,
any manipulation of the size will cause a reallocation.
(Alternatively: the capacity() is for how many elements memory was
requested from the free store. No memory was allocated, so 0...)

Task-number: QTBUG-84069
Change-Id: I5c7d21a22d1bd8b8d9b71143e33d537ca0224acd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 14:19:47 +02:00
Alexander Volkov af3caa2271 QBasicDrag: Send QDragMoveEvent when modifiers change
... without moving the mouse.
This allows to update drop action and cursor.

Task-number: QTBUG-56218
Task-number: QTBUG-82934
Pick-to: 5.15
Change-Id: I8b0ac2a008a9dbcc4c2d6abce282e6f169c2f542
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-05-14 15:19:47 +03:00
Lars Knoll 45ed28a9d3 Remove QRegExp from QVariant
Add an operator QVariant() to QRegExp to keep things at source compatible
as possible.

Add a hack to QVariant::load/save() to recognize the old typeid
for QRegExp and stream them correctly as long as the streaming operators
for QRegExp are registered.

Also move the datastream test for QRegExp to tst_qregexp, and adjust it to
the qvariant changes.

Change-Id: I120b38a7541b43ec07a21b17f7f35c55f071eb75
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-05-14 12:19:47 +00:00
Lars Knoll b2ee684a13 Remove QRegExp support from QString and StringList
Replacement methods do now exist in QRegExp, or
for QRegularExpression when porting to it.

Remove all autotests associated with the old methods.

Change-Id: I3ff1e0da4b53adb64d5a48a30aecd8b960f5e633
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 14:19:47 +02:00
Lars Knoll 7370b60cfe Move methods using QRegExp in QString(List) over to QRegExp
The prepares for the removal of those methods from QString and
QStringList. The new methods in QRegExp are left as a porting help.

Change-Id: Ieffa33a79caf53b83029e9b070c4eb5cadca1418
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-05-14 14:19:47 +02:00
Marc Mutz 7a3a9b8eb5 QStringMatcher: port internals to QStringView and char16_t
Change-Id: If540b094d003ad373d3c581e1de8c526ad4c7d73
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-05-14 14:19:47 +02:00
Qt Forward Merge Bot 76fe36645e Merge remote-tracking branch 'origin/5.15.0' into 5.15
Change-Id: I06396fa0a3d1687a0935e48d290358edbb0e59e8
2020-05-14 14:01:32 +02:00
Marc Mutz d68f3a81c9 Small fixes for the Q*Ref deprecation stuff
- don't force the deprecation sentence into a separate memory location
  (gives the compiler more leeway in how to lay stuff out)
- split the switch (will be useful when extending)
- fix a spelling mistake in one of the messages

Change-Id: Ied137dc8eee7047177983660e1a6776a0bf46bde
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-14 08:20:45 +02:00
Lars Knoll 57037145f5 Streamline the code in the conversion to and from utf8
Move pre/and post condition handling out of the main loop
to make that one as fast as possible.

Remove special handling of a corner case when the input length
is zero, where the utf8 decoder did something else than all
other decoders.

Change-Id: I94992767ea15405b38f7953adadaa6ff98b20b6f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:51:45 +02:00
Lars Knoll 751a003d1e Update QUtfFunctions and QUtfTraits to use qsizetype
Change-Id: Ic7d76513395645dba05f0023fdfcef0692c9b03b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:51:39 +02:00
Lars Knoll 1a6bf6c549 Remove QTextCodec dependency in the old SAX parser
Just so we can get this cleaned up as well and remove it from
Qt Core.

Change-Id: I2b5b821b039ce2c024ec3cb7338a1a9becdd2157
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:51:32 +02:00
Lars Knoll b88720eb82 Remove QTextCodec references from QString docs
Change-Id: I2882f8aed61d92ed5eff6efd2e65679e6688454f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:51:26 +02:00
Lars Knoll 2b8863a98c Get rid of some QTextCodec leftovers
There's no real dependency to QTextCodec in those files anymore.

Change-Id: Ifaf19ab554fd108fa26095db4e2bd4a3e9ea427f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:51:20 +02:00
Lars Knoll 666b4a485b Get rid of QTextCodec in the cups support
This should all be utf-8 anyway, but right now simply exchange the
text codec with a string converter.

Change-Id: If0a230776824598b6378bb402d692c941e371104
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:51:11 +02:00
Lars Knoll 02980cd01d Remove qtextcodec.h from the pch for Qt Core
Change-Id: I32e34675fc0579ba3d4bdffb3474ef452bc4bffc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:51:05 +02:00
Lars Knoll 65821814ff Remove QTextCodec dependency from qmacmime.mm
Change-Id: I99f95d026683299c5d437b52803cb5a3a0ad0263
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-05-14 07:51:00 +02:00
Lars Knoll 103ef2bf58 Remove QTextCodec dependency from QTextBrowser
Use QStringConverter instead to convert HTML to a QString. This limits
the amount of supported encodings to UTF based encodings and Latin1.
This is ok, as anything but utf8 is strongly discouraged by the HTML
spec anyway, and the support we have with this change does cover ~98% of
all real world HTML.

Change-Id: Ia610d327624b083c23d3c604aee70517a4a5eb6a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:50:43 +02:00
Lars Knoll 7e65f6a45d Remove QTextCodec dependency from QMimeData
We already assumed that 8bit data is utf8 encoded in all cases
but for HTML. Handle HTML through QStringDecoder now. This
removes support for encodings other than UTF based one and Latin1.
This is ok, as HTML should nowadays always be encoded in utf8 as
well (anything else is strongly discouraged by the HTML spec). In
addition, utf-8 and latin1 together seem to cover ~98% of all HTML
data.

Change-Id: I7e7165edd38cfac395faf72681e5715b6d014c14
Reviewed-by: David Faure <david.faure@kdab.com>
2020-05-14 07:50:35 +02:00
Lars Knoll 124d587bb9 Document the string converter classes
Document QStringConverter, QStringDecoder and QStringEncoder.

In addition, do some touches to the API, renaming one enum value,
add a flags argument to one constructor and make some members private.

Change-Id: I8f99dc3d98fb8860cf6fa46301e34b7eb400511b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:50:29 +02:00
Lars Knoll 4ff09cdd47 Optimize appending to an existing string
Optimize the common pattern of "str += decode(data);"
and "bytearray += encode(string);"

Change-Id: I1da621fa1ad400f23c9718ecf8ae64c00d9d459c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:50:25 +02:00
Lars Knoll 4d67b9dcfb Get rid of QTextCodec in QTextStream
Use QStringConverter instead. Also change the default
encoding of QTextStream to utf8.

Change-Id: I30682e75fe0462d1a937539f773640c83a2d82e1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:50:19 +02:00
Lars Knoll 33bb695a28 Start porting QTextStream away from QTextCodec
As a first step add setEncoding/encoding() methods that use the
QStringConverter::Encoding enum, and port all uses of setCodec()/
codec() over to the new API.

Internally QTextStream still uses QTextCodec, this will be ported
over to QStringConverter in a follow-up change.

Change-Id: Icd764cf47b449b57f4ebd010c2dad89e6717d6c0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:50:13 +02:00
Lars Knoll 8835c64f79 Get rid of the QTextCodec dependency in QXmlStreamReader
Use QStringDecoder to convert the data instead.

[ChangeLog][Important Behavior Changes] QXmlStreamWriter
always encodes XML in UTF-8, and QXmlStreamReader is limited to
XML files encoded in Unicode encodings (UTF-8, UTF-16 and UTF-32)
and latin1 (ISO-8859-1).

Change-Id: I10da612b951f4312ddaf63a89587697777dd8dc1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-14 07:50:05 +02:00
Lars Knoll b8db123341 Add a method to determine the encoding for encoded HTML data
This is a replacement for Qt::codecForHtml().

Change-Id: I31f03518fd9c70507cbd210a8bcf405b6a0106b1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:49:05 +02:00
Lars Knoll 13af1312f7 Add QStringConverter::encodingForData()
Add method that tries to determine the encoding of the data
from an initial byte order mark.

Change-Id: I348c51a3d4db9b434af53359b739a7e17acfc760
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:48:55 +02:00
Lars Knoll a639bcda1e Add methods to convert between encoding and name to QStringConverter
Add static methods that allow converting between a name for an
encoding and the Encoding enum.

Change-Id: I12bc503cf757ea31d3ca8d5e1f1216efddcb16d4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:48:49 +02:00
Lars Knoll 3ce9162ab5 Construct a string converter by name
Add a constructor, that allows constructing a string converter by
name. This is required in some cases and also makes it possible to
(in the future) extend the API to 3rd party encodings.

Also add a name() accessor.

Change-Id: I606d6ce9405ee967f76197b803615e27c5b001cf
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:48:42 +02:00
Lars Knoll 2d43f735b4 Remove QTextCodec dependency from the cbor reader
Change-Id: I5abc60846d95931860133b9318690b457bb886d7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-05-14 07:48:35 +02:00
Lars Knoll a383d79772 Get rid of QSettings::iniCodec()
Always encodee INI files as utf-8 in Qt6. This is mostly backwards
compatible, as old ini files would encode all non ascii characters.

[ChangeLog][Important behavioral changes] QSettings will now always
encode INI files as utf-8 (and the iniCodec/setIniCode methods are
removed). This is a change from Qt 5 and earlier, where QSettings would
by default escape all non ascii characters. The behavior is equivalent to
what you got in Qt5 by setting a utf-8 iniCodec on the settings object.
Settings files written in Qt 5 will still be readable in Qt 6 (unless
an iniCodec different from utf-8 was used), but to read Qt6 based ini
files in Qt 5 applications, setting the iniCodec to utf-8 is required.

Change-Id: Ic7dffcca17779bd5e3dae50d42ce633170289f6c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-05-14 07:48:28 +02:00
Lars Knoll 1cab047d08 Remove QTextCodec dependency from QCoreGobalData
As we want to move text codecs out of Qt Core, disentangle the
dependency, but moving the global codec data into qtextcodec.*.

Change-Id: Id7498423c7c4f9f42fd00c450947305d2af8c4be
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-05-14 07:48:20 +02:00
Lars Knoll 4b2edde373 Cleanup QUtf32::convertToUnicode
Cleanup the implementation and improve performance by
handling the first char outside of the main loop.

Also avoid one copy of the data when using QStringConverter.

Change-Id: Ie698e62de1864352612a4dddc907cb139e7e6407
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:48:07 +02:00
Lars Knoll b1d8ce32cd Refactor QUtf32::convertFromUnicode
Implement proper state handling, and avoid a copy when using
it through QStringConverter.

Change-Id: I201fe966601c424c337e452e359a2e71f76354ad
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:48:00 +02:00
Lars Knoll d8997ad797 Clean up QUtf16::convertTo/FromUnicode
Clean up the method, and refactor it so we can avoid one
copy of the data when using QStringConverter.

Make the conversion to unicode more by avoiding conditions in
the inner loop and doing a memcpy if endianness matches.

Change-Id: I869daf861f886d69b67a1b223ac2238498b609ac
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:47:53 +02:00
Lars Knoll 5dcfd0ac2f Cleanup state handling in QUtf8::convertFromUnicode
And optimize the method so we can avoid a copy of
the data.

Change-Id: Ic267150db80358dbc4010bb1db2af5c0eb97dc65
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:47:47 +02:00
Lars Knoll 618620bc5d Ensure the conversion methods in qstringconverter always get a valid state
Make sure that the conversion methods always get a valid state. This is
already the ecase then using the new QStringConverter API, ensure the
old QTextCodec API also passes in a valid state.

This helps simplify the logic inside those methods.

Change-Id: I1945e98cdefd46bf1427e11984337f1d62abcaa2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-05-14 07:47:40 +02:00
Lars Knoll cab0d57d1e Clean up the Flag handling in QStringConverter
IgnoreHeader was a rather badly defined enum, in addition the
utf8 and utf16 codecs where handling BOMs somewhat different
for stateless decoding.

Fix this by introducing explicit flags for writing a bom when
encoding and not skipping the initial bom when decoding.

Source compatibility for QTextCodec is done with a couple of
static constexpr variables.

Change-Id: I0b2d94f84c937cec1e0494c16ef448c00382691d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:47:33 +02:00
Lars Knoll 542ded462e Enable using QStringConverter together with QStringBuilder
The way the new converters are structured allows us to
use them together with QStringBuilder. Like this, we
can avoid additional and unnecessary copies of the
data.

Change-Id: I168da3860537fe81a1eb62632e4d9a6680f86af1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:47:27 +02:00
Lars Knoll 9ada6e5719 Remove QTextCodec dependency from qfilesystemiterator
Assume Unix systems are utf-8 based nowadays. glib has been
assuming this for quite some time already, and all Linux and BSD
systems shipped in the last 10 years assume utf-8 for 8-bit strings.

Utf-8 is also the encoding used by macOS and QNX since a very long time.

File systems where file names are not encoded in utf-8 can usually be
translated transparently to utf8 by specifying appropriate mount
options.

Change-Id: I1970496db24e59dee8efb79ba025355a3ce87387
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:47:20 +02:00
Lars Knoll d9870dc233 Remove QTextCodec dependency from QString
Change-Id: I34cc24c263684f7c04ee49205f9181476bc16c34
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:47:13 +02:00
Lars Knoll 2c7f9565ed Always write XML documents as UTF-8
Remove support for setting a codec different from UTF-8
for writing XML files.

All XML readers today can handle UTF-8, and there is no
reason anymore to write a file in a different encoding.

Change-Id: If89fb2d2474a2b55644d9bed7473c11ad91033eb
Reviewed-by: Simon Hausmann <hausmann@gmail.com>
2020-05-14 07:47:06 +02:00
Lars Knoll 99632c2217 Allow moving of string converter objects
They are still not copyable, but can be moved.

Change-Id: Id66e35be4ecdaa781ecb9212d646d224b1767913
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:46:59 +02:00
Lars Knoll 7b93bedb60 Add Latin1 to the set of supported encodings in QStringConverter
Latin1 is the only non Unicode encoding that is still being used
to some extent. Current web site statistics show that it is
being used in ~2% of all web sites. An additional 1% of web sites
use Windows1251 (which is almost the same as latin1).

As it's trivial to support this encoding, we keep it supported
in QStringConverter.

Change-Id: I0eff53a490b6c43d3e474107e7823be245d1715a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:46:51 +02:00
Lars Knoll 94e210faea Move local8bit conversion over to qutfsupport
Local8Bit is always UTF-8 except for Windows platforms.
Also add a Locale encoding to QStringConverter.

Change-Id: I8d729931fd4c1d7fc6857696b6442a44def3fd9d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:46:45 +02:00
Lars Knoll ea0a08c898 Move the UTF conversion methods to qstringconverter
Separate them from the qutfcodec, so that the codec
can later on be moved out of Qt Core.

Fix the QUtf methods to take qsizetype instead of int
for length arguments.

This also makes it possible to not build QTextCodec into
the bootstrap lib anymore.

Change-Id: I0b4f83139d61b19c651520a2f3a5012aa7e85cb8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:46:38 +02:00
Lars Knoll f64a6bd638 Start work on a new API to replace QTextCodec
The new QStringEncoder and QStringDecoder classes
(with a common QStringConverter base class) are
there to replace QTextCodec in Qt 6.

It currently uses a trivial wrapper around the utf
encoding functionality.

Added some autotests, mostly copied from the text codec
tests.

Change-Id: Ib6eeee55fba918b9424be244cbda9dfd5096f7eb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:46:14 +02:00
Stefan Löffler 09ee4282e5 Fix invalid text layout data when a full layout run is interrupted
When a QTextDocument is laid out, this is done in "chunks" to keep
programs responsive. During the layout process, blocks are split into
lines. When a full (re)layout is interrupted (e.g. because a
QHighlighter changes some formats before the layout for all chunks is
completed), later chunks are skipped. This results in invalid data
(e.g., blocks not split into lines).
This change ensures that full layout runs of the root frame are
completed even after interruptions.

Fixes: QTBUG-20354
Change-Id: I041c73a532a5abe74d577ca49810191b5594dca2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-05-14 07:20:55 +02:00
Jan Grulich 844967d297 Support opening directories over portal
Recent version of xdg-desktop-portal got support for opening directories
through the portal, which means we no longer need to rely on opening the
dialog inside sandbox, hoping we have permissions to user directories.

[ChangeLog][Linux] QFileDialog will open directories through the portal
if required version of xdg-desktop-portal is running on the system.

Change-Id: Ifc9035e268f1cc8d9d6a93480e651e0d9e1e9929
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-14 07:03:55 +02:00
Marc Mutz f437c8c5f9 QUrlIdna: port containsProhibitedOutput() to QStringIterator
Also Extract Method isProhibitedOutput(), which, in order to preserve
history, is placed in the unnamed namespace and violates the
indentation rules. But this code is delicate enough to be left
undisturbed. At least for now.

By said Extract Method, we can static_assert on the invalidity of the
QStringIterator::next() argument, which we assume will be rejected, so
that we continue to reject malformed surrogate pairs.

Also fix a comment that suggested the function would actively remove
("strip") malformed content, when in fact it only detects it.

Change-Id: I4185cbac71fb147e2f2036dbaf052af20bd1003f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-13 19:30:26 +00:00
Marc Mutz c59665b0ec QSettings: fix UB (signed integer overflow) on parsing long hex/oct escapes
The code did not limit the length of hex and octal escape sequences,
but used an int as the accumulator, which causes UB on overflow.

Due to the use of the QChar(int) constructor when appending escapeVal,
only the lowest 16 bit of the value were appended to the result
string. An test case encoding this behavior explicitly suggests this
is intended behavior.

It therefore suffices to use an unsigned 16-bit value as the
accumulator (unsigned, because that doesn't cause UB on overflow, 16
bits, because that's all we care for).

For future-proofing, use char16_t as the accumulator.

Pick-to: 5.15
Change-Id: I07e7ebf1f312276b2bbcb08e4360c66a3b9522ca
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-13 21:26:35 +02:00
Marc Mutz 72f6aaa7d4 QUrlIdna: port NameprepCaseFoldingEntry from int-ish to char-ish
Change-Id: I43171aae8188cc68d9c03716451c6427486cc55c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-13 21:26:31 +02:00
Marc Mutz f5a56cf9bb QString: deprecate fromUtf16(ushort*)/fromUcs4(uint*)
... in favor of existing char16_t* and char32_t* versions.

Swap the implementations around so the deprecated version is inline.

[ChangeLog][QtCore][QString] The fromUtf16(const ushort*) and
fromUcs4(const uint*) functions have been deprecated in favor of
the char16_t and char32_t versions, resp.

Change-Id: I94ff63ae98d190267da0b1c943d3d9c4e825ef10
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-13 19:26:25 +00:00
Joerg Bornemann 46fb39ef5a Fix crash on macOS with -qtlibinfix'ed Qt
When Qt is configured with -qtlibinfix Foo then the prefix determination code
in QLibraryInfo crashed, because it still assumed the library name to be
"QtCore".

Fixes: QTBUG-83912
Pick-to: 5.15
Change-Id: I104e115ac6904fc0a04ac45d68d26d4e02aba721
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-05-13 15:12:54 +00:00
Volker Hilsheimer 92df790f46 QApplication: refactor delivery and propagation of wheel events
Handle wheel grabbing via wheel_widget in a single place, and
propagate events in the same way for all (spontaneous) events.

Handle ScrollMomentum the same way as ScrollUpdate to allow
partial sequences.

Fix the incorrect ignoring of wheel events by default; like all
other input events, they are now again accepted by default and
ignored in the default event handler implementation of QWidget.
This way, implementing the handle suffices to accept the event.
Note that QWidget::wheelEvent doesn't need to be changed, as the
event is ignored there today (an oversight of the change made in
f253f4c3, perhaps).

This also fixes changing of direction of a wheel event while
the event sequence is grabbed by a widget.

Change-Id: Ia0f03c14dede80322d690ca50d085898a0497dbe
Fixes: QTBUG-67032
Task-number: QTBUG-79102
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-05-13 15:07:55 +00:00
Allan Sandfeld Jensen 01b2ea83aa Avoid format conversion in backing store texture upload
Use glPixelStorei where possible

Pick-To: 5.15, 5.12
Fixes: QTBUG-84189
Change-Id: Iadf039b5c6d8e7b6bb11d031a94683343dee0dc6
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-13 16:52:11 +02:00
Marc Mutz 1f7eb3332e QUrlIdna: replace manual pointer handling with std::begin()/end()
This is more readable, because it follows usual iterator patterns.

Change-Id: I56900286ddbca57a86aa499020f175e8add17fd9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-13 15:23:06 +02:00
Marc Mutz a504f63f2e Port qt_punycodeEncoder() to QStringView
Change-Id: I264e67bc08413f8a39e2d16c774bfd2c76c320ac
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-13 13:22:09 +00:00
Marc Mutz e201d58540 QString: fix premature pessimisation in arg(char-ish)
Instead of converting the char or QChar to a QString, convert them to
a QStringView, saving the memory allocation.

Pick-to: 5.15
Change-Id: I023712ec00172f1c8570e762817bfc3a95e01125
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-13 14:38:58 +02:00
Marc Mutz 90f864a4c5 QString: remove op+=(char) and op+=(QChar::SpecialCharacter)
The former messes in bad ways with the overload set (it, fatally,
attracts char16_t, e.g.). The latter was probably added in response to
ambiguities between (char) and (QChar). While it's harmless now,
remove it, since it no longer pulls its weight.

The no-ascii warning is now coming from QChar(char), so the protection
isn't lost.

[ChangeLog][QtCore][QString] The += operators taking char and
QChar::SpecialCharacter have been removed as they cause adding a
char16_t to QString to call the char overload, losing information. The
append() function was not affected.

Change-Id: I57116314bcc71c0d9476159513c0c10048239db3
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-13 14:38:48 +02:00
Volker Hilsheimer 082eebe6a4 Remove deprecated QDesktopServices APIs
Change-Id: Ic21ad2938b20c1aa3ae499a921c9cff92f615816
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-13 14:38:23 +02:00
Tor Arne Vestbø c856033851 Remove QPlatformNativeInterface functions for CGImage conversion
QMacExtras no longer use them. Clients who need the functionality
should use QImage::toCGImage(), or qt_mac_toQImage() from QtGui's
private qcoregraphics_p.h, until we've made a public verion of it.

Task-number: QTBUG-83252
Change-Id: If74d05afe8f4ce6728d8c503bd97f7632583fbed
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-05-13 14:30:43 +02:00
Friedemann Kleint 7cafcd4867 QtCore/Windows: fix deprecated QChar conversions
global\qlogging.cpp:1698:91: warning: 'constexpr QChar::QChar(char)' is deprecated: Use fromUtf8, QStringLiteral, or QLatin1String [-Wdeprecated-declarations]

Change-Id: I3c8a9499c9504bb6198dc187cb79239f705e2d39
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-05-13 12:07:52 +00:00
Friedemann Kleint b35551a75e Document Qt for Python usage of the resource system
Pick-to: 5.15
Change-Id: I77576d0e6464099a7595a74f4bf8ef18ec515ec2
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
2020-05-13 11:04:59 +02:00
Shawn Rutledge e8057600b6 Remove deprecated functionality in QMetaObjectBuilder
Change-Id: Ic0539aed854b9bf9b335cbb8030d5a4eb4296a7d
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-05-13 08:51:56 +00:00
Peter Seiderer 2246f270ff ARM neon draw helper only available for little endian
Fixes:

  qimage_conversions.cpp:(.text+0x2598): undefined reference to `storeRGB32FromARGB32PM_neon(unsigned char*, unsigned int const*, int, int, QVector<unsigned int> const*, QDitherInfo*)'

Task-number: QTBUG-84110
Change-Id: I61ac697dd1d0b2c793fd5751209cd041ee30ad38
Pick-to: 5.15
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-05-13 09:11:48 +02:00
Marc Mutz b49314af1d Port qt_check_std3rules() to QStringView
Also port its callees. These functions scream to the QStringView-ified...

Change-Id: I13c95d65941eb8d02223306d80efd1437b4bd9b7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-13 08:04:40 +02:00
Giuseppe D'Angelo 554ef6c39c Drop the deprecated QStringViewLiteral
Change-Id: I6e6643b4c7cbcd43c495c332de0d6874856b9528
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-05-13 03:53:16 +02:00
Allan Sandfeld Jensen 5a4b275a20 Fix QRunnable::ref use in QThreadPool
The reference counter could only ever be -1, 0 or 1,
as an autoDeleted QRunnable can only be in a single
thread pool.

This commits keeps the reference counting for now,
but asserts sanity, simplifies locking and fixes a
leak.

Pick-To: 5.15
Fixes: QTBUG-20251
Fixes: QTBUG-65486
Change-Id: I4de44e9a4e3710225971d1eab8f2e332513f75ad
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
(cherry picked from commit 891b60bbc8)
2020-05-12 23:38:22 +02:00
Shawn Rutledge 688e5da4e7 Remove obsolete storage, constructors and accessors in QEvent subclasses
Change-Id: I5c51244031ff40f1972106ad4fe27010c8be1193
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-05-12 23:05:25 +02:00
Marc Mutz 548dcef089 Port qt_urlRecode() to QStringView
It's about time :)

Change-Id: I27e597516318382850d4c193fd5b66a35fb9c316
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 23:04:42 +02:00
Marc Mutz cf52a36994 QUrl: port percent-decoding to char16_t
Port decode() to take a QStringView to isolate callers from char16_t.
Have it return qsizetype instead of int. Use QChar* as output pointer
internally, to avoid more casts.

Change-Id: Ia388361a281ee97c41b01d8e6fe2c00801d988c4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 20:54:52 +02:00
Shawn Rutledge 4170fdfa59 Android JNI: update usage of QWindowSystemInterface::handleMouseEvent()
Follup to a37785ec7638e7485112b87dd7e767881fecc114: this API
has been deprecated since 5.11.

Pick-to: 5.15
Change-Id: Ib143f3997f89fc71d37d740338dae7df52ff45b4
Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-05-12 13:41:49 +00:00
Marc Mutz d8c843f05f QUrlIdna: QChar(0x2d) → QLatin1Char('-')
A reader of the code shoudn't need to know ASCII code points by heart,
so don't force them to.

Change-Id: I2c44fcf4a948b85dfbc02ac8b5b7b934e87b41a7
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-05-12 15:34:23 +02:00
Assam Boudjelthia fbd0e66705 Android: allow file dialog to use remote locations
Allow the native file dialog to use remote locations like OneDrive,
Google Drive, etc.

Pick-to: 5.15
Change-Id: I67027f0da8e6bd759a4936e03b6c9e95f3f90e1a
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-05-12 16:15:52 +03:00
Laszlo Agocs 4edcf3ddb8 rhi: d3d11: Handle DXGI_ERROR_SDK_COMPONENT_MISSING gracefully
Requesting the debug layer is not something that succeeds at run time if
the corresponding SDK component is not present. Handle it gracefully:
simply retry D3D11CreateDevice without the debug device flag.

Relevant also for the Qt CI's Windows 10 VMs.

Task-number: QTBUG-84067
Change-Id: Ia7b2562917ec11ce04a75c052527bf526d1fe81b
Reviewed-by: Christian Strømme <christian.stromme@qt.io>
2020-05-12 14:49:55 +02:00
Joerg Bornemann 286d79d2ed pro2cmake: Handle QMAKE_TARGET_XXX variables
Change-Id: I62151e04d21c20d8c8ad5825464f26074c8abc3d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-05-12 14:31:12 +02:00
Jean-Michaël Celerier 3f1cffdb2e Fix some build warnings due to bad integer format in printf
Change-Id: I4b882b0a800f92eaa13f38ed23caa4b1f4992e26
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2020-05-12 14:27:31 +02:00
Yuhang Zhao ec67512454 CMake: Use correct file type
Change-Id: Ie32a32bd1cc3e5885a6699e8ea2281982527e50e
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-05-12 20:13:28 +08:00
Assam Boudjelthia 8191472bc8 Revert "note QFileDialog::setNameFilters() is not supported on Android"
This reverts commit 9802b93cc7.

The commit dbaf62033a allows using
nameFilters on Android platforms.

Task-number: QTBUG-83089
Change-Id: I7b57cd0423c41e7527ce7a650626b602ea9b587d
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2020-05-12 13:59:56 +03:00
Volker Hilsheimer 6a90078d6b Fix potential memory leak by adding a virtual destructor to AnchorVertex
The subclass AnchorVertexPair is allocated and passed around as pointers
to AnchorVertex, and placed in lists that are then later cleaned up via
qDeleteAll. This very likely results in memory leaks, as the compiler-
generated ~AnchorVertexPair destructor is never called.

Add a virtual destructor. Since there now is a vtable generated for
AnchorVertex, remove the m_type member (which is only used for string
generation in debug builds) and make toString virtual instead.

Change-Id: I2cf184c0b1da1bd59b056a0f696a0e5479d4cb4e
Fixes: QTBUG-84094
Coverity-Id: 218707
Pick-to: 5.15
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 12:52:52 +02:00
Eskil Abrahamsen Blomfeldt 973f840e32 MSVC: Fix build with -developer-build
Passing 0xA7 to a signed char causes a truncation warning with MSVC2017.
Make the cast explicit.

Change-Id: Ief1a97c52544b271556811816f7804074bd336df
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-05-12 12:25:14 +02:00
Marc Mutz 11dc945403 Port qustrlen and qustrchr to char16_t
Fix callers.

Change-Id: Iaf604c890941aa3de3bd31da300b2066e65968ed
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 11:49:38 +02:00
Marc Mutz 5bd7668403 Replace some QString::fromRawData() with QStringViews around the code
Even though QString::fromRawData() may not be as expensive as it used
to be, it's still and out-of-line call _and_ more characters to type,
so replace with QStringView construction where applicable.

Change-Id: I70662da1bd45284f67e117e92b25d242afb8aaf8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 11:49:20 +02:00
Andrei Golubev bed25fdf60 Teach QDateTimeParser some common time-zone offset formats
Fixes: QTBUG-83687
Fixes: QTBUG-83844
Pick-to: 5.15
Change-Id: Ia1c827017b93cf8277aa5a0266805d773d2d9818
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-05-12 12:45:58 +03:00
Marc Mutz ed4c1b4e90 Cache QUrl::idnWhiteList() absent user_idn_whitelist
Instead of creating a QStringList from a static array anew for each
call, cache the result in a static variable. If we have to pay for the
overhead of implicitly-shared classes, we should at least reap the
benefits, too.

Use IILE to gain automatic thread-safety (thread-safe statics).

Change-Id: Ib92dd9cb85f84e013f98ca81565cc392bb39e76b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 11:45:53 +02:00
Paul Wicking 565c2e8cf9 Doc: Specify QTextOption behavior in drawText
Be more specific about overriding behavior when using
the drawText overload that takes a QTextOption argument.

Fixes: QTBUG-41894
Pick-to: 5.15
Change-Id: I8b38cb383005f1a07f4c6d70050e0d2cbb551521
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
2020-05-12 09:13:55 +02:00
Tasuku Suzuki 848b224df2 Doc: fix QRandomGenerator code snippets
Use the static global instance to call bounded() and fillRange().

Pick-To: 5.15
Change-Id: I91678b7c985ab9d0dcdf09aadad6cb8f495c02cd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-12 07:13:00 +00:00
Volker Hilsheimer fe4794f70e Close memory leak in QTestLib support for item model testing
QTest::toString allocates memory by calling qstrdup; that memory must
be freed by the caller.

Change-Id: I218bc57b3312fdd9195fb49eaed7d20df4bf717c
Fixes: QTBUG-84081
Coverity-Id: 186979
Covierty-Id: 186980
Pick-to: 5.15
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 09:08:12 +02:00
Marc Mutz e9005608ea QtCore: use new QChar::fromUcs{2,4}()
Also replace one case of QChar(0) with QChar::Null.

These were errors in my local tree, which means they're included in
bootstrap builds (incl. qmake).

Change-Id: I3dffa9383fd1a30aa43fe2491ad95bb2b1869b40
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 07:43:59 +02:00
Marc Mutz 23849826b4 Sweep of int-ish → char-ish types near calls to QString::fromU*()
The fromUtf16(ushort*) and fromUcs4(uint*) overloads are going
to be deprecated. Use the newer fromUtf16(char16_t*) and
fromUcs4(char32_t*) overloads.

As a drive-by, use std::end()/std::size() where applicable.

Change-Id: I5a93e38cae4a2e33d49c90d06c5f14f7cb7ce90c
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 05:43:37 +00:00
Marc Mutz b62bff2ef3 Use QChar::fromUcs4() more
Change-Id: I02be41de92d84145186de9ac5f5ea3541a941964
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 07:43:34 +02:00
Marc Mutz 3aed50d488 QUrlQuery: improve defaultQuery{Value,Pair}Delimiter()
- constexpr
- noexcept
- return char16_t (this converts implicitly to QChar, but allows use
  elsewhere, too)

[ChangeLog][QtCore][QUrlQuery] The defaultQueryValueDelimiter() and
defaultQueryPairDelimiter() functions now return char16_t instead of
QChar.

Change-Id: I4662f832a89ae9f4a984ea9349b5e0e212a09c95
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 07:43:29 +02:00
Marc Mutz 69ffd7b6c0 QUrl: replace some lower-case macros with functions
It's cleaner.

Change-Id: Ib2297b905f5dd242c5e7ab431393398e7c93ecbf
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-12 07:43:23 +02:00
Volker Hilsheimer b7b17e719e Fix coverity warnings about uninitialized data members
Coverity alerts about uninitialized members. While this might be ok
in the code here (ie TreeNode::splitLeft is never used for leaf nodes)
it can easily result in undefined behavior and other hard-to-debug
issues.

Initializing the struct with initializer syntax; compiler explorer
indicates that the compile will be able to optimze the calls to avoid
duplicate initialization of data members.

Change-Id: I0eb5d26e34f466d8c659c1945f02601aef511fbf
Fixes: QTBUG-84160
Fixes: QTBUG-84156
Coverity-Id: 218601
Coverity-Id: 11398
Pick-to: 5.15
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-05-12 05:57:03 +02:00
Giuseppe D'Angelo 902120c621 Rhi: improve qHash implementations
Use the combiners and an algorithm.

Change-Id: I577950bbd2e8b0556f28e2a8381e432c22bb0dc9
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-12 01:51:26 +02:00
Giuseppe D'Angelo 707129fd5a Long live qHashMulti(Commutative)
Add a helper function so that we have a shortcut.
Instead of writing:

  QHashCombine hash;
  seed = hash(seed, fieldA);
  seed = hash(seed, fieldB);
  // etc.
  return seed;

one can now simply write:

  return qHashMulti(seed, fieldA, fieldB, fieldC);

Port a few usages inside qtbase as a demonstration.

[ChangeLog][QtCore][QHash] Added the qHashMulti and
qHashMultiCommutative functions as convenience helpers
to calculate a hash from multiple variables (typically,
data members of a class).

Change-Id: I881a9ad41168df20ceecc6588a94abe7ddc6a532
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-05-12 01:51:20 +02:00
Yuhang Zhao 2844631aa9 qmake: Remove the DISCARDABLE flag for icon resources
According to [1] the DISCARDABLE attribute is for 16-bit Windows,
and it is ignored. We can drop it.

[1] https://docs.microsoft.com/en-us/windows/win32/menurc/common-resource-attributes

Change-Id: I70e5b0441a9d20f6c76c3d7a84947f8bce5c8fbd
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-05-11 23:36:27 +00:00
Yuhang Zhao 745fae0dc1 CMake: Add more entries for rc files
As what we did for QMake.

Amends commit 317383217b

Change-Id: Iab3b755193b5483362896da20a03fe2d59f37192
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-05-11 23:36:11 +00:00
Yuhang Zhao fc1e5d9877 qmake: Update the macro names
I generated a rc file using VS2019 and I found that it's
using other macros.

According to [1], both of VOS_NT_WINDOWS32 and VOS__WINDOWS32 refers to
"File was designed for 32-bit Windows", although they have different
values, and 0x0L is the value of VFT2_UNKNOWN. So I think it's safe to
update them. VS2019 is using them as the default template for rc files,
after all.

[1] https://docs.microsoft.com/en-us/windows/win32/menurc/versioninfo-resource

Change-Id: Ibaf91394668844492f1357da05b881b9d81aa15f
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-05-12 07:35:32 +08:00
Giuseppe D'Angelo 737635fa56 QDebug: sprinkle usage of QDebugStateSaver
Change-Id: I6dc134acca2bbc010139113f196869b36da9b240
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-11 22:17:46 +02:00
Giuseppe D'Angelo 18693916a4 QDebug: clean up handling of QMap/QHash
Prepare for the fact that the multi-key containers will no longer
inherit from the single-key ones. Refactor the code to follow
the existing.

Change-Id: I5fd4d7e33f8184c015e18e169af72e11a5e84f0d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-11 22:17:38 +02:00
Alexandru Croitor a1ccedeb44 CMake: Workaround fix for failing RC file generation on Windows
For some reason the Help target doesn't get its RC file generated
when building qttools, which leads to a build failure.

We don't quite know yet why all this is happening, but a workaround
fix seems to be to use an OBJECT library instead of an INTERFACE
library to propagate the generated RC file.

Amends 657fa0462d

Fixes: QTBUG-84155
Change-Id: I1e1c2f3b05bae2ed009020d031c6510a517c01ec
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-05-11 15:04:44 +02:00
Friedemann Kleint 21a66c167d uic: Adapt to ActiveQt module restructuring
Task-number: QTBUG-78167
Change-Id: I827db1bf519a6ffcc609d215e08622bf910d519e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-05-11 12:45:31 +00:00
Timur Pocheptsov 479c3bd93b CA fetcher - do not add CA root if it's already present
As it was found recently CA fetcher, while building a chain with a missing
intermediary, may return the root we are already aware of (had in the "ROOT"
store). While this is in general harmless, it can be a bit surprising if
some code is analyzing the list of CA certificates after a handshake.

Pick-to: 5.15
Change-Id: I1df3b537e2a812de17e2c94ad4643cf36e7e946f
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-05-11 14:18:44 +02:00
Andrei Golubev b428e98052 Make qtbase compile without QT_CONFIG(timezone)
Fixes: QTBUG-83795
Pick-to: 5.15
Change-Id: I05eaaf57d87a9111d3609ebab81bc707f8af98f0
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-05-11 14:42:00 +03:00
Marc Mutz 255cc55d74 QXmlStreamReader: port Private::put...() to QStringView
This enables the use of QChar::fromUcs4() instead of
QString::fromUcs4() in a call to putStringLiteral().

Change-Id: I6ed933cc92bfbb70ed2b168b7deeeb466bc6bfeb
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-11 13:17:09 +02:00
Marc Mutz 3bc9f35771 QSettings: port iniUnescapedKey() from int to char16_t
The 'ch' never had to be a 32-bit variable. It only ever gets assigned
16-bit unsigned values, so make it a char16_t and thus implicitly
convertible to QChar, even when QChar(int) is being deprecated or
removed.

Change-Id: I8391c393ca860f8f73f1495d7764dacd57275ea7
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-05-11 12:47:01 +02:00
Giuseppe D'Angelo 20f3ec461d Update PCRE2 to 10.35
[ChangeLog][Third-Party Code] PCRE2 has been update to version
10.35.

Change-Id: I9793bdd3d25b88eea0d4479f544b297d065b5fb6
Pick-To: 5.15
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-11 11:56:29 +02:00
Volker Hilsheimer 90210c8d28 Remove dead code from src/widgets
Code that's removed via QT_VERSION(6, 0, 0) check is already no
longer compiled.

Change-Id: I70865f330a6260ac2e9cf2770d599a5b6f7bb7d4
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
2020-05-11 11:05:15 +02:00
Marc Mutz 219e7bafa2 QtGui: fix deprecated QChar conversions
Conversions from non-char-types to QChar are going to be deprecated.
Use QChar::fromUcs2(), fromUcs4(), QLatin1Char(), or convert the
constructor argument to char16_t.

Change-Id: Ib45ebd5560aa3a2bc460037ab09773607485c6e2
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-05-11 09:02:44 +00:00
Marc Mutz 9e56d28663 QRegularExpression: cast to PCRE2_SPTR16
It seems that PCRE2_UCHAR16 is exactly ushort, even though it's
documented to be uint16_t. There's no requirement for these to be the
same type, nor for the PCRE typedef to continue to point to the same
type, so add explicit casts.

Change-Id: I89f65d29feaada84ea00688976a123364857bc58
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2020-05-11 11:01:13 +02:00
Allan Sandfeld Jensen 8a0f100e97 Split PixelLayout to separate source file
Change-Id: I0beafa39d92550ea78e78a07b25ce1253cc6668d
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
2020-05-11 10:57:05 +02:00
Marc Mutz 2ed048fa8d QString: optimize insert() of a substring
The old code malloc()ed a buffer to hold a copy of the data if a
substring of *this was to be inserted. Instead, use a QVarLengthArray.

Pick-to: 5.15
Change-Id: Ia3b4d7509bff2375ec0da5c890ecff2e9f7f335c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-05-11 10:47:26 +02:00
Shawn Rutledge 30be6c41d5 eglfs: Send proper enter/leave events when multiple screens are in use
Given that there is only one mouse (which might change some day, but
hasn't yet), there can only be one window containing the mouse,
regardless of which screen it's on.  The implementation before was only
able to send enter/leave events when moving from one window to another
on the same screen; but we need the enter/leave events to be sent when
moving between two full-screen windows on two screens as well.

Also send an enter event the first time the mouse moves, to whichever
window that happens to be.  A Wayland compositor that renders its own
cursor will need to know which screen is in use at the beginning.

Pick-to: 5.15
Fixes: QTBUG-83973
Task-number: QTBUG-55161
Task-number: QTBUG-79924
Change-Id: Ie6f36cd33b103955a70bac73c1485bf475c08468
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-05-11 09:06:43 +02:00
Marc Mutz 36e5a9d025 Port QtPrivate::findString() from ushort* to char16_t*
Lots of casts disappear...

Change-Id: I21be426c9e4629657990ed4c896e4fce537aa1f0
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-11 08:45:44 +02:00
Marc Mutz 2c1425898d Modernize foldCase() internal functions
Overload uint/ushort versions with new char16_t/char32_t ones, and
[[deprecate]] the old ones. There's too much churn for doing the
replacement in one patch.

Change-Id: Ib1f90a1c46b80aa0fb1ea00ce614af49f49bd712
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-11 08:45:36 +02:00
Marc Mutz 1030d934c4 QXmlStreamSimpleStack: port to qsizetype
Change-Id: Ie4ea7ca83dc1870d1a4a4cfbe4447b5d971b33bf
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-11 08:32:49 +02:00
Marc Mutz 0c17dca4f0 QXmlStream: use even more ranged for loops
Write a small range adapter that maps begin() to rbegin() and end() to
rend() of the underlying range, use it to replace indexed reverse
loops with ranged for ones.

Change-Id: I5498a23106b0432ce885e72e5e3912910f50b5c1
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-11 07:01:34 +02:00
Marc Mutz 2e298c5f82 Port qt_to_latin1() (and it's variants) from ushort to char16_t
Change-Id: Id341257f0ac1d6fd1d3176fb34fad253d2bddfb9
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-11 07:01:30 +02:00
Marc Mutz 00f6258fb6 Adapt qxmlstream.g to older changes to qxmlstream_p.h
Change-Id: I35c0700ed29d756949b95c3a26fdf9f087b5ef1c
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-10 12:56:41 +02:00
Marc Mutz 0beaed7384 QXmlStream: use more ranged for loops
More compact and isolates against decltype(size()) issues.

Had to make QXmlStreamSimpleStack iterable.

Change-Id: Icfa7b2ab09995c7a442fd8a5b2f5d6ce90120822
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-10 12:49:01 +02:00
Marc Mutz f490ac6712 QXmlStreamReader: avoid double QHash lookups
Replace

  if (hash.contains(x)) { // lookup #1
     ~~~ hash[x];         // lookup #2

with

  if (auto it = hash.find(x); it != hash.end()) { // lookup
      ~~~ *it;                                    // no lookup

halving the number of QHash lookups. The container is not shared, so
there's no danger of a detach when going directly to the non-const
function.

Change-Id: Ifae409f98e0be972b31a24326ad548723831fda8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-10 12:48:23 +02:00
Marc Mutz 8ed88d8d14 Port qt_from_latin1() from ushort to char16_t
Change-Id: I054e2f604be7253d3322751d55d03b5bac09aefc
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-10 12:46:45 +02:00
Marc Mutz c3d2e0e60a Replace uses of QString::fromUtf16(ushort*) with (char16_t*)
Ditto fromUcs4(uint*) with fromUcs4(char32_t*).

The ushort/uint forms will be deprecated.

Change-Id: Ia4ce45ed8679951b24af13109e3e498f51fc3c89
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-10 12:46:23 +02:00
Marc Mutz 90ad722fb2 QXmlStreamReader: fix a qint64 -> int truncation
QIODevice::read() returns qint64, not int, and nbytesread is qint64,
too.

Pick-to: 5.15
Change-Id: I6d41c5c656336a95bb115b461282e9f247493c25
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-10 11:32:06 +02:00
Lars Knoll a4eea312ed Correctly parse non BMP char refs in the sax parser
Update the auto test accordingly, and at the same time remove
all uses of QTextStream (as they aren't required).

Change-Id: I71b7cf6a6b54ea59507f27d5d2d04cc5ae5885fc
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-05-10 11:31:57 +02:00
Lars Knoll babcabfbc8 Clean up state handling for ICU and iconv based codecs
Get rid of the hack for the FreeFunction and instead add a proper
function pointer to clear the data to the ConverterState struct.

Change-Id: I104aae1a4381c69f1a254713ec76e1aeaa862cdc
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-10 11:31:50 +02:00
Andre de la Rocha a77b19a911 Windows QPA: Fix missing accessible name change events
Accessible name change events were not being relayed through UI Automation.
This caused changes in the state of combo boxes and possibly other quick
controls to be missed by UI Automation clients. This would result, for
instance, in Narrator not reading the state of a combo box when its current
index was changed with the keyboard.

Fixes: QTBUG-70621
Pick-to: 5.15
Change-Id: I16de0ff2bb0fb5227111d5347c25f442e9b0a533
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
2020-05-10 01:33:05 +00:00
Giuseppe D'Angelo c54279a1ad Explain what the QStringView levels mean
Insofar the information was just in the commit message
(00a8be85d1); add that explanation
to the code itself.

Change-Id: Ice1919c803a31918e8228091b3192728cbbc32f4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-09 23:49:42 +02:00
Marc Mutz a34fa92c29 QVncClient: fix an int -> QChar conversion
It was masked by all QChar ctors being made explicit, except the char16_t one,
which was left as the only viable choice.

Change-Id: I68da90730de0a7bdcd0825b4557b8534fbda2533
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-05-09 13:41:45 +00:00
Marc Mutz 928d57d8da QChar: add fromUcs{2,4}()
The fromUcs2() named ctor is designed to replace all the non-char
integral-type constructors of QChar which make it very hard to control
the implicit QChar conversions, which have caused a few bugs in Qt
itself. As a classical named contructor, it simply returns QChar.

The fromUcs4() named "ctor", however, needs to expand surrogate pairs,
and thus can't just return QChar. Instead, it returns a small struct
that contains one or two char16_t's, can be iterated over and be
implicitly converted to QStringView.  To avoid bikeshedding the name
(FromUcs4Result, of course :), it's defined inline and thus can't be
named outside the function. This function replaces most uses of
QChar::requiresSurrogates() in QtBase.

[ChangeLog][QtCore][QChar] Added fromUcs2(), fromUcs4().

Change-Id: I803708c14001040f75cb599e33c24a3fb8d2579c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-09 06:26:08 +00:00
Marc Mutz 19e7c0d2b5 QChar/QString: centralize case folding in qchar.cpp
There are (at least) two implementations of the low-level case-folding
algorithm, one of which (for QChar::toLower()) seems to be wrong (it
doesn't deal with special cases which expand to more than one code
point).

The algoithm hidden in QString and entangled with the QString
detaching code makes reusing the code much harder.

At the same time, the dependency of the algorithm on the unicode
tables makes exposing a non-allocating result type in the public API
hard. std::u16string would be an alternative if we can assure that all
implementations use SSO with at least four characters.

So, for the time being, leave this as internal API for use in an
upcoming QStringView::toLower() as well as case-insensitive hashing.

Change-Id: Iabb2611846f6176776aa20e634f44d8464f3305c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-09 06:25:05 +00:00
Marc Mutz f6b96bc347 QString: fix UB in replace()
Comparing with <, >, <= or >= such pointers as are not pointing into
the same array is UB. A clever compiler could look at the code,
determine that the only valid execution is for it to return true, and
just always take the copy.

While that would be benign, it's not guaranteed that this would be the
outcome (it's UB, after all), and, of course, we don't want to take
the performance hit if we don't need it.

Pick-to: 5.15
Change-Id: I48cda232ff10a3c9fd4babcd7e7103a3aed126e8
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2020-05-09 08:24:39 +02:00
Marc Mutz c3b5efa250 QString: fix UB in insert()
Comparing with <, >, <= or >= such pointers as are not pointing into
the same array is UB. A clever compiler could look at the code,
determine that the only valid execution is for it to return true, and
just always take the copy.

While that would be benign, it's not guaranteed that this would be the
outcome (it's UB, after all), and, of course, we don't want to take
the performance hit if we don't need it.

Fix by using std::less, which guarantees a total ordering for all
pointers.

Pick-to: 5.15
Change-Id: If07b9363b2ecd573f259e4fa972b629362061ce5
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2020-05-09 08:24:31 +02:00
Marc Mutz 3d58a6a0c8 QGraphicsAnchorLayout: port to QHVContainer [4/4]: sweep Orientation -> Qt::Orientation
This part of the patch changes all remaining occurrences of the local
versions of Orientation to Qt::Orientation.

Change-Id: Ic9ec19b8f069f614061f319abd30841e10cdd626
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2020-05-09 08:24:04 +02:00
Marc Mutz 6cc72479ac QGraphicsAnchorLayout: port to QHVContainer [3/4]: Orientation as alias for Qt::Orientation
There would still be too many renames, so keep the
locally-defined names 'Orientation', 'Horizontal', and
'Vertical' as deprecated forwarders to Qt::Orientation,
Qt::Horizontal and Qt::Vertical, resp.

Follow-up patches will remove these, then, completely.

Change-Id: Ifae926a38086027ad8fe4ad07d1d089c03f9508d
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2020-05-09 00:18:49 +02:00
Volker Hilsheimer 204b6c9908 Fix out-of-bounds access when searching arrays
Reported by Coverity.

All arrays in this code have the size Num... - 1, so accessing the entry
at Num... - 1 is out of bounds. Since we don't dereference the value,
and only use the address of the entry "one past the last" like an end-
iterator, this does not actually access out-of-bounds memory. However,
this code does rely on undefined behavior.

Use pointer arithmetics instead to get the address of the entry "one
past the last", which is well defined behavior and should satisfy
Coverity.

Change-Id: Ie5fbb2da080d6118169f35056763b5d95cfeda62
Fixes: QTBUG-83817
Coverity-Id: 183557
Pick-to: 5.15
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2020-05-08 21:38:08 +02:00
Marc Mutz 807b7f1f33 QChar: finish port to char16_t
Change-Id: If38405da34543f836e674474c05f2d98ed610a23
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-08 21:07:38 +02:00
Marc Mutz c34efa071b QTextOdfWriter: store all bulletChar()s as char16_t's
... and return them as QStringView from a file-static function so that
the conversion to QString is centralized in just one place (and we can
think of skipping the QString conversion once QXmlStreamWriter can
write QStringViews and not just QStrings).

Because the Style enum is ... weird (negative values), plaster the
code with static_asserts so that we get to detect breakage when the
enum values change.

Change-Id: I4ca89b6c2601c6a1153e202de966356bb4f51651
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-05-08 17:02:28 +00:00
Marc Mutz e031b33ad7 QFontDatabase: store all writingSystemSample()s as char16_t string literals
... and return them as QStringView from a file-static function so that
the conversion to QString is centralized in just one place (and we can
think of returning a QStringView in the public API?).

Change-Id: Ie33e2af1b57b8cb34672d245fb9205c68260f440
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-08 19:02:15 +02:00
Marc Mutz 1baf60d18c QFontDatabase: store Vietnamese writingSystemSample() in UTF-16
The old code stored it in UTF-8 with an encoded BOM.

Using the new QString::op+=(QStringView), we can store
the string, without the BOM, in ten instead of 15 bytes.

Change-Id: Ia1c51da523fcd6298b39bf2ec162a49c7cfdda63
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-08 19:02:09 +02:00
Timur Pocheptsov 920487bf6b QSslSocket::setSslSonfiguration - set d.configuration properly
We end up with an absurd situation:
QSslConfiguration conf;
//we set CA certs so that on demand loading is disabled:
conf.setCaCertificates({...});
QSslSocket s;
s.setSslConfiguration(conf);
Q_ASSERT(conf == s.sslConfiguration); // this assert fails.

Pick-to: 5.15
Change-Id: I272bed145434082acc6ead95fe3640d222b21131
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-05-08 18:11:03 +02:00
Timur Pocheptsov f579be96f7 QMenuPrivate::hideMenu - avoid deleting 'q' too early
This function among other things enters a nested event loop twice.
With enough luck processing events may end with posting deferred
delete event for 'q' and then ... executing this event leaving
the whole call tree with a dangling pointer. This is not very
convenient, and we filter out such events to re-post them
a bit later.

Pick-to: 5.15
Fixes: QTBUG-82349
Change-Id: Ic620273b529b89f2bd57e25df1f91c2754940670
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-05-08 18:10:52 +02:00
Timur Pocheptsov 8481a9fc97 QCocoaDrag - avoid using the deprecated API if possible
The -dragImage stopped to work in 10.14 first with change in behavior
documented and the new API (AppKit) proposed/advised. Then after
some update the old behavior was restored and D&D for multiple
URLs was working again without us having to change anything.
In 10.15 it's not working anymore and we have to properly fix
it and switch to the API advised. The new API is non-blocking,
but QCocoaDrag::drag is expected to be blocking so we have to
add a nested event loop to emulate the old behavior. Dragging
image is a bit problematic (the exception is thrown because
number of images (1) and number of items in NSPasteboard
are not equal): creating separate images for different
drag items looks really messy. So ... we use the same image
again and again with the same frame.

Fixes: QTBUG-71939
Change-Id: I02c2a10eab280cf4a55513adaf29c22fff934c01
Pick-to: 5.15
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-05-08 18:10:35 +02:00
Edward Welbourne 7cb4c50e73 Add more QCalendar references to \sa sections of QDate docs
The QCalendar API is, in places, more efficient or expressive than the
QDate facade that accesses it. Make sure those using QDate have a
chance to find it.

Pick-to: 5.15
Change-Id: Iffdddfa1f4884e316a1c9887a8a5053eefa73499
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-08 17:42:11 +02:00
Marc Mutz 93bc6be21d QStringView: add toNSString() / toCFString()
Use it in QString and QCocoaMenuItem.

As a drive-by, s,OS X,\macos,g.

[ChangeLog][QtCore][QStringView] Added toNSString(), toCFString()
on macOS.

Change-Id: Ib05818015a4be11a0d72d4487fb82c580d27854e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-05-08 14:53:08 +00:00
Giuseppe D'Angelo 729f1ab9a0 Merge QStyleOptionTabV4 into QStyleOptionTab
We don't need the subclass any more now that we can break ABI.
Merge it back into the "main" style option class, like already
happened during Qt 4->5.

Change-Id: Iba6d3df5f87b0c96f01746260f0a93951dad0e27
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2020-05-08 16:41:38 +02:00
Edward Welbourne 6e63d65e5a Fix minor errors in ISODate and RFC2822Date formats' documentation
Various format characters are not capitalized in the format string, so
should not be capitalized in the doc that describes them - especially,
the m for minute should not be made to coincide with the M for month.
The H for hours *is* capitalized for ISODate, correctly indicating
that it's on a 24-hour clock, so make that explicit; and correct the
RFC2822Date doc to use HH rather than hh for its hours, likewise.
Reflow to our standard 80-column limit for docs.

Pick-to: 5.15
Change-Id: I357252817d59436de5806f45d40030b873ca3926
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-05-08 09:51:50 +02:00
Edward Welbourne 2491ee98b1 QTest::ignoreMessage(): interpret the message in UTF-8
The message to ignore is given in source code, hence UTF-8; it was
being ingested as local 8-bit, which lead to problems when a debug
message wasn't 7-bit clean and the system's native encoding wasn't
UTF-8. Modified QtTest's selftest to check encoding failure.

Pick-to: 5.15
Change-Id: I898744a450115b6d2ee992f1d3b36d8efaeeff7e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-08 09:51:38 +02:00
Edward Welbourne e325bd68fd Catch overflow in QDateTime::fromSecsSinceEpoch()
It's documented to be undefined if the number of seconds is outside
the allowed range, but it doesn't hurt for that undefined behavior to
happen to be that the result is invalid. Added a simple test.

Change-Id: I20c3f680c7948b3904f213452272133be77e4d62
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-08 09:51:24 +02:00
Edward Welbourne bd5fe6f385 Merge some QDateTime methods marked for merging
New methods added that can take default arguments to make old methods
redundant, now that we can break binary compatibility.

Change-Id: Iface9d91d4636965285a3ad0c5347fcd7ce5398c
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-08 09:51:10 +02:00
Edward Welbourne 5ba66c5622 Remove all locale-dependence from Q(Date|Time)+
[ChangeLog][Important Behavior Changes][QDateTime] Removed all
locale-dependence from QDate, QTime and QDateTime, including the
Qt::DateFormat members that select the formats of the default and
system locales and the toString(Qt::DateFormat, QCalendar) overload,
which only used its calendar for these formats.  All toString()
methods now use, and all fromString() methods only recognize, the C
locale's names for days and months.  Use QLocale's methods if you need
to take locale into account.

Fixes: QTBUG-80441
Change-Id: I3a8968438741afb00f44262f79659c51e9b06c35
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-05-08 09:50:51 +02:00