Commit Graph

12180 Commits (3a4115d1236bc78dda078657883283cc92df8e8a)

Author SHA1 Message Date
Edward Welbourne 3a4115d123 Return a more useful date-time on parser failure in spring-forward gap
Up to 5.15.0, QDateTime::fromString(), when parsing a string that
matched the format but represented a date-time in a spring-forward's
gap, would return an invalid date-time object that represented a "best
shot" date-time, correcting the error in the string as best it could.

In 5.15, in order to handle time-spec information correctly, we
adapted the date-time parser to have a fromString() variant that
parsed a date-time as a whole, rather than as a date and a time; as a
result, QDTP::fromString() now returns false and QDT::fromString()
returned a default-constructed instance instead of the invalid
date-time that QDTP had produced.

Amend 7605451604 to restore the prior
behavior of returning the invalid date-time object from QDTP instead
of a default-constructed invalid date-time. Also document what this
implies for the caller's ability to recover from the situation, if a
best shot result is better than nothing.

[ChangeLog][QtCore][QDateTime] Restored pre-5.15.0 behavior when
parsing a date-time from a string (and document what it implies): if
the string has the right form but represents a date-time that was
skipped by a time-zone transition (e.g. a DST spring-forward), the
invalid date-time object returned can, none the less, be used to
recover a near-by date-time that may be more useful in some cases.
From 5.15.0 to 5.15.2 and in 6.0.0, a default-constructed QDateTime
was returned in place of this more informative invalid date-time.

Task-number: QTBUG-88633
Pick-to: 6.0 5.15
Change-Id: If0b439038d5fe48eefb951c62f3aae2933bb5651
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-27 13:26:53 +01:00
Edward Welbourne cdcfb7c4f9 QDateTimeParser: fix handling of AM/PM texts
An AM/PM field is only fixed-width if the locale's AM and PM texts
have the same length, which we shouldn't take for granted.
(They're not in Albanian, Bosnian or Cherokee.)

In sectionMaxSize(), count tells us the case, so we shouldn't be
taking both case variants into account, only the one we need.

Change-Id: I03b985cc5bf74c34742480558cef08af6343ed93
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-27 13:26:53 +01:00
Edward Welbourne 380d97e1bd Bounds-check time-zone offsets when parsing
Parsing of time-zone offsets should check the offset string conforms
to the expected format and has valid values in its fields. The
QDateTime parser, fromOffsetString(), neglected the bounds check on
hours; the QTzTimeZonePrivate parser, parsePosixTime(), neglected all
upper bounds checks, only checking against negative valus.

Drive-by - refined phrasing of a comment.

Pick-to: 6.0 5.15
Fixes: QTBUG-88656
Change-Id: If04cdbe65064108eaa87c42310527783ad21b4c0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-27 13:26:52 +01:00
Edward Welbourne 085678a75e Mark two impossible code-paths with Q_UNREACHABLE
Change-Id: I8c04f512b078d4c13d759854b65f4d39b7b80e75
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2020-11-27 13:26:52 +01:00
Edward Welbourne 4785e39156 QCalendar: increase coverage by tests
Added tests for aliases and various calendar properties, ensured
dateToJulianDay()'s invalid date branch is exercised. Corrected
assertion when constructing from system and asserted calendarSystem()
is as expected.

Pick-to: 5.15
Task-number: QTBUG-88183
Change-Id: I510afcb5d9d115f68148d1f679f3224d712f92f4
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-27 13:26:52 +01:00
Tor Arne Vestbø 58afadc624 Update setHighDpiScaleFactorRoundingPolicy docs
The default is now passthrough. And let's not mention the
environment variable overrides, as they are meant for internal
testing.

Pick-to: 6.0
Pick-to: 6.0.0
Change-Id: Ie2409e5411d4bdcdf041834cb5ca9e1215aa173a
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-11-27 12:26:51 +00:00
Allan Sandfeld Jensen 05bb9b1016 Also remove 0 initialization from QUrlTwoFlags
Was overlooked when removed from QFlags

Pick-to: 6.0 6.0.0
Change-Id: If65ff4a07e2f72589d2c32c2d24366ff9dc2405f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-27 12:26:51 +00:00
Kai Koehne efa05e0417 Doc: Consistently use book style capitalization for QString
Pick-to: 5.15 6.0
Change-Id: I2ab64fe58ad737b23f0829ed91591efaa0c22c6f
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-27 08:28:25 +01:00
Kai Koehne 90c3513f37 Doc: Linkify all mentionings of QT_NO_CAST_TO_ASCII
This way the user can directly click the link, instead of looking at the
'see also' section.

Pick-to: 6.0
Change-Id: I50b62fe0b376a3f6462c11abc46a001c334ba82a
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-27 08:28:25 +01:00
Kai Koehne 50873153a7 Doc: Improve *_CAST_FROM_ASCII documentation
Pick-to: 5.15 6.0
Change-Id: Iba73c0a38e2c4add740aab20036aa39c56eb4d98
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-27 08:28:25 +01:00
Florian Bruhin 300b8314f5 Fix broken \endcode marker in Qt 6 porting docs
Change-Id: I8dfd72f6a00a6c91a38bb201b14524b0bc7cf100
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit e723f0aceb7de3b52fb40de3ef1fe0259fce47a8)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2020-11-27 07:28:25 +00:00
Fabian Kosmale 5abe64928c QCache: Fix crash observed in tst_QAccessibility
Fixes a use-after-free which can reliably be observed under ASAN. In
QConfFileSettingsPrivate::~QConfFileSettingsPrivate we call
unusedCache->insert(conf_file->name, conf_file, ...)
Note that the key is a member of the object. Thus by deleting the object
before using the key, we dereference a dangling pointer.

Amends f08492c6fd.

Change-Id: I3a550fc73446b72dd46456232e85f6d206d64c01
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
(cherry picked from commit 5283ee71040dc2f3a762e9cc5e807fb17587e9b7)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2020-11-27 07:28:24 +00:00
Giuseppe D'Angelo 5771591fbc QString/QByteArray: add erase() for iterators
Otherwise they're not usable with iterator-based algorithms
that e.g. remove, partition and the like.

[ChangeLog][QtCore][QString] Added erase().

[ChangeLog][QtCore][QByteArray] Added erase().

Change-Id: I78829b1a5365dd53b6b6423ceedbc52edeafbc63
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2020-11-26 14:43:20 +01:00
Giuseppe D'Angelo b475c3e67e QVLA: modernize some code
Use if constexpr instead of plain if; use C++17 algorithms
instead of hand-rolled loops.

Change-Id: Ifa092f892199b9b21bad04b2d72d5e3117a1b377
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2020-11-26 14:43:20 +01:00
Giuseppe D'Angelo e6e67f31c1 QVLA: always use new to create new objects
Even for non-complex types, it makes no sense to use the assignment
operator instead of placement new when constructing new objects.

Pick-to: 6.0 5.15
Change-Id: I5f15fe4b3397cf52d1d35e6c4dcc513b94b3cf14
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2020-11-26 14:43:20 +01:00
Maks Naumov cc1c40c2de QEventDispatcherWin32Private: Get rid of TimerInfo struct list
It was redundant with the timer info dictionary, and was even used
where using the dictionary would have been more efficient.

Change-Id: Ia656bf9b56c61e23df9f8743d8f8efbf65d37574
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
2020-11-26 08:36:44 +02:00
Marcel Krems 5023c0beb5 Remove deprecated algorithms from documentation
Change-Id: Ie1eff48696c62ed23fedda1a9e711aeb8264432f
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-11-26 03:38:11 +01:00
Marc Mutz 3f8896d77e QSet: add missing insert-with-hint
Since QHash is missing the overload, too, just ignore the hint for
now, but provide the STL-compatible signature so generic code can use
QSet as a normal sequential container.

[ChangeLog][QtCore][QSet] Added insert() overload taking an insertion
hint, for STL compatibility.

Change-Id: I9fe41877343ebff721b650fb7b9cd4e06b6608d8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2020-11-25 22:08:09 +01:00
Volker Hilsheimer 61436f24cb Remove some examples from highlighted list
The Local Fortune examples and the JSON Save Game don't need to be
highlighted in Qt Creator.

Pick-to: 6.0 6.0.0
Change-Id: I7c7c9997e9a1cfb61f94309f16be65c810b42e14
Reviewed-by: Tuukka Turunen <tuukka.turunen@qt.io>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
2020-11-25 22:08:09 +01:00
Volker Hilsheimer 60870ca68c Document removal of QEvent copying
Pick-to: 6.0 6.0.0
Change-Id: Ia4681fe5c5ae0953ba75f4ab24da4eec7461c719
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-25 03:48:09 +01:00
Alexey Edelev 2548438e32 CMake: Change generated resources naming
Align generated resources .qrc file naming to qmake naming.
Update tests.

Fixes: QTBUG-88581
Pick-to: 6.0
Change-Id: Id8a2f91f23c257e5b8bd371748c2151ec54a6418
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-24 21:51:29 +01:00
Alexandru Croitor 25dcf5ede6 CMake: Use lower cased property name for entrypoint library opt-out
We need this to enable headersclean functionality to work with CMake
<=3.18 which is our minimum required CMake version to build
Qt (it's not a problem for 3.19).

Otherwise we hit a configuration error while trying to evaluate
generator expressions for INTERFACE only libraries for which we need
to do the headersclean check (e.g. UiPlugin in qttools).

Sample error message:

 INTERFACE_LIBRARY targets may only have whitelisted properties.  The
  property "QT_NO_ENTRYPOINT" is not allowed.

More info:

 https://gitlab.kitware.com/cmake/cmake/-/issues/21484

Naming it lower case avoids the issue, but is inconsistent with all
our other public property names.

Furthermore if we do this change, it should probably go to 6.0.0 due
to it being a property that a user is meant to set in their project.

Task-number: QTBUG-82615
Change-Id: I1f1439f1e5cbc816010eba7301605a8f60b88fd1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 6ca66de9120537134b63d42de6c53c6e5834e8f3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2020-11-24 20:50:21 +00:00
Andreas Buhr 115955069f Update container overview documentation - section on growth strategies
The Qt container overview documentation contained outdated information
on container growth strategies. This patch updates the documentation
to reflect the current implementation.

Task-number: QTBUG-86584
Pick-to: 6.0
Change-Id: I8fd014138f9a2e73925dafaa270d4c98ab672d96
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
2020-11-24 18:54:45 +01:00
Giuseppe D'Angelo c25cd03d79 Re-fix the definition of primitive types
The conditions are AND, not OR. Technically we don't rely on
not having constructors any more, but we may reserve the right
in the future to have uninitialized resizes.

Change-Id: Icfae61079a544f7ac8e90a32ad605c12cfa8b4aa
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit bcd38a96149f5397375b57e948c05c7a8f172194)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2020-11-24 07:17:40 +00:00
Volker Hilsheimer 146b37cdf3 Return subclass type from overrides of QEvent::clone
C++ allows overrides to return a covariant type, so if calling code has
already cast the callee down to the right type, don't require it to cast
the returned clone down as well.

Pick-to: 6.0 6.0.0
Change-Id: I802f00a3c78e03047046986d0ed0a479b47573b8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-23 11:52:25 +01:00
Edward Welbourne f884689d04 Clean up docs of QCalendar-related QLocale::toString() variants
Some of the new functions were added without documentation, or without
updating the docs to mention the optional calendars. Shuffle the
methods so that the one with calendar is what the primary
documentation comment describes and the one without is documented as
an overload.

Pick-to: 5.15
Change-Id: Iee4cdb1d3b0ed21a50e205a5275a0695a2667550
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-23 11:31:53 +01:00
Kai Koehne 9e1aa7fc5f Do not advise using AUTORCC anymore
Task-number: QTBUG-87643
Pick-to: 6.0 6.0.0
Change-Id: Ib07586cc4206312044c0f0c154fa2ab2aada2c19
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-23 10:01:02 +00:00
Kai Koehne f74e572cb7 Doc: Update CMake functions in Qt Core for Qt 6
Pick-to: 6.0 6.0.0
Change-Id: Ica6141f183c75f60e5b1031c0972f79de7821841
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-23 10:00:57 +00:00
Fabian Kosmale 5806ecf5cb QMetaType: Track whether type is QML list type
This information is required in the QML engine to handle list properties
(instances of QQmlListproperty<T> and list<T> types from QML).

Pick-to: 6.0.0 6.0
Change-Id: I1e30572f1c91f58b290cb9b4b07433af99a1db6f
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-11-23 09:57:00 +01:00
Ivan Solovev 54875be84d Add convenience functions for QFuture creation
[ChangeLog][QtCore][QFuture] Add convenience functions to create
a ready QFuture and a QFuture with an exception

Task-number: QTBUG-86713
Change-Id: Ic7f9ca590a8ea8a9696b84f35bad074780794461
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-11-23 09:50:21 +01:00
Allan Sandfeld Jensen f61f8bb966 Replace qt_make_unique with std::make_unique
We can depend on C++14 now.

Change-Id: Iee9796cd22dbfbb70d4bdb25f0eee1662a026d6d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-23 09:50:21 +01:00
Giuseppe D'Angelo 03ab48657d Drop a [[maybe_unused]] on a variable
Turn it into an inline variable.

Change-Id: I491bd8fee3d25f814587db5a1047f15990081d66
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-11-23 06:24:24 +01:00
Giuseppe D'Angelo 8ae9431c79 QMargins(F): add support for structured binding
[ChangeLog][QtCore][QMargins] QMargins is usable in a structured
binding.

[ChangeLog][QtCore][QMarginsF] QMarginsF is usable in a structured
binding.

Change-Id: I0c501847b9377c47bd0e63da3735792075bd0079
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-22 02:22:20 +01:00
Mårten Nordheim f08492c6fd QCache: fix accidental pessimization
By unconditionally removing the existing entry we never
hit the if (result.initialized) branch. Change it to
only remove the existing entry if we don't plan on inserting.

Task-number: QTBUG-88183
Pick-to: 6.0 6.0.0
Change-Id: If4e7ebac23aa63d4b9d4b0a22882dd7d90a58e8b
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-21 13:59:16 +00:00
Volker Hilsheimer 291e8e729e Delete move constructor and move-assignment for QEvent
As of 19f9b0d5f5 we define a protected copy
constructor and assignment operator. Static analyzers warn about missing
move variants, so delete those in addition.

Pick-to: 6.0 6.0.0
Change-Id: I28c1a2afd4560ce35a258bde507dafd93245b75b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-20 23:16:07 +01:00
Thiago Macieira 47778847ec QCoreApplication: add doc to discourage use of processEvents
Change-Id: If51855da004b4f3fbf43fffd1648fc580c00224a
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-11-20 11:38:03 -08:00
Thiago Macieira 8ec9a48e80 QCoreApplication: add more information to processEvents() docs
Just shows how bad an idea to call this function it is.

Pick-to: 5.15
Fixes: QTBUG-88653
Change-Id: If51855da004b4f3fbf43fffd1648fc294065160d
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-20 19:38:02 +00:00
Assam Boudjelthia aaed8f283c CMake: add CMAKE_FIND_ROOT_PATH as extraPrefixDirs for androiddeployqt
androiddeployqt has extraPrefixDirs to provide extra prefix paths in
addition to the main Qt install path, however, for some reason, it was
not being used.

With this, apps for Android using Conan can pass the Conan build prefix
for androiddeployqt to use it as well.

Task-number: QTBUG-88519
Change-Id: Iad73055ac6c03e3ffe86fca271dbda67ac29a275
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 00e726ce12431e8c3db8bc9deb8952f930a5a672)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2020-11-20 15:45:52 +00:00
Alexey Edelev eaedd7efbf CMake: Fix resource_name variable name in __qt_propagate_generated_resource
__qt_propagate_generated_resource used resourceName variable from
parent scope instead of one passed to function.

Pick-to: 6.0.0 6.0
Change-Id: I18ce8a9f9c01bcfdbab532def55af4e2780d7753
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-20 15:29:32 +01:00
Giuseppe D'Angelo fb6b7869e8 QPoint(F): add support for structured binding
QPoint(F) are "naturally" destructurable in their x/y
counterparts (hello Mac/Carbon users, we don't live in 1999
any more, it's x and then y, and not vice versa...).

[ChangeLog][QtCore][QPoint] QPoint is usable in a structured
binding.

[ChangeLog][QtCore][QPointF] QPointF is usable in a structured
binding.

Change-Id: I8718a4e80be4ce03f37f012034f1fba009304b32
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-20 16:01:14 +02:00
Giuseppe D'Angelo b119b17717 QScopedPointer: streamline code with qExchange
Change-Id: I88059d2c484fa2762ec0fc526d81db543043b58b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-20 14:34:22 +01:00
Giuseppe D'Angelo dda6a7497e QScopedPointer helper deletes: add operator()
To make them compatible with unique_ptr. Drive-by,

* add missing noexcept
* turn a `if (p) free(p)` into just `free(p)`.

Change-Id: I234dad6f6b953202dbc537875b94f653a09910fb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-20 14:34:18 +01:00
Giuseppe D'Angelo 37808ee55a Remove QScopedSharedPointer
It's private and unused since ~2012.

Change-Id: Iea11af27f7eebf3eae2467b22b68cd4c26885edd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-20 14:34:14 +01:00
Giuseppe D'Angelo 612a01be65 Deprecate QScopedPointer::take()
We've decided that QScopedPointer shouldn't be movable,
because it would break the semantics of being "scoped"
(the pointer/pointee won't survive the scope).

Then, QScopedPointer shouldn't allow for take() either.
If you need those semantics, reach for unique_ptr.

[ChangeLog][QtCore][QScopedPointer] The take() function
has been deprecated. This was an API mistake, as it
allowed the pointer/pointee to escape from the scope,
defeating the point of the QScopedPointer class. If you
need such semantics, use std::unique_ptr (and call
release()).

Change-Id: I3236f085f763b04eb98e3242abc06f7c54fb3d8b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-20 14:28:31 +01:00
Giuseppe D'Angelo 5dd7e7b7a8 Add deprecation warnings for 6.1
Change-Id: I8e78f29f338670078488247f233b99125eabb4b6
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-20 14:28:31 +01:00
Kai Koehne ce29ce586f Revert "Allow QWindowsPipe{Reader,Writer} to work with foreign event loops"
This reverts commit ee122077b0.

Reason for revert: This causes QProcess::readAll() to sometimes
return nothing after the process has ended.

Fixes: QTBUG-88624
Change-Id: I34fa27ae7fb38cc7c3a1e8eb2fdae2a5775584c2
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
(cherry picked from commit 23100ee61e33680d20f934dcbc96b57e8da29bf9)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2020-11-20 13:28:31 +00:00
Giuseppe D'Angelo 915be6606e QChar: assert on illegal construction
If the input is out of range for the respective input type,
then fire an assert. Remove a redudant bitwise-and.

The constructors from char have been left alone: we are
documenting that QChar(char) constructs from Latin1 (!), not
ASCII/UTF-8, so all values are valid.

Change-Id: I55e261015d5efa0699c78c25e454f09bb17a913f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-20 03:34:37 +01:00
Andreas Buhr ebaae45ea1 Fix logic error in QString::replace(ch, after, cs)
Coverage analysis showed that an if-branch marked "Q_LIKELY" was never
taken. It turns out the code was incorrect, but behaved correctly.
This patch fixes the logic and adds a unit test.

Pick-to: 5.15
Change-Id: I9b4ba76392b52f07b8e21188496e23f98dba95a9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-19 20:28:27 +01:00
Lars Knoll b4c1747612 Make QMetaTypeInterface constexpr on Windows
This was so far problematic as it gave various link errors. The solution
to that seems to be to make the default constructor of QPairVariantInterfaceImpl
constexpr to get around one set of problems.

The other problem to solve where undefined references to metaobjects. The
reason for that is apparently that QMetaTypeInterface contains a direct
pointer to the meta object, something the linker doesn't like. Adding a
level of indirection by using a function that returns the pointer seems
to solve that problem.

Fixes: QTBUG-88468
Change-Id: I5612ae807ea3b7e49bc40349d8d1fca1be9bd7ee
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-11-19 12:28:45 +01:00
Andreas Buhr 98666c8afc Change QString formatting of negative numbers in non-base-10
For bases other than 10, negative numbers have been converted
to QString by casting them to an unsigned number and
converting that. Thus QString::number(-17, 16) returned
"0xffffffffffffffef", for example.
This patch changes the behavior so that
negative numbers are converted like positive numbers.
Additinally, this patch adds unit tests for QString::number.

[ChangeLog][Important Behavior Changes]
Changed QString::number(integer, base) for negative numbers
and bases other than 10 to return the string corresponding
to the absolute value, prefixed by "-".

Fixes: QTBUG-53706
Change-Id: I0ad3ca3f035d553860b262f5bec17dc81714d8ac
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-19 11:28:44 +00:00