Commit Graph

34823 Commits (eb98bed4e76bb0fa6bad8474f2f370334cb70f6c)

Author SHA1 Message Date
Giuseppe D'Angelo 75cd9c13c2 QRegularExpression: code tidies
Given QList-is-QVector, remove an historical piece of code.

Change-Id: I7a8876be8ade6dbaa1822d773b092ddb3c4182d4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-26 01:09:14 +02:00
Giuseppe D'Angelo 049d8892ea QRegularExpression: do not assume QStringViews are NUL terminated
The convenience API used to look up the index of a named capturing
group expects NUL terminated strings. Therefore, we can't just
use it together with QStringViews, which may be not. Use the
non-convenience API instead.

Pick-to: 5.15
Change-Id: I25ca14de49b13ee1764525f8b19f2550c30c1afa
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-25 23:09:09 +00:00
Lars Knoll acbf9a858b Cleanup QTypeInfo
Remove QTypeInfo::isStatic, as that's not used anymore in Qt 6.
Also remove sizeOf, it's unused, and we have QMetaType for that if
required.
Remove all typeinfo declaractions for trivial types, as the default
template covers them correctly nowadays.

Finally set up a better default for isPointer, and do some smaller
cleanups all over the place.

Change-Id: I6758ed37dfc701feaaf0ff105cc95e32da9f9c33
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-26 01:03:22 +02:00
Kai Koehne db21bad936 Port headersclean check to CMake
Configure Qt with -DQT_FEATURE_headersclean=ON to enable the
check. There will be separate target for each module include
(e.g. QtCore_header_check), but the check will also be done
when the module is built for the first time.

There are notable differences to the qmake version:
- the build does not pick up anymore default defines or flags from
  the module, or Qt. Instead options like -fPIC they have to be listed
  explicitly. Also for this reason, we have to skip the vulkan-related
  headers from the check, since vulkan/vulkan.h is not necessarily
  in the compiler's default search path.
- some checks for nowadays unsupported compiler versions are
  removed.
- -Wdouble-promotion -Wshorten-64-to-32 is not added for clang
  builds; the qmake code path did never enforce that on CI
  machines (it was non-Apple clang only), and the check currently
  fails on these configurations.

Fixes: QTBUG-82615
Change-Id: I1cd303677b1472116910b6c27748f96436feb35e
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-08-25 21:13:08 +02:00
Assam Boudjelthia 24af3ebef3 Android: split arguments passed to the main app
Keep the same behavior as desktop platforms with
QApplication::arguments() should return a string list of args
not a string of args together.

Task-number: QTCREATORBUG-23712
Change-Id: I1874655427f5c902ca81a3fcf6183d0eeccbfef7
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2020-08-25 18:59:10 +03:00
Ulf Hermann 561e38f799 Port QSet to qsizetype
Change-Id: I70ad8fb6908ce3837a723e9a095bee5c166739e4
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-25 17:59:10 +02:00
Volker Hilsheimer 869ab57c99 Document the QAbstractFileIconProvider::IconType enum
Follow language from the icon naming specification on freedesktop.org at

https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html

Change-Id: I740842a39a9cd56152a799698a648ad6a6e274e5
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
2020-08-25 17:59:10 +02:00
Volker Hilsheimer b77a3f47c9 Rename confusingly named QFont/QPalette::resolve overloads
Having three methods with the same name doing different things is
unnecessarily confusing, so follow the standard naming convention in
Qt and call the getter of the resolve mask resolveMask, and the setter
setResolveMask. These methods were all documented as internal.

The publicly documented resolve() method that merges two fonts and
palettes based on the respective masks remains as it is, even though
'merge' would perhaps be a better name.

Change-Id: If90b1ad800834baccd1dbc38fc6b861540d6df6e
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-25 17:59:10 +02:00
Robert Loehning c0d0949448 QLineF: Don't try calculating a unit vector when length is null
It's undefined and causes a division by zero.

Fixes: oss-fuzz-24561
Pick-to: 5.12 5.15
Change-Id: Idebaba4b286e3ab0ecb74825d203244958ce6aec
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-25 17:59:10 +02:00
Nie Cheng e1d7df5ce9 Code style fix
Change-Id: I0174293421d866f3b124a9ff4344052749e8a1b9
Reviewed-by: Nie Cheng <niecheng@uniontech.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
2020-08-25 23:59:10 +08:00
Assam Boudjelthia 862ac16ab1 Android: add the option to set package signing information from env vars
Use the following env vars to help conceal private signing information:
- QT_ANDROID_KEYSTORE_PATH
- QT_ANDROID_KEYSTORE_ALIAS
- QT_ANDROID_KEYSTORE_STORE_PASS
- QT_ANDROID_KEYSTORE_KEY_PASS

[ChangeLog][Platform Specific Changes][Android] Added the option to
conceal package
signing information using environment variables.

Task-number: QTBUG-84922
Change-Id: I1fac51ed9e88ef42c761bc916ba1c3bf439806e8
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2020-08-25 10:07:16 +03:00
Marcel Krems fcc25b11bb QPrinterInfo: Remove deprecated methods
Change-Id: I5089bc23308a4348dc21122dfa000d5ca6e3938d
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-25 06:48:28 +02:00
Marcel Krems 311d7a609c QTextLayout: Remove deprecated methods
Change-Id: I7991428fb3526e48c0ceda0dcc46ea8a0918cb95
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2020-08-25 06:48:03 +02:00
Shawn Rutledge c7f7279969 Introduce QEvent::isPointerEvent()
This makes high-level event dispatching easier: for example in Qt Quick,
all pointer events should eventually be delivered to items in a similar way.

Implemented in a similar way as d1111632e2.

Change-Id: I2f0c4914bab228162f3b932dda8a88051ec2a4d7
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-25 06:34:01 +02:00
Volker Hilsheimer fb9ec8ad44 Move QFileSystemModel into QtGui
This requires a QAbstractFileIconProvider in QtGui, as the standard
QFileIconProvider depends on QStyle, and cannot be moved out of
QtWidgets.

QAbstractFileIconProvider returns strings for file types, but returns
no icons yet. Support for a default icon set might be added in a
follow-up commit.

Change-Id: Ib9d095cd612fdcf04db62f2e40709fcffe3dc2b7
Fixes: QTBUG-66177
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-25 06:33:44 +02:00
Volker Hilsheimer e24bbc4871 Fix warning after QMetaType changes
Change-Id: Id0a8ac5cc516732e6bc03c4a7d153486003d0881
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-25 06:33:33 +02:00
Giuseppe D'Angelo 33218bac1b QStringList: inherit the constructors from QList
Otherwise it would be missing some, e.g. QStringList(qsizetype).

Change-Id: I5214672e62c98514b37b09d283e6035c799eda99
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-25 01:38:51 +02:00
Lorn Potter aed0f34786 wasm: deregister event handlers
Pick-to: 5.15
Change-Id: I453b87497c7ed93b92bf9f4c59ab1c8bd1d7712e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
2020-08-25 06:50:55 +10:00
BogDan Vatra 86e90aa346 Be verbose
make apk takes a LOT of time, showing that it's not hanged it's useful.

Change-Id: I4fb11e0f535cf2311d71dff3710135b465ecc06b
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-08-24 21:10:25 +03:00
Karsten Heimrich a735038376 Move QStateMachine from QtCore to QtScxml
Task-number: QTBUG-80316
Change-Id: I2ee74110fd55e94d86321d3b3dc5bb8297424ed4
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-24 20:10:25 +02:00
Mårten Nordheim 43f01ec2e5 QByteDataBuffer: add readPointer functionality using QByteArrayView
While it could be done before it's nice to not have a custom "local"
struct or the size in an out-parameter.

Change-Id: Ie910f7060b1dadf037312d45e922f8e2deafe3ec
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 17:44:08 +02:00
Mårten Nordheim 0011a45102 QAbstractSocket: Resolve remaining Qt6 TODOs
Change-Id: Id257f0721c1cd5fcbafa9297bae0251a2d68e366
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-08-24 17:43:56 +02:00
Mårten Nordheim 081207dc37 Make QNetworkAccessManager::supportedSchemes virtual
Change-Id: I6807e2133049551bbaa4c6f312b6a00ea752f81b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-08-24 17:43:50 +02:00
Mårten Nordheim 4573d29f64 QHostInfo: address a Qt 6 todo
Merged the two functions, required adding a friend declaration

Change-Id: I86265da19e4b5f53d9e2dc54de3e252f0364225b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-24 17:43:46 +02:00
Mårten Nordheim 467d215b32 Disable cipherstring-setting test for schannel
And put a note about it in the documentation

Change-Id: I29126e4a80f83c256190e03b8fe01f3c869fd46d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-08-24 17:43:39 +02:00
Mårten Nordheim 62d85389a4 http: When falling back to http/1 use the socket's ssl config
And not the ssl configuration we have on the reply since it's missing
e.g. the newly received session ticket.

Change-Id: Idfeb09012a847605a76d1fe4fb881c663d019b4a
Reviewed-by: Peter Hartmann <peter@edelhirsch.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-08-24 17:43:36 +02:00
Mårten Nordheim a8ad1451bd QNetworkReply(http): Ignore ssl errors in all reserved channels
and not just the active one(s). When starting the connection with
HTTP/2 and calling QNetworkReply::ignoreSslErrors() it would previously
only ignore the errors in the single active channel that was used, but
if we then fall back to HTTP/1.1 then we'll use the 5 other channels as
well, and those would then fail due to the ignored ssl errors.

Change-Id: I7aeb5b59897dd3a53579f0d38bd255bc2d97c2bb
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2020-08-24 17:43:34 +02:00
BogDan Vatra 45b56d86bb Fix running qml tests on Android
First and foremost the condition was wrong ...
In order to help running qml test cases on Android without any android
specific hack on
user's .pro files we copy the entire project folder to assets. I copy the
entire folder
and not only the tst_*.qml files because it might contain data which is
needed by the tests to run.

Change-Id: I06323d9d52904317410dd2f440de65a0766a48b5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
2020-08-24 14:50:56 +03:00
Alex Trotsenko 556a7e7318 QIODevicePrivate: rearrange class members
As this class is a subject of the library hook data, there must be a
solid understanding of the member's alignment and padding across
different architectures. By reordering the layout, this patch provides
a clearer way of adding new members to the class.

Bump the TypeInformationVersion field in qtHookData, to notify the
Qt Creator developers that the offset of QFilePrivate::fileName was
changed and dumpers should be adapted.

Change-Id: Ied8b69bdeb9da50ff05aba2107bc75509674b18e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 14:50:56 +03:00
Andre Hartmann 6bd157c0f5 QLocale: Fix double conversion snippet
* QString("1234,56").toDouble(&ok); always operates
  in the "C" locale and therefore ok is always false
* Explicitly state that the return value is zero
  when ok is set to false
* Made snippet compileable by giving str a type

Pick-to: 5.15
Change-Id: I403eb39ca78a5f9ceb92ccd8ac3539581294796c
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
2020-08-24 13:50:56 +02:00
Marcel Krems 41a716ebbf QSqlite: Don't crash after binding too many placeholders
When you bind more values than the query has placeholders,
indexes will be empty which causes an out-of-bounds access in indexes.first.

We can't check the parameter count because of multiple placeholders with the same name,
so we check if the name is null.

Tested with SQLite and PostgreSQL

Pick-to: 5.15
Change-Id: Id5d4bd15d7ed16603f47b87d6e0bf811a20157d8
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
2020-08-24 13:50:55 +02:00
Giuseppe D'Angelo fce9ec0543 Widgets: make indexOf take const QWidget *
As it's the right thing to do to preserve const correctness.

Fixes: QTBUG-85833
Change-Id: I0d45442c5e2b997998bba8dc894fee75da3e8e8c
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
2020-08-24 13:50:55 +02:00
Shawn Rutledge 38806273e5 Remove QEventPoint::event() in favor of device()
event()->device() was the most common use case anyway.

The idea that the "parent" of a QEventPoint is the QPointerEvent
interferes with the ability to copy and move event objects: the parent
pointers are dangling unless we use the QPointerEvent subclass
destructors to set the points' parents to null.  Since there is no move
constructor, even returning a QEventPoint from a function by value
results in destroying the temporary instance and copying it to the
caller's space.  So the parent pointer is often useless, unless we do
even more work to maintain it when the event moves.

If we optimize to avoid copying QEventPoints too much (and perhaps
enable exposing _mutable_ points to QML) by storing reusable instances in
QPointingDevice (which is the current plan), then the actual parent will
no longer be the event.  Events are usually stack-allocated, thus
temporary and intended to be movable.

Change-Id: I24b648dcc046fc79d2401c781f1fda6cb00f47b0
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-24 13:50:55 +02:00
Mitch Curtis 0c52e600b3 Doc: provide a code example of QDirIterator's nameFilters parameter
Change-Id: I56f9251f17bab0f835979a5feadec1fa896c9d69
Pick-to: 5.15
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
2020-08-24 13:50:55 +02:00
Ulf Hermann 7127bf1d04 Rename QSequentialIterable::ref
Follow the naming convention and remove workarounds in ctors.

Change-Id: Ic7f9de074edab7db369803612a2a2a4ea3deaf57
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-24 09:37:42 +02:00
Ulf Hermann 3fdc08b422 Remove private QSequentialIterable begin/end methods
Those are only used by the only friend of the class. As that one can
already poke into QSequentialIteralble's privates, there is no point
in exposing further methods in the public API.

Change-Id: I368e7bcfc43c31f38a42a41a339ff3135d79417c
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-24 09:37:36 +02:00
Eskil Abrahamsen Blomfeldt f70b955ce8 Remove the QPF2 font engine
The QPF2 font engine has been kept around for compatibility
reasons in Qt 5.x, and it is time for it to retire for now. If
we want something like this in the future, we can revive it with
hardware acceleration / Qt Quick as one of the primary use cases,
but for now, it seems that Freetype and our existing caching is
sufficient also for low-end use cases.

[ChangeLog][QtGui][Text] Removed support for the legacy QPF2 font
format as well as the makeqpf tool used to generate those files.

Change-Id: Id43039c92fe5bd95b628cd769e045c029f39a350
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-24 07:08:45 +02:00
Lars Knoll 75097c7782 Make the canConvertMetaObject method safe
This triggered a crash in QtQml, where an manually created
metattype interface set the PointerToQObject flag to true while
not providing a metaobject.

Change-Id: I206fb9655058a1e8a2d04e44186b05db33358338
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-24 00:19:48 +02:00
Lars Knoll 02dfec9209 Remove QVariant(QDataStream) constructor
The constructor wasn't constructing a QVariant holding a
QDataStream, bug loading the variant from the datastream.

This is opposed to how QDataStream works in all other places,
and also not in line with all other constructors for QVariant.

[ChangeLog][QtCore][QVariant] Removed the QVariant(QDataStream)
constructor. Use QVariant().load(datastream) instead.

Change-Id: I6ac54e12166b9383c09c3940eef2516f896fd359
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:19:42 +02:00
Lars Knoll 0161f00e50 Use QMetaType in QMetaCallEvent
And don't use int based type mapping anymore.

Change-Id: I456e76d1933ef646a7bd39ce565886b89e938a44
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:19:36 +02:00
Lars Knoll 700e6341e5 Pass QMetaType by value
Now that QMetaType is not refcounted anymore, we can and should
pass it by value.

Change-Id: I848db65070713762f548ca949097c27783aacad4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:19:30 +02:00
Lars Knoll 369cb1470d Clean up int based convert() API
Pass QMetaType instances instead.

Change-Id: I07366cea566fdebf5bb793aa8087f8109216ec0c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:19:24 +02:00
Lars Knoll e7e7540aec Deprecate int based convert/canConvert
Better to provide the correct meta type to convert to.

Change-Id: I8e0d46e4ba482186201c157e302c03874bd38e7b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:19:18 +02:00
Lars Knoll 92a31781bb Return a qsizetype from QMetaType::sizeOf()/alignOf()
Object sizes in Qt 6 should use qsizetype.

Change-Id: I76ceb5faf361d7f6be88d88c772358ad6d701d54
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:19:11 +02:00
Lars Knoll 1697fbdf05 Deprecate the static int based API in QMetaType
And remove one of the type id to name mapping that still
existed in QMetaType. QMetaTypeInterface can provide that,
so there's no need to have a second copy of the data.

qMetaTypeTypeInternal() can still map all the names of all
builtin types to ids. That functionality is for now still
required by moc and can't be removed yet.

Change-Id: Ib4f8e9c71e1e7d99d52da9e44477c9a1f1805e57
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-24 00:19:05 +02:00
Lars Knoll 92b3767632 Remove refcounting of QMetaTypeInterface
It's only used for dynamic types in DBUS and QML, where we control
things good enough to be able to handle the lifetime of those
interfaces there.

Change-Id: Ia7f8970d17a85b195db85fcdc2d8f1febd8753f4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:18:58 +02:00
Lars Knoll d0ccb3aaf9 Cleanup the qRegisterMetaType function
Remove the arguments that are nowadays unused.

Change-Id: I97ed983b158aba57653f35e7e2f91f5c79dace8c
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-24 00:18:52 +02:00
Lars Knoll 9c501b0670 Remove an unused enum value and document another one
Change-Id: If9fed4f20242d789c1251b8798d7378d2d6911a6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:18:45 +02:00
Lars Knoll 13c1e3f434 Cleanup qvariant_cast<>
Move the last functionality it had (casting between QObject
derived types) over to QMetaType. Now qvariant_cast<> is
nothing but a wrapper around QMetaType::convert().

Change-Id: Iab02b6b97c141d64052823646e18227d1eb403dd
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:18:37 +02:00
Lars Knoll c7ce1bc05c Move conversions to and from *Iterables into QMetaType
Those were not yet supported by QMetaType.

Change-Id: I9f85476049f200e35939ac58ef7e8b4e7cbe0b77
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-24 00:18:31 +02:00
Lars Knoll 9d36032370 Implement QMetaType::canConvert() and use it in QVariant
Use the fact that we return the conversion function as a lambda
to find out reliably whether a conversion between two types
can be done.

This requires some minor adjustments to our tests:

* Nothing can convert to an unknown type and vice versa
* Adjust results to the fact that we don't convert from char
  to QString anymore (where the old method was incorrect)
* QStringList->QString requires some adjustments, as we only
  convert if the string list has exactly one element. For now
  we return true in canConvert(), but the conversion behavior
  in this case is something we should rethink, as it is very
  surprising.

Change-Id: I3f5f87ee9cb99d690f5a7d13b13d6a6313d8038e
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-24 00:18:24 +02:00
Lars Knoll 2d3b31171d Get rid of the old QVariant conversion codepath
All conversions do now happen through QMetaType::convert().

Change-Id: I70f7a883262087768acccf8361d34c0490ff2b43
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:18:17 +02:00
Lars Knoll 53047c3623 Move QJsonValue and QCborValue conversions to QMetaType
Change-Id: Id4796e0913c0c5b0abce0ea27bed0f7b41bc0cca
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:18:10 +02:00
Lars Knoll b69a1d8eed Remove some unused code
Change-Id: I184c0e00562b9cc61e628457629633f8157333ad
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:18:04 +02:00
Lars Knoll 2b83244402 Finish porting number conversions to QMetaType
Change-Id: I2861c6fb5f8192a627ffb41f1455c703849cf945
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:57 +02:00
Lars Knoll fefb1c1362 Move enum conversions over into QMetaType
Take the opportunity to properly handle the underlying type
(size and signed vs unsigned).

Change-Id: I0cb8cf40acac6de03c24ed3fe570db68268952c8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:50 +02:00
Lars Knoll f21a7116e9 Implement integral conversions in QMetaType
Change-Id: Ib2617d37b80bb45818dcd093744cfe5a37a74606
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:40 +02:00
Lars Knoll 4ccf76ff53 Start porting conversions over from QVariant to QMetaType
This will ensure full symmetry in what QVariant and
QMetaType support. With this done, QVariant will become
simply a container that can hold any QMetaType with fully
symmetric functionality between both.

Change-Id: I796d4368a2bc0f08cf4f70f4465ed6a0e07bdd76
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-24 00:17:33 +02:00
Lars Knoll e45fa5aaf0 Remove some dead code
Change-Id: Ic1cd0a70b2412c0e4bfcc06bf5609f9d4590ae66
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:26 +02:00
Lars Knoll 1d7a9fc9b4 Add a metatype helper class for Qt Core
This helps get better symmetry with the other modules,
and to unify the code paths for both conversion and
retrieving the interface for static types.

Change-Id: Icbd20de2563f36e3de20d826323acd057734abfb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:19 +02:00
Lars Knoll f44d2ea1cc Always try to conversions through QMetaType
Always ask QMetaType to convert first before trying the builtin
code in QVariant. That way we can migrate conversions piece by
piece to QMetaType.

Change-Id: I4fd1bad3ef045d37f84f68e748a6357e0ee0c16c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:12 +02:00
Lars Knoll 560a419281 Use QVariant::Private::typeId()
Avoid some atomic operations by using this instead
of type().id().

Change-Id: Ic664794908d3a9fc3686f954b582740b73c052c6
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-24 00:17:06 +02:00
Lars Knoll 524edc7363 Clean up QVariant::Private::Data
Remove all the internal members of the union. Instead replace
it with raw storage (uchar[]) aligned to max_align_t.

Place all accesses to the internal members with get<> methods
for consistency.

Change-Id: Icebf46b90c9375aa6ea0b5913b2132608e8c223d
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-24 00:17:05 +02:00
Lars Knoll bfbac6be75 Get rid of the private v_cast<>() method
Replace it with QVariant::Private::get<>().

Change-Id: I801742300d9b15f748bb91fcd6cfa176d2057271
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-24 00:17:05 +02:00
Lars Knoll d1c3f81126 Add QVariant::Private::storage(), get() and typeId()
Adds convenient access to the data from the Private pointer.
data() determines the storage location at run time, get()
at compile time. internalStorage() can be used if we're accessing
one of multiple types, but know that the type is stored internally.

typeId() is an optimization as it allows retrieving the type id
of the metatype without atomic refcounting operations (which
type().id() would be doing).

Change-Id: I39a508c530a1588053248607c8932e501fd474dc
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
2020-08-24 00:17:05 +02:00
Lars Knoll 73fd7f2efc Use QMetaTypeModuleHelper as the interface to do type conversions
Move the type conversions from QVariant::Helper to QMetaType. Only do
this for Qt Gui in a first step.

This makes it possible to completely remove the Handler struct in
QVariant, and now allows QMetaType to also convert Gui types.

Moving the conversion of Core types into QMetaType will require
further work.

Change-Id: I061f789deca1b595d92bb29227eb54b8e71a3ee3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:05 +02:00
Lars Knoll 0e4ae4fbf8 Clean up the converter function handling
Use std::function to register the converter functions
instead of our own handrolled interface.

Change-Id: Ifc1d1d383d21ee8d4239dbc3970c1f31bf0f4037
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:05 +02:00
Lars Knoll 7f009b648f Get rid of the additional bool * parameter to the internal convert method
That parameter is duplicating the return value, get rid of it.

Change-Id: I8d6ecee8aca90aecaf08e6d0072d83e9a08ce3d6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:04 +02:00
Lars Knoll 47b5821c4e Get rid of the unused meta type switcher
Change-Id: I8771feb68227bf69643b66314284c645cccdec6f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:04 +02:00
Lars Knoll 68c4449d2f Cleanup v_construct and friends
Streamline code using if constexpr and remove some unused code paths.

Change-Id: I602acffab4b3e53fab9e2433856f6b7e8210cc60
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:04 +02:00
Lars Knoll fb0968049f Inline QVariant::constData()
This should speed up quite some of the QVariant operations

Change-Id: Ifae2df39e47e2e1ef1d9a947802bdd17fc66aa66
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:04 +02:00
Lars Knoll ab867673f0 Cleanup unused code
Change-Id: I27821ca7e63fccd5353c48eebfde19756846dd2e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:04 +02:00
Lars Knoll 6754198c33 Cleanup QVariant::PrivateShared
Remove the additional indirection through ptr and replace
it with an offset calculation. Get rid of PrivateSharedEx
that was handling certain types differently.

This also fixes the support for overaligned types, by
using the alignment field from QMetaType to determine
the alignment requirements.

Change-Id: Icc6a78eb57f664c7747450578fe58dfee8f2863b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:04 +02:00
Lars Knoll 76e8e8e9c8 Always use the variants internal space if possible
There's no point in storing small types with an external
refcount, even if they aren't movable. Simply copying
the type should be faster in pretty much all cases, while
this uses less memory.

Change-Id: I127474f8e3c5fa042f530684f9d5bfccbba134ca
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:04 +02:00
Lars Knoll cb17157b27 Simplify the QVariant copy constructor and assignment operator
Change-Id: Id517dfc220adf06c5852745c92cfbe5e9c2e94a3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:04 +02:00
Lars Knoll 0daa9dbfc4 Generate less code when creating QMetaTypeInterfaces
There is no need to generate wrapper functions for equals,
lessThan or debugStream for pointer types, as those can
easily be handled by a few lines of code in QMetaType itself.

Change-Id: If79b3bc3a629249c1d17c9e592202f08b59f80ef
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:04 +02:00
Lars Knoll bd64f9397a Refactor Q*Iterable
Refactor the methods retrieving data in Q*Iterable so
that we don't return pointers with unclear ownership. Instead,
copy the data into a out pointer provided by the caller.

This also means there is no need for the metatype flags
anymore and we can remove those.

Change-Id: I517de23a8ccfd608585ca00403aca0df2955f14b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-24 00:17:04 +02:00
Lars Knoll 49f2253be3 Cleanups in the Iterable classes
Store a QMetaType, not a meta type id in the classes.

Change-Id: If27a60512a46fa029cc914d65b8cad7f89d7f3b0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:04 +02:00
Lars Knoll d78df77485 Clean up a custom void_t implementation
Change-Id: I30fcaef2a242cc2daee82d37debdb97e59a9a8f2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:04 +02:00
Lars Knoll 6d95ffe996 Cleanups in QSequentialIterable
Remove the old revision of the interface, this is not
required with Qt 6 anymore, as everything is being
recompiled anyway.

Change-Id: I66070c4dc6b5e2a6d22f5a9ebea7688ed38333fe
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-08-24 00:17:04 +02:00
Lars Knoll 804cb94da9 Small doc fix
Change-Id: I349f68c4b86558aba5db4e8fbe5d876447baaeb3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
2020-08-24 00:17:03 +02:00
Lars Knoll fc4a08cee7 Remove some dead code
This code is now unused, as streaming operators are
registered automatically.

Change-Id: I0e48944c33a92cf1f2f158fb2dc0ca49256d7938
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-24 00:17:03 +02:00
Lars Knoll ef6c5f29ab Get rid of the custom debug stream handling in QVariant
Use the builtin support in QMetaType instead.

Change-Id: Ifc0e88719a384aa7fb525652bada22b6f7ee1c45
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
2020-08-24 00:17:03 +02:00
Lars Knoll ed8acbeb7c Automatically register data/debug stream operations in QMetaType
And remove the old manual registration code for those operators.

Add some special handling for long/ulong, as these types could be
streamed as a QVariant so far, but are not directly streamable
through QDataStream.

[ChangeLog][QtCore][QMetaType] The QMetaType::registerStreamOperators()
and QMetaType::registerDebugStreamOperator() methods have been
removed. The streaming operators for a type are now automatically
registered together with the type registration.  This implies that the
operators should be visible wherever the type is visible and being used.

[ChangeLog][Behavior Incompatible Changes] Because the QDataStream and
QDebug serialization operators are automatically registered with
QMetaType, the declarations of those functions must be present at any
point where the type is used with QMetaType and QVariant.

Change-Id: I4a0732651b20319af4a8397ff90b848ca4580d99
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
2020-08-24 00:17:03 +02:00
Giuseppe D'Angelo 5282545589 QWidget: drop an unncessary const_cast
Thanks to the newly introduced indexOf overload.

Change-Id: I00377591dba4104f1dfd34816cc74efcf5220a4d
Reviewed-by: David Faure <david.faure@kdab.com>
2020-08-24 00:17:03 +02:00
Sze Howe Koh be44866626 QLineF::intersects(): Make the output parameter optional
Change-Id: I1ccd290a81b38db2e86958fa8ce188878484dcc4
Reviewed-by: Konstantin Shegunov <kshegunov@gmail.com>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
2020-08-23 23:14:12 +08:00
Kai Koehne 4f12bae850 Fix include in public header
We shouldn't rely on include path containing also /QtCore

Task-number: QTBUG-82615
Change-Id: I0f98f6097865cc5aa2c2fc9a0fabf2c4513b7afe
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
2020-08-23 14:19:06 +02:00
David Faure 1e88b03d1a Merge the two QUrl::fromUserInput overloads
Change-Id: I4d4cd0961c30e898118c0a5f74bcd3234173384a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-23 11:29:14 +02:00
Giuseppe D'Angelo 6c19d1c5ea Leave a comment about a usage of a restricted bool trick
I'm pretty sure we want to keep supporting statements like

  bool ok = connect(~~~);

that is, statements that do use copy initialization and not
direct initialization. As such, QMetaObject::Connection has
to keep using the restricted bool trick and cannot be ported
over to explicit operator bool.

Change-Id: I07a38f7c134686e67b5984aa93fe5cf3201561d7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-23 11:18:08 +02:00
Giuseppe D'Angelo 4527b2d165 QAutoPointer: port to explicit operator bool
Change-Id: Ic8ec02d7225e884bfd98d93398502a8b8b825da8
Reviewed-by: David Faure <david.faure@kdab.com>
2020-08-23 11:17:43 +02:00
Joerg Bornemann f9efe046a7 Remove the deprecated -qpa-platform-guard argument
Change-Id: I0bde5552c8801660e2be57531d64b6d2b499bb32
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2020-08-23 11:05:14 +02:00
Alexandru Croitor 5138a970f3 CMake: Workaround building DBus 'car' example with qmake
While trying to implement instructions for building examples with
qmake in the CI, an issue has surfaced.

When building examples with CMake with -DBUILD_EXAMPLES=ON in the CI,
the examples are built in-source, aka source dir == build dir.
This means that the header files generated by qdbusxml2cpp will be
placed in the qtbase source dir.

The instructions that try to build examples with qmake build the
examples in a separate build dir after building the examples with CMake.

Unfortunately the qtbase/examples/dbus/remotecontrolledcar/car example
includes the generated DBus adaptor header via a statement like
  #include "car_adaptor.h"
and the compiler prefers to pick up the header file from the example
source dir (the one generated by CMake), rather than the one generated
by qmake in the example build dir.

Because CMake's DBus integration uses different flags than qmake's
DBus integration, the generated header file code is not compatible
with the qmake generated cpp file, and the example fails to link when
building with qmake, because it can't find an appropriate constructor
symbol.

In an ideal world, we wouldn't do in-source builds with the CMake
build, but that leads to other issues which I currently don't recall.

To circumvent the issue, adapt the CMake DBus qt6_add_dbus_adaptor
function to allow not passing the problematic '-l' flag by making it
optional. This shouldn't break existing code, but allows us to
generate a compatible header that will be used by qmake and succeed in
linking the example.

Task-number: QTBUG-85986
Change-Id: I06759f79aeb66bb32da7f158f55dd4734c4a9887
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2020-08-23 11:04:04 +02:00
Marc Mutz dcf856ca7a QStringTokenizer: use sliced() instead of mid()
The code was developed against the narrow-contract version of mid(),
but not updated when mid() became wide-contract.

Change-Id: I038054fb3f5acc0085c48fbf36af13dd14c917b8
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
2020-08-23 10:38:24 +02:00
Marc Mutz 60dd5451a2 Port QLatin1String to qsizetype and add narrow-contract substring functions
QLatin1String::mid() etc were changed from narrow to wide contract,
but the narrow-contract replacements weren't added. This blocks using
the narrow-contract functions in QStringTokenizer.

As a drive-by, Q_REQUIRED_RESULT -> [[nodiscard]] and Q_DECL_CONSTEXPR
-> constexpr. Also centralize most Q_ASSERT()s in a single function,
verify(), in an attempt to reduce the amount of string data generated
from the asserts in assertive builds.

[ChangeLog][QtCore][QLatin1String] Added from(), sliced(), first(n),
last(n) functions.

[ChangeLog][QtCore][QLatin1String] size_type/size() is now qsizetype
(was: int). This makes QLatin1String(ptr, 0) ambiguous now between the
(ptr, ptr) and (ptr, qsizetype) constructors.

Change-Id: Ie195f66ae1974eb0752c058aa9f3b0853ed92477
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-23 10:38:01 +02:00
Edward Welbourne ba2b644213 Drop spurious const from parameter
Quanifying a parameter passed by value (which is correct for QTime,
there is no need to pass it by reference) as const is pointless.

Change-Id: I86850f65dfac28ffcc4a8633dd6d212259bb33d0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-23 09:56:10 +02:00
Edward Welbourne 14f3f419b0 Fix crash on serializing default-constructed QTimeZone
The serialization code neglected to check against null.  Sinze zones
are saved either by IANA ID or in our special OffsetFromUtc format,
representing an invalid zone by a string that cannot possibly be a
valid IANA ID will do.

Fixes: QTBUG-86019
Pick-to: 5.15
Pick-to: 5.12
Change-Id: I6882026403d00f8b254aab34c645f1cf8f9fcc2d
Reviewed-by: Taylor Braun-Jones <taylor@braun-jones.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-23 09:55:29 +02:00
Allan Sandfeld Jensen 33031020e1 Fix mistake in AESHASH algorithm
The read data wasn't encoded into the state correctly.

Change-Id: Ib0a3b50bfeb56968de5c5e8353b28383cb586271
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-23 08:52:23 +02:00
Paul Wicking 55d0bcaf92 Ignore clang-format for GUI snippets
Among other things, this allows for ignoring proper indentation
of code that's contained in a wrapper function which serves the
purpose of compiling the snippet only. This is useful because
the extra indentation is included in the output generated by QDoc.

Task-number: QTBUG-84470
Change-Id: I3d702e82169a87447939f357cbee15cb0f74a391
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2020-08-23 05:30:38 +00:00
Marcel Krems 9a921d78e8 Fix CaseSensitivity handling for QRegularExpression in QSortFilterProxyModel
setFilterRegExp retains the caseSensitivity() while setFilterRegularExpression did not.
Change setFilterRegularExpression to also retain the case sensitivity.

Fixes: QTBUG-83313
Pick-to: 5.15
Change-Id: I46f494d320aee99d50612f01f63558c693276989
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
Reviewed-by: David Faure <david.faure@kdab.com>
2020-08-23 02:35:37 +02:00
Marcel Krems d9d813b6d1 Fix truncation warning in qversionnumber.h
qversionnumber.h(390): warning C4310: cast truncates constant value

Change-Id: I26f525db84d1c3691d9ac3f91f67be0bc4034b41
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2020-08-23 02:35:19 +02:00