Commit Graph

49419 Commits

Author SHA1 Message Date
Kai Koehne
92e396926e doc/global: Remove references to Qt 5 in comments
Change-Id: I15d91e2f593551879b1b3b5adf58c536abf8467b
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-19 17:27:30 +01:00
Kai Koehne
4153fb8fc3 Update docs about how to configure OpenSSL
Change-Id: Ifd243cd8d3ac3fd52af649fd4507cfd9788e98d3
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-19 17:27:30 +01:00
Assam Boudjelthia
4ef3da04c3 Android: use extraPrefixDirs with qmlimportscanner
This will ensure that qmlimportscanner can use the extraPrefixDirs,
when an extra prefix is provided like the case with Conan builds.

Task-number: QTBUG-88519
Change-Id: Idec3916b043822da094973a7e246a6ee4af14c83
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-11-19 13:28:46 +02:00
Mårten Nordheim
456699da93 QSocks5SocketEngine: Fix out-of-bounds access of QBA
This should've been caught a long time ago, but long story short: it wasn't.
This has been deprecated since 5.14 and is now asserting.

Pick-to: 5.15
Change-Id: Iddee22b1a68e5d1a03006831f795db8ec1c472be
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2020-11-19 12:28:46 +01:00
Edward Welbourne
28e4a8421c Fuzzing: Add a test for QDateTime::fromString
This patch adds a basic fuzzing test for
QDateTime::fromString.

Task-number: QTBUG-87104
Pick-to: 5.15
Change-Id: Icc51386f06f6d4d2a4495734f7fa45de80c6e065
Reviewed-by: Robert Loehning <robert.loehning@qt.io>
2020-11-19 12:28:45 +01:00
Topi Reinio
5126e461a2 Doc: Fix documentation warnings for Qt Test
Task-number: QTBUG-86295
Change-Id: If3c48bee8c898a228128ade18fbdeaa2b8de8b20
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-19 12:28:45 +01:00
Topi Reinio
f978fe26c8 Doc: Qt GUI: Fix custom module header
There were two custom module headers for Qt GUI under different include
paths. Combine them into one.

Change-Id: I8b699d82820bee36a9ce8c384b94d1b99305e177
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-19 13:28:45 +02:00
Topi Reinio
5669351bdf Doc: Fix documentation warnings for Qt GUI
- Remove obsolete dependencies and references.
- Restore previously deleted snippet code referenced in
  richtext.qdoc.
- Add widgets snippets path to exampledirs; some  classes
  were moved from QtWidgets to QtGUI and related \snippet
  commands were broken.
- Mark internal functions under QNativeInterface::Private
  as \internal.

Task-number: QTBUG-86295
Change-Id: I9c165c860c7191dac65972d702698a1745bff77f
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-19 12:28:45 +01:00
Lars Knoll
3c525f2a21 Get rid of the QMatrix4x4(int) constructor
QMatrix4x4(Qt::Uninitialized) does the same thing.

Change-Id: Ie226690f417505f082cb69fdb476e34db2b19c15
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-11-19 12:28:45 +01:00
Lars Knoll
bfceaf7eb3 De-inline qFuzzyCompare for QMatrix4x4 and QVector4D
Change-Id: Ic412d5cefcc1c41e90ee5cf98814469aec3a91f6
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-11-19 12:28:45 +01:00
Giuseppe D'Angelo
5a61c88e1f Clean up QVector2D/3D/4D
In random order:

* Remove code marked for removal in Qt 6.

* Inline as much as possible. This should give us a massive
speed boost in some simple operations where the function call
overhead as much as the cost of body of the function itself
(lengthSquared, dotProduct, etc.).

* Plaster constexpr and noexcept, as much as possible; follow
Lakos' rule.

* Unexport the classes; selectively export only the symbols
still defined out of line.

* Add [[nodiscard]] to any non-trivial mathematical operation
(e.g. calculate the length).

* To avoid circular dependencies, centralize their implementation
in one file. Leave the existing headers for compatibility with
existing #include statements.

* Change all the signatures of the classes' members to take
QVectorND, QPointF, etc. objects by value, not by const ref.
Usage in other classes (e.g. QMatrix4x4) has not been adjusted.

Change-Id: Iaf5a4b5289fcdf704e77656793390b8e772e94a5
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
2020-11-19 12:28:45 +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
Lars Knoll
185d212bf5 Avoid linker errors for the bootstrap lib in debug builds on MSVC
Change-Id: I35406ede2246c9eadba9dcecb1bdb65848b07e42
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-11-19 12:28:44 +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
Andreas Buhr
0732c5917d Prevent time zone lookup from using infinite amounts of memory
The QTzTimeZoneCache created one cache entry for every time zone
which was looked up, even if the code was invalid. This uses some
memory for each time zone code queried and thus allows DOS attacks
if user supplied time zone codes are parsed. This patch changes
the cache to use QCache instead of QHash and thus only store up to
100 zones in the cache.

Change-Id: Ia87fe500b8b9cf23dced5448a33b047702515f19
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-19 12:28:44 +01:00
Mårten Nordheim
0b21c15b11 HTTP2: fix crash from assertion
In general the protocolHandler isn't deleted unless
the channel is being destructed. So instead of reset()ing
the pointer we keep it around.

Also update the http2protocolhandler to mimic the http1
handler a little closer: shutting down the channel in
receiveReply if there's no reply/activeStreams, and not
calling receiveReply at all if there's no activeStreams.

Pick-to: 5.15
Change-Id: I702547f594deb6b0c1384068f7e93e560527e8e2
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-11-19 12:28:44 +01:00
Robert Griebl
2fab1971fe Fix memory corruption in QDBusInterface signal emissions
If more than one signal parameter required conversions (e.g. 2
QVariantMaps), then the auxParameter list would be reallocated on the
second append. This resulted in the reference to the first conversion
(stored in params) to be broken.

Found with valgrind after the QtApplicationManager started crashing
weirdly when built against Qt 6. The same code is in Qt 5, but it
just works fine there: I guess the reallocation strategy in QList is
different there, so we never have to reallocate the list.

Change-Id: I2e0c8906ebc9474c4ec9f53cafc1689003d5c4c5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-19 12:28:44 +01:00
Mårten Nordheim
1c1c1e4559 Fix schannel TLS 1.3 reneg delay
With TLS 1.3 the client goes through renegotiation
when using Schannel. The status returned is OK and
we can immediately continue, so do that.

Change-Id: I831eaae318df9d94b5fb7672db7e407d94f9da56
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-11-19 12:28:44 +01:00
Alexandru Croitor
10a2a1c46e CMake: Rename the qt resource properties to be internal
Use lowercase underscored property names. This ensures they will
continue to work even for INTERFACE libraries if it ever comes to
that.

Change-Id: I5281070f25c1eb9f591c79af8b7fa6169c7c0fb7
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-19 06:29:17 +01:00
Alexandru Croitor
b233b5f31e CMake: Extract resource object file recording into new function
This function will be used by qtdeclarative CMake functions to record
resource object file information for Qml-specific generated resources
(like the ones containing qmldir and qml files).

Task-number: QTBUG-87702
Change-Id: I17c295821775d005dea82d9fbdf83d7ee613f615
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-19 06:29:02 +01:00
Alexandru Croitor
f9dcade5e7 CMake: Fix resource objects story in static prl files
The CMake build of Qt intends to improve the developer experience in
regards to static Qt builds and Qt resource files. Specifically with a
CMake build of Qt, Qt developers don't have to manually call
Q_INIT_RESOURCE anymore.

For details see the following commits
e343affd63
e817ac3d68
4ab5432081

The last commit's implementation is incomplete though.
To ensure successful linking, each target's prl file should contain
not only the resource object files that are assigned to the target,
but also all resource object files of the target's dependencies.

To achieve that, qt_collect_libs will now recursively collect all
resource object files assigned to the QT_RCC_OBJECTS property of each
dependency.

Note this implementation is still incomplete. We do not export rcc
object file information in the CMake Targets files.

That means that when configuring qtdeclarative in a
non-top-level build, the generated Qml prl file will not
contain references to Core's mimetypes resource object file, etc.

So with the current change, only the object files that are part of the
current CMake configuration build are tracked.
Exporting the resource object files locations proves in a format
usable for prl files proves to be difficult (due to CMake not
supporting exporting genexes in random properties) and will have to be
addressed in a separate change.

Amends 4ab5432081

Task-number: QTBUG-88425
Change-Id: I546655bdfdf7aa86a8df9aadfc054fa415130a33
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-19 06:28:53 +01:00
Alexandru Croitor
5533eeeb01 CMake: Refactor parts of qt_internal_walk_libs
Refactor the function in preparation of processing rcc object files.

Introduce 2 new functions to get and set values in the memoization
dictionary used by qt_internal_walk_libs.

Modify qt_internal_add_target_aliases to assign the alias names it
creates as properties on the target.

Extract these aliases when available to assign memoized values not
only for the initial library name, but also for its aliases.

When recursively calling qt_internal_walk_libs, make sure to provide a
unique out_var name based on the outer target name, and not just
lib_libs. Otherwise the out_var values would be polluted from
previous recursion runs.

Make sure to check for -NOTFOUND in if() checks so that we reuse
memoized values that are the empty string.

Change-Id: I8fd8e2b0ae14d0ba8f502bc5a764d6e01095001a
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-11-19 06:28:41 +01:00
Joerg Bornemann
e0d709d8d3 CMake: Fix missing dependencies in *Depends headers
In qt_internal_create_module_depends_file we're checking the target
property INTERFACE_MODULE_HAS_HEADERS. However, this property is not
exported, and in per-repo builds we do not have access to this.

As we cannot export INTERFACE_* properties, we export another one,
called _qt_module_has_headers.

This amends commit 598e873c84.

Fixes: QTBUG-88503
Change-Id: I04b3e24add6e95b577a049c80683b7361ff72f59
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-19 06:28:10 +01:00
Karsten Heimrich
d41eed01a4 Doc: Remove wrong \obsolete doc comments
Change-Id: I541f12fab128493235716fb73d65f4ab0a62bb82
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-19 06:27:48 +01:00
Giuseppe D'Angelo
4d19303654 QChar: use =delete instead of private
Use the idiomatic way to block access to some functions.

Change-Id: I6760dac6ce18910bf30b527b313882e394049349
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-19 04:16:49 +01:00
Volker Hilsheimer
19f9b0d5f5 Disable copying and assigning of QEvent
Polymorphic classes should not be copied.

However, we do rely on event copying in our propagation logic. So, make the
members protected, don't delete them, using a dedicated macro.

This way, QMutable*Event classes can be used to make copies.

Remove some last usage of copying of QInputMethod(Query)Events.

Change-Id: Ia0a8ae4ca9de97dcd7788ca3c6ed930b6460c43a
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-19 03:16:48 +00:00
Giuseppe D'Angelo
c149fd232d QXmlStream: sanitize input before building a QChar
The result of getChar() may be a combination of a token category
and a code unit, like `((LETTER << 16) | c)`. Constructing a
QChar out of it requires masking the category out. This was already
done in a few code paths but missing in others.

Change-Id: I186fb01973a1badd425b3a6811843d8a40b13a6a
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-18 23:24:02 +01:00
Thiago Macieira
be0f1af3f1 CBOR: remove the X11 True and False for good
I don't care if you still need X11 headers. If you do, you know your
workarounds.

Pick-to: 5.15
Fixes: QTBUG-88591
Change-Id: If51855da004b4f3fbf43fffd1648a357eab2d865
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
2020-11-18 14:24:02 -08:00
Lorn Potter
d91edd21d6 wasm: fix showing tooltips
Change-Id: I4c82ccc2bfa1019ef105ccf20982786097c126b9
Fixes: QTBUG-87227
Pick-to: 5.15
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-11-19 05:59:37 +10:00
Wang ChunLin
8455bfee76 Fix QSFPM not emitting dataChanged when source model is set
QSortFilterProxyModel did not emit dataChanged when calling
setSourceModel() after modifying the source model.
QSortFilterProxyModel::setSourceModel and
QSortFilterProxyModelPrivate::_q_sourceReset(), _q_clearMapping
is called to delete the source_index_mapping. They also need to
call create_mapping function to re-create it.

Fixes: QTBUG-87781
Pick-to: 5.15
Change-Id: Idbe34696c9d3a2fbf354b653c870bac61378811d
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-11-18 20:57:48 +01:00
Christophe Giboudeaux
8a6f52bf83 Remove obsolete warnings
The libproxy issue was fixed 4 years ago and the related
Qt and libproxy bug reports were also closed long ago.

Change-Id: I5af18f1eaaffb8d33556ab94ca1759959a2c272d
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-11-18 18:21:23 +01:00
Alexander Volkov
86b8c5c3f3 xcb: Avoid use-after-free in QXcbConnection::initializeScreens()
Extend the scope of the resources variable to avoid its
destruction while it's still in use.

Fixes: QTBUG-88512
Pick-to: 5.15 5.12
Change-Id: I3298aabc871ff455bd1203ec276e7600d3e151ef
Reviewed-by: Liang Qi <liang.qi@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
2020-11-18 13:41:03 +00:00
David Redondo
36b1d37cef Ensure that QMenu is polished before setting the screen in popup()
Some styles alter the widget that will influence the underlying platform
window. An example is when a style would want to draw the menu with some
transparency and sets the Qt::WA_TranslucentBackground attribute. This
needs to happen before the platform window is created. However calling
QWidgetPrivate::setScreen will end up creating the window and the
surface format will be fixed at this point.

Pick-to: 5.15
Change-Id: I707cf1de5c1614382cffbea1aae8cdb01f7de44a
Reviewed-by: Nate Graham
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-11-18 12:03:27 +01:00
Giuseppe D'Angelo
4e7013033f QChar: get rid of some redundant comments
We have a proper tag now.

Change-Id: Ia5279a82e078d27aa5e09a427f36cf355d959e1f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-18 09:38:20 +01:00
Giuseppe D'Angelo
29942dcbb1 Centralize the wchar_t == char16_t check on Windows
Don't push it onto every TU that includes QChar (... approx.
everything that uses Qt).

Change-Id: I4a07ce9e38a347b45315db93b0c5b90c20bacdbc
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-18 09:38:09 +01:00
Florian Bruhin
befa3729db Fix x-height name in stylesheet docs
The *height* of an x being called "ex width" makes no sense.

Also, it seems like this measurement is typically called "x-height"
rather than "ex height", see e.g. https://en.wikipedia.org/wiki/X-height

Pick-to: 5.15 5.12
Change-Id: Id8e2c1aa9be1a4a60e667a076486777d34f1e76d
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-17 23:00:43 +01:00
Zhang Yu
4df5f93018 Fix QGraphicsItem crash if click right button of mouse
In this case, the 'parent' is QGraphicsTextItem which isn't a object
inheriting from QWidget. Converting QGraphicsTextItem to QWidget
by static_cast and using it as QWidget leads to crash.

Fixes: QTBUG-88309
Pick-to: 5.15
Change-Id: I3c583f43125eb36841848434d1fa9a135b0e9f57
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-11-18 05:56:27 +08:00
Allan Sandfeld Jensen
34304e3100 Get rid of Q_COMPILER_CONSTEXPR checks
Is required now.

Change-Id: I62e95929d1649ea1390392230b619bd56d2a0349
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-17 21:28:11 +01:00
Alex Trotsenko
1e9dc3ec2f CMake: fix QLocalSocket benchmark to use new qt_internal_ API
Amends ee122077b.

Change-Id: I9b750eb88ac9c83da26da4e5921cb147716c5eb6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
2020-11-17 21:34:04 +02:00
Jerome Pasion
d4b3989818 Update landing pages and module pages in qtbase
-Qt SQL, Qt D-BUS, Qt GUI, Qt OpenGL, Qt Widgets,
 Qt Test, Qt Concurrent, Qt XML, Qt Network, Qt Core
-language edits for consistency, add links

Task-number: QTBUG-87155
Change-Id: Ic61350c9fa15090c802a42d8e9116219591eba73
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-11-17 20:16:12 +01:00
Timur Pocheptsov
4f6c5d83d0 Network self-test: make it work with docker/containers
Fixes: QTBUG-87740
Pick-to: 5.15
Change-Id: Idfe73708784774188afd40048f81406aa720a554
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-17 19:56:06 +01:00
Volker Hilsheimer
781ae0b9f1 Document that ANGLE is gone from QtGui
Text taken out of the source-breaks.qdoc file, which will be
removed.

Task-number: QTBUG-88152
Change-Id: Ibe5fe5328151358873c26d8f1eacc30027c2ced9
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2020-11-17 19:55:05 +01:00
Edward Welbourne
26e41291bb Test QTimer's isSingleShot() and timerType()
Previously neglected in testing.

Task-number: QTBUG-88183
Change-Id: Iacfca6f8c590af6dccb126cf3e43387ed50dbf06
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-17 19:55:05 +01:00
Edward Welbourne
06c898d7a9 Add some tests for various qmath.h functions
Previously untested.

Task-number: QTBUG-88183
Change-Id: I9e94308471651e447f35a21329e43a363fb23961
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-17 19:55:04 +01:00
Edward Welbourne
c0829d6131 Improve qFloatDistance() test coverage
Four code-paths that weren't tested are simply those with the
parameters swapped from code-paths we did test.  In any case, the
float-distance between values should be symmetric, so test that.

Task-number: QTBUG-88183
Change-Id: I2060eb77b1abada5b0fd5f4557dbb1761c5cfd02
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-11-17 19:55:04 +01:00
Edward Welbourne
17701a95f8 QLocale: simplify currency display name lookup
We were extracting several candidate display names from CLDR for each
currency, joining them with semicolons, storing in a table, then using
only the first entry from the list - where we should probably have
used the first non-empty entry in any case.

So instead extract the first non-empty candidate name from CLDR and
store that simply, saving the need for semicolon-joining or parsing
out the first entry from the thus-joined list. This significantly
reduces the size of the currency name data table.

Change-Id: I201d0528348d5fcb9eceb5df86211b9c77de3485
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-17 19:55:04 +01:00
Edward Welbourne
7c28fa7717 Inline QLocale's QString overloads via QStringView
Make declarations use same parameter name as implementation and
documentation, in the process. Fixed indent of some doc comments.

Change-Id: Ibaa3a5f6316a16c5b65f6ea6e0034f4eb2864b98
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-17 19:55:04 +01:00
Edward Welbourne
e71aafcb65 String-view-ify qt_splitLocaleName() and simplify its callers
Two of its callers didn't even care about the fragments it was
returning, one only cared about two of them. The parsing could be more
straightforward and less verbose. Parsing into QStringView saves the
need to allocate copies of the substrings parsed.  Cleaned up around
the code that called it.

Change-Id: Ie65d2b1b3eb891c20bc82275d7a0da00c30d7b8d
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-17 19:55:04 +01:00
Edward Welbourne
1721b80e10 Export QLocaleId::fromName() so qttools can use it
This shall replace QLocalePrivate::getLangAndCountry()'s use by qttools.

Change-Id: Ib686a3769bd38c477d7fbad50cf494ee8a0b1c00
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
2020-11-17 19:55:04 +01:00
Volker Hilsheimer
63f03f5e2d Make QPageRanges::detach public, add data stream operators
As per QUIP-19 discussion, value types should have streaming operators,
and detach should be public.

detach() is still documented as \internal, like other public detach
methods in value types.

Change-Id: I30451909ad5226088fb05206f83983dda5b0c6b5
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-11-17 19:55:04 +01:00