Commit Graph

62531 Commits

Author SHA1 Message Date
Mikolaj Boc
44d3d87930 Use a sanitized JS export name for WASM modules (qmake)
Previously, a target name with a JS special character (like, -, for
example), would lead to an invalid export name being generated for
WASM modules. Sanitize these by replacing any non-alphanumeric
character with underscores, as is done for feature names.
This is a qmake version of 58a47edda1

Fixes: QTBUG-115506
Change-Id: I7c84076be54da91cf0f707c1613afc382acdcb83
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
2023-07-27 19:24:28 +02:00
Kai Köhne
ea0b7dafb2 Doc: Generalize statement about QLibrary::unload() and macOS
We dropped support for macOS 10.3 in Qt 4.6, 14 years ago.
But the logic to only 'fake' the unloading on Q_OS_DARWIN
remains. Also, add a statement explaining the behavior
in more detail.

Pick-to: 6.5 6.6
Change-Id: I62ec7df7c4b807f84c96619f78b3cef704c51335
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2023-07-27 18:02:06 +02:00
Edward Welbourne
4693c81268 Correct feature test in tst_qtranslator's CMake config
There is no QT_CONFIG_thread.
Thanks to Alexey Edelev for spotting why I couldn't run the test.

Pick-to: 6.6 6.5
Change-Id: I11c99d9b1ff8fed67b118028b76fba8ee6db3c42
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-07-27 15:09:24 +02:00
Oliver Wolff
ae7bc8803f windeployqt: Do not deploy insighttracker plugin by default
Qt insight's TP is using plugin type "generic" so that insight plugins
can be deployed for every Qt application. As "generic" plugins are part
of QtGui windeployqt deploys these if a dependency to QtGui is found.

As defaulting to a deployment of insight plugins might cause confusion
among users, we make deployment of these plugins explicit if the module
is available.

Pick-to: 6.6 6.5 6.2 5.15
Change-Id: I9d2a8595373d5a15b7afbeaf7174226563b1cb6f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Timothée Keller <timothee.keller@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2023-07-27 11:50:13 +02:00
Marcin Zdunek
e71693efb9 Socketpair is not supported on Vxworks
Change-Id: I7cfebfc85933ace1e449860b29c8ec85201690a0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-27 08:46:18 +02:00
Assam Boudjelthia
de7eaa940d Android: temporarily skip tst_qprinterinfo, tst_qwidget and tst_qwindow
Those tests often fail on Android 13 on RHEL 8.6 and 8.8. This patch
skips them to unblock CI while the underlying reasons are investigated
and fixed.

Task-number: QTQAINFRA-5606
Change-Id: If088d69c2160470ef50b2e74cd9b9399451c526d
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-07-26 20:12:49 +03:00
Alexey Edelev
efb9462cc0 Remove deprecated sync.profile
Task-number: QTBUG-112418
Change-Id: I53e81c5aca175d178f6e46d6a7fb18f4749c62bd
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-07-26 19:10:53 +02:00
Alexandru Croitor
8c912cddeb CMake: Make sure to follow BuildInternals CMAKE_BUILD_TYPE on Windows
A regression was introduced in
48841c34d2
when configuring qtshadertools with -prefix -debug and
no -developer-build.
qtbase would have been built as Debug, but qtshadertools as release.

This caused qsb.exe to link to a debug c++ runtime via QtCore, and a
release one via QtShaderTools libraries and thus cause heap corruption
crashes during runtime due to the mismatch.

This happened because the check in cmake/QtSetup.cmake thought Debug
was the default build type (nothing was specified on the command line)
without knowing it was explicitly set BuildInternals.

Set a variable when BuildInternals sets CMAKE_BUILD_TYPE and make
sure QtSetup does not override it then.

Augments 33af62db37
Amends 48841c34d2

Fixes: QTBUG-114958
Change-Id: I5e0a27b4d77512494c026dd911ec5757889a5a1a
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
2023-07-26 15:51:04 +02:00
Edward Welbourne
35d0f012ee Refine minor details in Darwin time-zone backend
It's Darwin, no longer OS X.
Include a link to the URL of NSTimeZone's docs.
Use actuall Q_UNREACHABLE() rather than a comment.
Correct a TODO comment (there *is* API for it, but fiddly).
Make a lower bound constexpr rather than merely const.

Task-number: QTBUG-104012
Change-Id: I9bf2018fa27ac9f6aa38eaebbf6b0f90ff5f6188
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-26 13:00:31 +02:00
Jacek Poplawski
e73e972aa6 Don't include resolv.h when libresolv is disabled
Change-Id: I5b216ed02452549b69847b34139613669905023c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-26 09:03:38 +02:00
Jacek Poplawski
2f3e76da63 VxWorks does not have byteswap.h
Change-Id: I9927fa64e76d59415d4974538383321c6dd6318b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-26 09:03:38 +02:00
Giuseppe D'Angelo
21d3bb9e74 QOpenGLWidget: invalidate the depth/stencil after rendering
We don't need them any more, only the color is used for compositing.
In principle this enables a driver to not writeback their contents into
main memory.

Change-Id: Ibde17af6c14c98ebdca956aaf902dfd728f9219c
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2023-07-26 06:46:51 +02:00
Giuseppe D'Angelo
76e650045e QSet: document removeIf
The docs were never added (unlike the docs for erase_if).

Change-Id: I7857c5eded68791ddfc4e6ce42a60d5736f5a438
Pick-to: 6.2 6.5 6.6
Fixes: QTBUG-115473
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-25 23:05:50 +02:00
Giuseppe D'Angelo
8cc8bbb466 QOpenGLWidget: use (and prefer) InvalidateFramebuffer
Desktop GL does not have the GL_EXT_discard_framebuffer extension at
all. Instead, it may have GL_ARB_invalidate_subdata.

Furthermore, GLES >= 3.0 and GL >= 4.3 both support FBO invalidation
through glInvalidateFramebuffer.

Extend the semantics of OpenGLExtension::DiscardFramebuffer to mean that
*any* possibility above is supported, and wrap it in a helper function
that calls whatever support is present. (This is all private API
anyhow.) Technically speaking glInvalidateFramebuffer supports a
superset of what glDiscardFramebufferEXT supports, but we never use such
superset, and the two APIs are otherwise identical.

Then, make QOpenGLWidget call that wrapper.

Change-Id: I64e042daf51493d3834c3ba1b53ae6e224bbc4ed
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2023-07-25 23:05:50 +02:00
Assam Boudjelthia
abe7c77d6d COIN/Android: Move android_emulator_launcher.sh to qt5.git
The android emulator launcher script is mainly used in CI and thus
makes sense to be moved there. This also makes it easier to make changes
without having to wait for submodule updates.

ANDROID_EMULATOR_RUNNER is defined in qt5's Android provisioning script.

Also, change the order of instructions execution to set COIN_CTEST_RESULTSDIR
env variable before running the emulator script. That var points to the path
to where the emulator logs are saved.

Task-number: QTQAINFRA-5596
Change-Id: If6ac285fecdc49611c398e8185e6e3e6b9c353fb
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2023-07-25 23:07:45 +03:00
Ivan Solovev
27b06e50e0 QIntegerForSize: fix check for 128-bit ints
We do not need the Q_CC_GNU check, as the __SIZEOF_INT128__ check is
enough.

Pick-to: 6.6
Change-Id: I12bdd02186c4f5dad0ab3f4596f4b37e5c3f7eee
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-25 19:48:35 +02:00
Thiago Macieira
a7f227f56c Make qYieldCpu() public API
Rewritten to be a bit simpler, added a few more yield/YieldProcessor
alternatives, added RISC-V support.

[ChangeLog][QtCore] Added qYieldCpu() function.

Fixes: QTBUG-103014
Change-Id: I53335f845a1345299031fffd176f59032e7400f5
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2023-07-25 07:21:56 -07:00
Ivan Solovev
aaa8c38353 QProperty: improve QPropertyAlias deprecation
Use QT_DEPRECATED_VERSION_X_6_6 and provide reasons for deprecation
for the enum value and for the QPropertyObserver constructor.

Pick-to: 6.6
Change-Id: I0f9b4c6dc8bb9fd5eac692a6953c90059f3c77ef
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2023-07-25 15:43:05 +02:00
Dennis Oberst
b03f6def31 Doc: add overview page for Qt's comparison types
Provide a centralized overview of Qt's comparison types, available
for three-way comparisons.

Fixes: QTBUG-114402
Change-Id: Ib7229e753ef750d00c208794d1feb3e6d42133ad
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
2023-07-25 15:43:05 +02:00
Krzysztof Sommerfeld
62a9178504 Add case for VxWorks platform in initLocale method
Change-Id: Ic0cef59d452c72340f6216c9ae3c261a24c2d296
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-25 12:44:14 +02:00
Dennis Oberst
c2310f8e03 QNativeIpcKey: add qHash() function
Equality comparable types should define a qHash() function.

Pick-to: 6.6
Change-Id: I1677fbefa3d09d49a292d369b808793f884c32e9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-25 12:31:04 +02:00
Edward Welbourne
63de44f1d3 Add missing \l to DOM bookmarks example
It tried to reference the QXmlStream equivalent example, putting its
title in {...}, but neglected the \l prefix to that.

Change-Id: Iedc556ecd65103057d0dea65debe628b50d1190e
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Reviewed-by: Øystein Heskestad <oystein.heskestad@qt.io>
2023-07-25 12:31:04 +02:00
Dennis Oberst
c6fe64b17c Add QStrongOrdering and QWeakOrdering
These new classes align with the criteria of std::strong_ordering
and std::weak_ordering and were the missing types required by
the three-way comparison operator.

References:
https://en.cppreference.com/w/cpp/utility/compare/strong_ordering
https://en.cppreference.com/w/cpp/utility/compare/weak_ordering

Change-Id: Ie6620ca98103800fd5504810dc5689c1dd1c2972
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
2023-07-25 12:31:04 +02:00
Edward Welbourne
669470e2be Clarify QElapsedTimer::hasExpired()'s documentation
The description in terms of timeouts was confusing. Instead, say what
it actually does, in plain terms. Mention that you can do similar for
a duration.

Pick-to: 6.6
Task-number: QTBUG-115447
Change-Id: I4618d7fa290e7959ed3cb51e5c2576b041f77091
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-25 12:31:04 +02:00
Axel Spoerl
93e9d21490 tst_QExplicitlySharedDataPointer: Remove stray comment
Remove stray comment at the end of tst_qexplicitlyshareddatapointer.cpp

Pick-to: 6.6
Change-Id: I31a6c38002e56e7c43e527864ba3d9324950079f
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
2023-07-25 12:31:04 +02:00
Axel Spoerl
3bb991ca05 tst_QXmlStream: Remove stray comment
Remove stray comment at the end of tst_qxmlstream.cpp

Pick-to: 6.6
Change-Id: I88550e2b75194e7895d8578ca0e8350af59d4dfe
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
2023-07-25 09:31:17 +02:00
Thiago Macieira
07258c38c3 tst_QLocale: add testing of the extremes for doubleToString
Change-Id: I5f7f427ded124479baa6fffd1760b1ec36e7e827
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-07-24 15:35:48 -07:00
Jacek Poplawski
51c66cee67 Remove include ipc.h as it is no longer needed
Change-Id: I8b7c6744794f4369d6e27fdb454a059727413d9b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-24 22:24:41 +02:00
Thiago Macieira
4a43149d7b QThreadPipe & QEvent: use a simpler atomic operation
This causes modern compilers (i.e., not MSVC) to emit a single
bit-test-and-set instruction instead of a cmpxchg. It's still an atomic
operation, so it's not that much faster (if at all), but it has simpler
encoding.

Previous:
000000000026bca0 <QEventDispatcherUNIX::wakeUp()>:
  26bca0:       mov    0x8(%rdi),%rdx
  26bca4:       xor    %eax,%eax
  26bca6:       mov    $0x1,%ecx
  26bcab:       lock cmpxchg %ecx,0x98(%rdx)
  26bcb3:       jne    26bcc5 <QEventDispatcherUNIX::wakeUp()+0x25>
  26bcb5:       mov    0x90(%rdx),%edi
  26bcbb:       mov    $0x1,%esi
  26bcc0:       jmp    c01d0 <eventfd_write@plt>
  26bcc5:       ret

Now:
  26b3a0:       mov    0x8(%rdi),%rax
  26b3a4:       lock btsl $0x0,0x98(%rax)
  26b3ad:       jae    26b3b0 <QEventDispatcherUNIX::wakeUp()+0x10>
  26b3af:       ret
  26b3b0:       mov    0x90(%rax),%edi
  26b3b6:       mov    $0x1,%esi
  26b3bb:       jmp    c11d0 <eventfd_write@plt>

Change-Id: I53335f845a1345299031fffd176fa8ac1de3ad13
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2023-07-24 20:24:36 +00:00
Thiago Macieira
41f4139306 QEventDispatcherUNIX: remove the fallback to pipes on eventfd systems
Linux has had it since 2.6.23, which is positively ancient from our
perspective. No one runs Qt on systems anywhere near that old (I'd be
amazed if anyone managed on CentOS / RHEL 7, which carries Linux 3.10).
And we don't deal with ENOSYS on FreeBSD either.

The removal is accomplished by dead code elimination: it's still
compiled on Linux and FreeBSD.

Drive-by
 - use NSDMI in QThreadPipe
 - remove EINTR_LOOP for eventfd_write(3): it can't be interrupted

Change-Id: I63b988479db546dabffcfffd1766e2c7acc6da46
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2023-07-24 13:24:36 -07:00
Thiago Macieira
f174ae254b QEventDispatcherUNIX: clean up old cruft
All the timing related code is gone.

Change-Id: I63b988479db546dabffcfffd1766e1f2618650c1
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2023-07-24 13:24:36 -07:00
Thiago Macieira
a1451bbb57 QEventDispatcherUNIX: convert "eventfd" feature to proper QT_CONFIG
And mark it private.

[ChangeLog][QtCore] Qt no longer sets the QT_NO_EVENTFD feature macro
on systems without eventfd.

Change-Id: I63b988479db546dabffcfffd1766e1df5255c930
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2023-07-24 20:24:35 +00:00
Alexandru Croitor
bc2ae5a708 CMake: Fix installed metatypes not being propagated to other repos
The install-time code path that's supposed to propagate and install the
metatypes files was never executed, because of a wrong
PARENT_SCOPE assignment and because the code was overriding the meta
type file name retrieved from a property with an empty non-existent
argument.

This caused build failures in qtdeclarative when qmlcachegen generated
invalid cpp code without having access to the qtbase foreign types.
This only happened in prefix builds.

Use the appropriate variable for the PARENT_SCOPE assignment and
remove the incorrect file name assignment.

Amends c45c32af32

Task-number: QTBUG-115152
Change-Id: I120d53d44382a1ac6f62792ec1620add3e7b136c
Reviewed-by: Amir Masoud Abdol <amir.abdol@qt.io>
2023-07-24 20:26:07 +02:00
Axel Spoerl
4a26ae1b27 QColorDialog: React to HSV values during manual edit instead of change
The existing signal connection can cause a loop and undefined behavior
in the interaction between the line edit for a hex rgb color and the
individual rgb values.

=> Change connection to textEdited, to react only on manual editing.

Fixes: QTBUG-115189
Pick-to: 6.6 6.5
Change-Id: Ie3062c575652b905a8ab16edb2f5f77f8d150f36
Reviewed-by: Santhosh Kumar <santhosh.kumar.selvaraj@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-07-24 17:03:14 +02:00
Friedemann Kleint
d164ec4abe QXmlStreamReader: Fix translation context of error messages
QObject::tr() should not be used.

Amends c4301be7d5.

Task-number: QTBUG-92113
Task-number: QTBUG-95188
Pick-to: 6.6 6.5
Change-Id: I09547c3d048d6b3726e33be74b06035f0eec4f31
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
2023-07-24 14:09:00 +02:00
Mikolaj Boc
6213f6565c Move the selenium qwasmwindow test to the selenium dir
This is done in anticipation of another test for dragging

Change-Id: I56961eb1d16a4a6b6c58890c9c882dea813dfa08
Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-07-24 12:32:35 +02:00
Mikolaj Boc
2b02ca445e Use new entry function name in qwasmwindow test
Use qwasmwindow_harness_entry instead of the old createQtAppInstance.

Change-Id: I381dd43d9144fe70f055c19db4cd95f90313883b
Reviewed-by: Piotr Wierciński <piotr.wiercinski@qt.io>
Reviewed-by: Mikołaj Boc <Mikolaj.Boc@qt.io>
2023-07-24 12:32:35 +02:00
Marcin Zdunek
1e3d500463 Fix issue with qstorageinfo_unix.cpp not working on Vxworks
Problem was, that qstorageinfo_unix.cpp is using sys/statvfs.h header, but this header is not available in Vxworks(Vxworks has
its own /sys/ directory).As this feature is not there in Vxworks, we are using a "_stub" file to omit whole implementation.
This is the same solution as it was used for Qt5 for Vxworks.

Change-Id: I1bc5a576e63f403c923cbc93571967184677305f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-24 06:59:04 +00:00
Jacek Poplawski
5a0c2cabcd Remove usleep(), getpagesize() and getpwuid() from qfunctions_vxworks
This functionality is now available in VSB

Change-Id: I761d73d8ae100b2e0eae8101479b325ddcbde6cc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-24 06:12:42 +02:00
Ahmad Samir
309e7d88c3 QStringBuilder: test more concatenation variants
- rvalues, they work due to e.g. the implicit conversion to QString, so
  the compiler picks the "const String &" overloads. (This may change by
  adding rvalue overloads in a later commit, although that will mean
  adding many more operator+() overloads to disambiguate the calls)
- QByteArray + QByteArrayView
- More P and more Q (even though in some cases P and Q are defined as
  the same operator in some QStringBuilder unittest "scenarios")

Change-Id: I4e7daecdb6887fb52f45732cd32323af20b1b850
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2023-07-24 01:04:55 +03:00
Ahmad Samir
f107773742 QValidator: return State::Intermediate for certain trailing characters
E.g. a group separator, a -/+ sign, or 'e' (exponent). Input ending with
one of these characters now returns Intermediate, as it can become
Acceptable if the user types more characters.

Remove a check from initialResultCheck(), as it's now covered by
QLocaleData::validateChars() checking that the last character in the
buffer is -/+, this works the same if buffer's size is 1.

Extended unittests based on the linked bug report; the other cases for
"last" are already covered by existing unittests.

Task-number: QTBUG-111371
Change-Id: I9b6979c29f07a5f57b040004cd3dbf4e27147c21
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-07-24 00:04:47 +02:00
Christian Ehrlicher
3d284d9b8d SQLDatabase: merge two global statics into one
Merge the two global statics into one.

Change-Id: I8a93ba848abe31527551313c8a4a449d05e3d680
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2023-07-23 16:49:16 +02:00
Christian Ehrlicher
e532933a2a SQL/PSQL: Handle jsonb operators in prepared queries
Add an option to disable handling of positional binding so jsonb
operators are not screwed up

[ChangeLog][QtSql][QSqlQuery] Add setEnablePositionalBinding() to be
able to disable positional binding.

Fixes: QTBUG-96636
Change-Id: I428a9d3b10274b97292ab86a74d9b3971d6f10e9
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2023-07-23 16:49:15 +02:00
Ahmad Samir
4a7023f5b4 QTimer: add note about QT_NO_CONTEXTLESS_CONNECT to callOnTimeout docs
Drive-by change: use \code, better formatting especially for longer
lines of code.

Change-Id: I90dbde17a5bea276c86304bff64027dd9d248a21
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-23 01:22:15 +03:00
Ahmad Samir
794e0d1ac6 QTimer: fix API docs of callOnTimeOut overload
It actually takes one parameter, because in this overload the connection
type can't be specified, for example:
QTimer timer;
timer.callOnTimeout([]() { qDebug() << "slot"; });

The call chain is:
QObject::connect(timer, &QTimer::timeout, functor);
connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal, Func2 &&slot)
connect(sender, signal, sender, std::forward<Func2>(slot), Qt::DirectConnection);

the connection type is always DirectConnection.

Spotted by Giuseppe in code review.

Pick-to: 6.6 6.5 5.15
Change-Id: Ia8bbd91e98a357244cbfae4e3ed63d4c73038fa2
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2023-07-23 01:22:06 +03:00
Ahmad Samir
9bc43ba1c6 QLocaleData:: port bytearray/stringTo{U}LongLong to QSimpleParsedNumber
Change-Id: I97fe38d9b676cf92003a7323ebb5f56b9b79abad
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-07-22 22:29:31 +02:00
Ahmad Samir
62d1ebe465 QLocale: move QSimpleParsedNumber to qlocale_p.h
It was defined in qlocale_tools_p.h which already includes qlocale_p.h.

Change-Id: I43464a27ec15266ce8632ca30dcd1c57d94b1f25
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-22 22:29:31 +02:00
Ahmad Samir
67129ef9cd QLocaleData: change validateChars() to return validation State
Instead of returning just bool, return a result struct {State,
CharBuff}, a State is useful as it can have an Intermediate state
where the input isn't Acceptable yet, but not Invalid as such. The
example from the linked bug is in tst_QIntValidator::validateFrench(), a
string "1 ", which can be interpretted as a number with a group
separator, but the input shouldn't end with a group separator (changing
the unittest will be done as part of a separate commit).

CharBuff (QVarLengthArray<char, 256>) replaces the QByteArray input
parameter; a QVarLengthArray means no heap allocation in typical
use-cases with input text < 256 characters to validate. This required
minimum changes (QVLA doesn't have startsWith, replaced by comparing
with buff[0]; and for converting to double, wrapped it in a QBAV).

Task-number: QTBUG-111371
Change-Id: I4e0eb612d470ef03faf52031ddfe9c4bdb31e1e1
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-07-22 23:29:31 +03:00
Ahmad Samir
6bb61f7e89 QValidator: de-duplicate some code
QDoubleValidator didn't return Intermediate if the buffer only had one
character, - or +, but it makes sense to check that there too.

In a later commit that check will be moved to QLocaleData::validateChars
(which will return "Intermediate" if the last character in the result
buffer is -/+, in this case it's the last and only character in the
buffer).

Change-Id: I2f9f5b92880b7e9cc1a3ab36b5ec322f57291ee9
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2023-07-22 22:29:30 +02:00
Ahmad Samir
9d4cd4a63e qstringalgorithms: refactor trimmed_helper_positions
Take by const Str&, trimming a container/view of characters means
removing whitespace from the beginning and end, so the two args were
always cbegin() and cend().

Change-Id: Iac0eda59341f1981204d11013d591013eae3c4e0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2023-07-22 20:48:11 +03:00