| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |\|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/qml/compiler/qqmltypecompiler.cpp
src/qml/compiler/qv4bytecodehandler.cpp
src/qml/compiler/qv4codegen.cpp
src/qml/compiler/qv4compileddata_p.h
src/qml/compiler/qv4compiler.cpp
src/qml/compiler/qv4instr_moth.cpp
src/qml/compiler/qv4instr_moth_p.h
src/qml/jit/qv4baselinejit.cpp
src/qml/jit/qv4baselinejit_p.h
src/qml/jsruntime/qv4function.cpp
src/qml/jsruntime/qv4vme_moth.cpp
Change-Id: I8fb4d6f19677bcec0a4593b250f2eda5ae85e3d2
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
After enabling lookups in QML files, we can remove all the code that
tries to deal with (type) compile time detection of access to id objects
and properties of the scope/context object. This also allows removing
quite a bit of run-time code paths and even byte code instructions.
Task-number: QTBUG-69898
Change-Id: I7b26d7983393594a3ef56466d3e633f1822b76f4
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The main feature that needs to be implemented in order to enable lookups
in QML files is to respect that the QObject wrapper has its own storage
layer (meta-object properties). Lookups need to be able to index those
when the base is a QObject. This is done by caching the property data
and guarding the validity by comparing property cache pointers.
The same lookup logic is also implemented for value type wrappers.
OVerall there's more that can be done with lookups in meta-objects, for
constant properties for example.
For "global" lookups we have a safeguard in place that generates a
LoadName instruction for property access that should end up in the qml
context wrapper. So no changes are needed here at first, but the lookup
in the QML context can be optimized in the future.
The way of storing the property cache in the lookup itself trades
ugliness on destruction against the creation of less internal classes.
Another option would be to store the property cache in the internal
class and let QObjectWrapper always transition via the property cache.
Task-number: QTBUG-69898
Change-Id: I9c378c071acc6d7d4a34a2a76616f9594119d515
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
After "QV4Engine: Unify fromValue and metaTypeToJS",
QJSEngine::toScriptValue(QModelIndex) is working correctly, so we don't
need the messy low-level technique with QV4::ExecutionEngine anymore.
Change-Id: I7df17ae75c11abd21fdc9ab4310c9ecf615b6a71
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|\| |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/qml/compiler/qv4codegen.cpp
Change-Id: I604517d0948fb5056ce36cc104f13ac956fbcc24
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/qml/compiler/qv4codegen.cpp
src/qml/animations/qsequentialanimationgroupjob.cpp
Change-Id: I8b76e509fd7c8599d4cef25181d790ee28edab54
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If an item is part of multiple groups, moving it in one group also moves
it in all other groups. This has been the case since the groups exist.
Fixes: QTBUG-73707
Change-Id: Id1a6e82f667eaf992982e693475b734f485eb8a2
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
It was not quite clear in the GridView DnD example that the ListModel
doesn't get reordered, so if new ListElements are inserted after reordering
the DelegateModel by DnD, predicting the position where new delegates will
appear becomes a bit of a riddle.
Also:
- the QQmlDelegateModelAttached::model is a model, not an int
- disambiguate the properties that have the same names in
QQmlDelegateModel and QQmlDelegateModelAttached, using \keyword
for linking.
Task-number: QTBUG-34891
Change-Id: I485fd632f67d607652428b4e3c9ca528e57f7348
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
For the display role, we'll return the first role in that column
if it wasn't explicitly specified. For every other role, we can just
return an invalid QVariant. As usual, roleDataProvider can be used
for any data that is missing.
Before this patch, the extra roles were missing from roleNames,
so they couldn't be used in delegates.
Change-Id: I53ac5b75526bcddec44baf834f6a093115a70993
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|\ \ \
| | | |
| | | |
| | | | |
refs/staging/dev
|
| |\| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
src/qml/qml/qqmlmetatype.cpp
Change-Id: I517c001ea4eb0fdd8e469f9fffe5b7559a5b0795
|
| | |\|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
tests/auto/quick/qquicktableview/tst_qquicktableview.cpp
Change-Id: If3bf1abc23a59c458be0bb862d92f2edcb16b79f
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Tag the new 'row' and 'column' properties with revision 12.
This will make sure that they cannot be accessed by the delegate
unless the QQmlAdaptorModel has the correct minorVersion set.
Fixes: QTBUG-70031
Change-Id: I49e67c37ab5b7925c7bca313bbb99f04d1387cc4
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
just for QAIM
From before, only accessors for wrapping a QAbstractItemModel
had to create a dynamic QMetaObject together with a shared
QQmlPropertyCache (for enabling model roles in the delegate).
Each model item in the view would get a QQmlData with the dynamic
property cache assigned, which would then later be used by the
v4 runtime during property lookup.
But after we added the properties 'row' and 'column' to the model items, we
now always need to create a property cache, regardless of the Accessor used.
That way we can we specify the correct metaObject revision of the model item
in the cache, which will also allow us to revision the new properties so that
they will be respected by the v4 runtime. In this patch we hard-code the revision
(modelItemRevision) to be 0, but this will change in a subsequent patch.
This patch will move the 'metaObject' and 'propertyCache' up to the base
class (Accessor), and ensure that we create a property cache for each of the
non-pure-virtual sub classes. The model item wrappers will then, when creating
a QQmlData, assign the shared cache from the associated Accessor.
Task-number: QTBUG-70031
Change-Id: If6a67d5968d360d4a2b23d8291669c0549e8a342
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This function is already invokable in QAbstractItemModel, so that
works even though we override it in TableModel.
Change-Id: I8bc24ae8d4653011975fbe95d6adf7e98d56afe6
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
data() needs to be invokable because it does more processing to ensure that
DisplayRole will give us something, and we want to be able to access it in
JS code too, not only via the role context property in a delegate binding.
index() needs to be invokable to use it when calling data(). It's useful
for setData() to be invokable so that TableView delegates can be used to
edit the model. However since we don't normally expose numeric roles to
QML, we use string roles, and have to look them up in the roleNames() hash.
Change-Id: I38904ac995fc2bac514bde2dd37a95e0b911c00c
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
QModelIndex has various advantages over separate int row and column in
TableModel API; we intend to expose it via an invokable index() method and
via a context property for delegates, and use it in the invokable data()
function. So we should be consistent by using it in roleDataProvider too.
This way the callback only requires 3 arguments instead of 4, and the first
one is potentially extensible, just in case.
Change-Id: I7b1bc9ea5adb64941979d83901b3566278357e98
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|\| |
| | |
| | |
| | | |
Change-Id: I51cb42d253a83c0e6a76946c37cf1ff7c7cac150
|
| |\|
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
src/qml/qml/qqmlpropertycache.cpp
Change-Id: Ie7727499700b85cc0959ef3abb30d55dc728b659
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
If we keep plain pointers to objects we don't own, we need to zero them
when something else deletes them.
Fixes: QTBUG-73733
Change-Id: Ib4f3e144f10f70ab6cf44af4ffa62725470d3972
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
As an alternative to trying to write smarter C++ in the data() accessor, we
give the user full control of data conversion by calling an external JS
function if defined, to map role to the value that data() should return.
This enables extracting arbitrary values, converting the data in arbitrary
ways, or even doing calculations in case the EditRole stores a formula and the
DisplayRole should provide the result, or something like that.
This callback is implemented somewhat like TableView.columnWidthProvider, but
the arguments are more complex: function(row, column, role, rawData)
Change-Id: Ifaf5807f4809e0b5ad1d1c403f65c0707b902f10
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
...instead of calling index.column() and index.row() repeatedly
Change-Id: I13ea0d8942b750329d2e40e778b17548e148dd43
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is a QML type that can be used as a model for the new TableView.
The model data is set by assigning a JavaScript array to the rows property
(or by calling appendRow()). After data has been assigned for the first time,
the available columns and roles are fixed for the lifetime of the model,
as opposed to ListModel where the dynamicRoles property could be used.
This is done intentionally to simplify the code.
The API is designed to be familiar to users of ListModel:
- To add new rows, use appendRow() and insertRow().
- To modify existing rows, use setRow(), moveRow(), removeRow(), and clear().
[ChangeLog][Qt Labs QML Models] Added the TableModel QML type, a
JavaScript-based model for the new TableView.
Fixes: QTBUG-70334
Change-Id: I55387a08b122227c5624f78af3d450b7695d974a
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This gives us the opportunity to map the JavaScript null to QVariant's
concept of isNull().
[ChangeLog][QML] Assigning JavaScript null to incompatibly typed
properties generates a compile error now, rather than a runtime error.
Fixes: QTBUG-72098
Change-Id: I72fd1c30d84128c774230eaaea10455b2a0e064c
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|/
|
|
|
|
| |
Fixes: QTBUG-73112
Change-Id: Iff8419a10fb3408bec52160a8d2366860f9171d9
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
| |
Change-Id: I738b9da5335afb048d2eda2edf2be5095a91d7e5
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add \namespace for for namespace QtQml, as it has logging functions
that previously saw no generated documentation.
Fix \qmltype name of DelegateChooser, as well as a number of related
typos and linking problems.
Task-number: QTBUG-71502
Change-Id: I5a9c635853ef73c99a1b1f55cd1c0a1a87fdf6ec
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
This is needed to fix a bug in Qt Quick Controls 2. We need
to know if items within a Menu were created by Instantiator
so that we don't try to recreate them.
Task-number: QTBUG-71066
Change-Id: Iaedaea2be6bf4f70c2c7b6fb37871d5537328e96
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
VisualDataModel, VisualDataGroup, and VisualItemModel
are replaced with DelegateModel, DelegateModelGroup, and ObjectModel
respectively (since 7cad0e52c5a020bd29635e9912fd8946a6b48124), so
shouldn't be mentioned anymore, in preparation for removal.
Task-number: QTBUG-37725
Change-Id: I9a01ec8db748f817efca638383b7a278c7b562cd
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
|
|
|
|
|
| |
Change-Id: I19545953bde10d4ccc2f37843dcda2569dc77df4
Reviewed-by: Martin Smith <martin.smith@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the context or object in question gets destroyed during incubation,
that is not a major problem. We just clean up the mess and continue.
Especially, failure to create a delegate for an item view is not fatal.
This routinely happens if the whole view has been dropped between
object creation and incubation.
Since 0412de08fd65c5fef9d010a68b40a256f521ef61 info and warning levels
are properly separated.
Task-number: QTBUG-49224
Change-Id: Ie59dfca8edf91b80dcf33e742766863feba9c8fa
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
VisualDataModel, VisualDataGroup, and VisualItemModel
are replaced with DelegateModel, DelegateModelGroup, and
ObjectModel respectively (since
7cad0e52c5a020bd29635e9912fd8946a6b48124).
Also renamed/deleted a few snippet files and an image.
Task-number: QTBUG-37725
Change-Id: I5fa93993a31d8f9b08e7a282d5550ddd9bfb813f
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Get rid of Primitive and move the corresponding methods
directly into Value. Mark many methods in Value as
constexpr and turn Value into a POD type again.
Keep Primitive as a pure alias to Value for source
compatibility of other modules that might be using it.
Change-Id: Icb47458947dd3482c8852e95782123ea4346f5ec
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
|
|
|
| |
Depends on features.thread.
Change-Id: I65db68ac90c15af0ac0571ee021122f7ca2ca051
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
|
|
|
|
|
| |
Change-Id: I045a4844c06df9232cc8b04485ab0a39bb990e3f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
|
|
|
|
|
|
| |
Change-Id: Ic79f2e16c7b9a8c156cffd69f156e43bf565320d
Reviewed-by: Paolo Angelelli <paolo.angelelli@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
If the application uses a DelegateChooser, but the chooser fails to
resolve a delegate for a certain index, it should not use itself
as the delegate instead. This will cause the application to crash.
Instead, we just print a warning, and return nullptr, which will let
TableView handle the situation gracefully.
Change-Id: Ibaf9da09fd11149362f5b674fc61db47593de10c
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
|
| |
If the application uses a DelegateChooser, but the chooser fails to
resolve a delegate for a certain index, it should not use itself
as the delegate instead. This will cause the application to crash.
Instead, return nullptr (like we do in the function guard), which
will let the item views handle the situation gracefully.
Change-Id: I9b3b4aa2626d1f8521b4395096300ac12150c63f
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Force use of the basic render loop, adapt qqmlthread
and qqmltypeloader to work on a single thread.
Disable components and features that require worker
threads: qmldb_server, worker script, shapes, folderlistmodel,
threaded render loop, software renderer.
Done-with: Lorn Potter <lorn.potter@gmail.com>
Change-Id: I77d965947f684f8b7d19284b5decd893395316cb
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As it stood, we would only emit changes to row and column if
index changed as well. But when removing rows and columns
from the model, it can happen that we reuse an item that
by accident has the same index as the one we change it
to, but belonging to a different row and column. So we need to
check for changes to the index the same way we do for
row and column.
Change-Id: I9d507a74aa5dcb0fe7630e7af1e949bd2db7fb47
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
Since now each WorkerScript has its own JS engine, let's document that
to explain the reason (isolation), impact (memory consumption) as well
as how to deal with it (sharing).
Change-Id: I8007a58aaa96f989bc9e72e68dacd87655a8a8cc
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
As reported by TSAN, while registering new workers is done in the QML
engine thread with the lock held, the removal of workers from the hash
is done without a lock in the thread and therefore a data race.
Change-Id: I932ed6127fe34b3b3da0b0202f42e877ae6e0d5f
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
| |
This is the more modern way of doing things, so demonstrate that in our
examples and documentation.
Change-Id: Icd5316fbeeb00c34d470c8d871851945dc831244
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
| |
Similar to script imports from .qml files, the .mjs extension is used to
distinguish between ES modules and plain script files.
Change-Id: Id5f9b59fb77e99e3c9d6a404e6d091d96b501ad6
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
| |
With one engine per worker script, we can replace the onMessage and
sendmessage wrappers with plain properties of the WorkerScript object
that we can access. The code is further simplified by merging
WorkerEngine into WorkerScript.
Change-Id: I25e9fb253b6b0dd1fe63676392b1c760a83215db
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
| |
Now that we have one JS engine per worker script, we can get rid of the
per-script QML context and let the script simply run in the global
object, which is now also mutable.
Change-Id: I36d8616b85b2c0ff3a356ee7be9d242c3da624cf
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
| |
Multiple WorkerScript {} elements would share the same underlying
JavaScript engine. This complicates the design.
Change-Id: I17f240bc393f669c23248c96d1aeb6b5a70a2802
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds a specific abstract QQmlComponent subclass,
QQmlAbstractDelegateComponent, and a default implementation,
DelegateChooser, that, together with the type DelegateChoice
allows determining the delegate type by role and/or index.
The patch also adds QQmlAbstractDelegateComponent support
to QQmlTableInstanceModel, that is a simplified version of
the delegate model, currently only used in the new table view.
DelegateChoosers are intended to behave just like Components
in the context of the view. This means that they can be declared
outside of the view, and also in separate files, and the same
delegate component can be used at the same time in multiple views.
[ChangeLog][QtQuick][Item Views] Added a DelegateChooser Component
to host DelegateChoice instances to choose different delegates in
an Item View (e.g. TableView) depending on model roles.
Done-with: Michael Brasser <michael.brasser@live.com>
Task-number: QTBUG-26681
Change-Id: Ibe24a31daf9142c8a9ff45ef6c65da0aec8a14dc
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The enabled property was added with QtQuick/QtQml 2.3 as part of Qt 5.7,
but due to multiple bugs, the property became visible across all
versions, breaking lookup as outlined in the linked task.
The first issue was that property revisioning needs to be specified via
the REVISION tag inside Q_PROPERTY, not using Q_REVISION.
The second issue was that in type registration the unversioned type must
be registered first followed by the revisions. Otherwise the call to
QQmlMetaType::qmlType(const QMetaObject *metaObject, const QHashedStringRef &module, int version_major, int version_minor)
that will look through the metaObjectToType multi-hash will find the
last inserted type first and that satisfies the minor version
requiremend. In the case of the Connections type, that would be the base
version registered last with
qmlRegisterCustomType<QQmlConnections>(uri, versionMajor, versionMinor,"Connections", new QQmlConnectionsParser);
Lastly, if we were to just call that one first and then register
revision 1 afterwards, then only the first version would have a custom
parser attached and we would fail to process the bindings correctly if
using the newer revision.
So to fix this, we introduce another private qmlRegisterCustomType
specialization that includes a meta object revision, thus allowing us to
register the Connections type in the correct order and both with a
customer parser.
That's not ideal, but also not worse than the previous three registration
and it fixes the visibility.
[ChangeLog][QtQml][Connections] Fixed the visibility of the enabled
property to only appear when importing QtQml/QtQuick >= 2.3, which was
introduced with Qt 5.7. Otherwise it would accidentally shadow for
example an "enabled" context property.
Task-number: QTBUG-69884
Change-Id: I888374d96f19502466358df81007bcb3c65d3a79
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
|
|
|
|
|
|
|
|
|
| |
When object cache for list model items is a plain QObject that was
allocated together with declarative data in one go. Since we control the
site of deletion, we can call the destructor manually as well as
operator delete to avoid the ASAN error.
Change-Id: I346d6ef34876cb495573ba9cfbc68be92dd937ab
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
|