Commit Graph

45796 Commits

Author SHA1 Message Date
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
Mårten Nordheim
80e0d0e08e QNetworkReply/http2: Add a contentEncoding test
Will be useful when DecompressHelper gets taken into use for both.

Task-number: QTBUG-83269
Change-Id: Iaf253219bed193025c2b82d6609f4dcc4de33df8
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-05-13 13:54:44 +02:00
Tony Sarajärvi
1736746228 Blacklist imageAtRightAlignedTab in SLES
Task-number: QTBUG-46206
Change-Id: I8da530eedcef937f5dea6c7507be74cbe26186a1
Reviewed-by: Heikki Halmet <heikki.halmet@qt.io>
2020-05-13 09:34:56 +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
Assam Boudjelthia
4ff5c8b954 Android: add ANDROID_ABIS qmake snippet
Add snippet on how to use ANDROID_ABIS inside the .pro file.

Pick-to: 5.15
Task-number: QTCREATORBUG-24014
Change-Id: Id3bb960c04ea6480b06878121ad33f89c03e5642
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2020-05-13 08:35:41 +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 a37785ec76: 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
Joerg Bornemann
b82c5fa4ac CMake: Set QT_TARGET_XXX properties for Qt executables and plugins
Before, we were setting those properties only for Qt modules.
Now, Qt executables and plugins have a full VERSIONINFORMATION
resource on Windows.

Also, extend the CMake API with the possibility to pass target
information to modules, plugins and tools. This will be used in a
subsequent commit.

Change-Id: I2bb8d3637569e0eaec76f56331bc23282285d872
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-05-12 14:31:06 +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
Lars Knoll
2134740e59 Disable the PCRE Jit when compiling qmake
I'm getting compile errors with gcc 9.3 without this, and it
makes sense to disable the JIT in bootstrapped builds anyway.

Change-Id: Ife867bd2d6fd0bf133edae4903bb6b6d295db547
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-05-12 13:43:12 +02:00
Alexandru Croitor
64f62105ce CMake: pro2cmake: Fix cmake api detection for plugins
We should search for the values of function names rather than
the mapping key.

Change-Id: Iedef7fcf4d716ff7f6d277d9626d9dc2dd781401
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-05-12 13:03:11 +02: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