Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package qt6-location for openSUSE:Factory checked in at 2025-11-25 15:47:49 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qt6-location (Old) and /work/SRC/openSUSE:Factory/.qt6-location.new.14147 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-location" Tue Nov 25 15:47:49 2025 rev:23 rq:1319487 version:6.10.1 Changes: -------- --- /work/SRC/openSUSE:Factory/qt6-location/qt6-location.changes 2025-10-13 17:26:24.960986541 +0200 +++ /work/SRC/openSUSE:Factory/.qt6-location.new.14147/qt6-location.changes 2025-11-25 15:48:47.764226562 +0100 @@ -1,0 +2,6 @@ +Thu Nov 20 15:14:37 UTC 2025 - Christophe Marin <[email protected]> + +- Update to 6.10.1 + https://www.qt.io/blog/qt-6.10.1-released + +------------------------------------------------------------------- Old: ---- qtlocation-everywhere-src-6.10.0.tar.xz New: ---- qtlocation-everywhere-src-6.10.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qt6-location.spec ++++++ --- /var/tmp/diff_new_pack.t6xVwJ/_old 2025-11-25 15:48:50.464340189 +0100 +++ /var/tmp/diff_new_pack.t6xVwJ/_new 2025-11-25 15:48:50.464340189 +0100 @@ -16,7 +16,7 @@ # -%define real_version 6.10.0 +%define real_version 6.10.1 %define short_version 6.10 %define tar_name qtlocation-everywhere-src %define tar_suffix %{nil} @@ -30,7 +30,7 @@ %global __requires_exclude qt6qmlimport\\(MapViewer\\) # Name: qt6-location%{?pkg_suffix} -Version: 6.10.0 +Version: 6.10.1 Release: 0 Summary: Qt 6 Location plugins and libraries License: GPL-3.0-or-later ++++++ qtlocation-everywhere-src-6.10.0.tar.xz -> qtlocation-everywhere-src-6.10.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/.cmake.conf new/qtlocation-everywhere-src-6.10.1/.cmake.conf --- old/qtlocation-everywhere-src-6.10.0/.cmake.conf 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/.cmake.conf 2025-11-13 22:19:38.000000000 +0100 @@ -1,4 +1,4 @@ -set(QT_REPO_MODULE_VERSION "6.10.0") +set(QT_REPO_MODULE_VERSION "6.10.1") set(QT_REPO_MODULE_PRERELEASE_VERSION_SEGMENT "alpha1") list(APPEND QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_AS_CONST=1") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/.tag new/qtlocation-everywhere-src-6.10.1/.tag --- old/qtlocation-everywhere-src-6.10.0/.tag 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/.tag 2025-11-13 22:19:38.000000000 +0100 @@ -1 +1 @@ -06051e45b8e7512563fa609df61861fe3de15058 +f9b4e48a1b8ba398b2a0393ec645662bacbb403b diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/dependencies.yaml new/qtlocation-everywhere-src-6.10.1/dependencies.yaml --- old/qtlocation-everywhere-src-6.10.0/dependencies.yaml 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/dependencies.yaml 2025-11-13 22:19:38.000000000 +0100 @@ -1,10 +1,10 @@ dependencies: ../qtbase: - ref: 5a8637e4516bc48a0b3f4b5ec3b18618b92e7222 + ref: 90b845d15ffb97693dba527385db83510ebd121a required: true ../qtdeclarative: - ref: 7e0ab1d98c159c9f4c9afab78b43e7c70f449e41 + ref: 22fb5e739a2ea700448b22d34ade0d5c1927cb48 required: true ../qtpositioning: - ref: cded370ab2518be232ae412e3bb8bc7ff8423be2 + ref: 11d336c178adf4b8d8f7f8589bb9641bcf4b8eda required: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/examples/location/mapviewer/main.cpp new/qtlocation-everywhere-src-6.10.1/examples/location/mapviewer/main.cpp --- old/qtlocation-everywhere-src-6.10.0/examples/location/mapviewer/main.cpp 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/examples/location/mapviewer/main.cpp 2025-11-13 22:19:38.000000000 +0100 @@ -53,6 +53,7 @@ QGuiApplication application(argc, argv); QCoreApplication::setApplicationName(u"QtLocation Mapviewer example"_s); + QGuiApplication::setDesktopFileName(QCoreApplication::applicationName()); QStringList args = QCoreApplication::arguments(); args.removeFirst(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/examples/location/places/doc/src/places.qdoc new/qtlocation-everywhere-src-6.10.1/examples/location/places/doc/src/places.qdoc --- old/qtlocation-everywhere-src-6.10.0/examples/location/places/doc/src/places.qdoc 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/examples/location/places/doc/src/places.qdoc 2025-11-13 22:19:38.000000000 +0100 @@ -107,7 +107,7 @@ First some of the model's properties are set, which will be used to form the search request. The \l {PlaceSearchModel::searchArea}{searchArea} property is set to the - \e searchRegion object which is a \l [QML]{geocircle} with a center that is linked to the current + \e searchRegion object which is a \l [QML]{geoCircle} with a center that is linked to the current location displayed on the \l Map. Finally, we define three helper functions \b searchForCategory(), \b {searchForText()} and diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/src/location/declarativemaps/qdeclarativegeocodemodel.cpp new/qtlocation-everywhere-src-6.10.1/src/location/declarativemaps/qdeclarativegeocodemodel.cpp --- old/qtlocation-everywhere-src-6.10.0/src/location/declarativemaps/qdeclarativegeocodemodel.cpp 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/src/location/declarativemaps/qdeclarativegeocodemodel.cpp 2025-11-13 22:19:38.000000000 +0100 @@ -328,14 +328,14 @@ } /*! - \qmlproperty geoshape QtLocation::GeocodeModel::bounds + \qmlproperty geoShape QtLocation::GeocodeModel::bounds This property holds the bounding area used to limit the results to those within the area. This is particularly useful if query is only partially filled out, as the service will attempt to (reverse) geocode all matches for the specified data. - Accepted types are \l {georectangle} and - \l {geocircle}. + Accepted types are \l {geoRectangle} and + \l {geoCircle}. */ QVariant QDeclarativeGeocodeModel::bounds() const { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp new/qtlocation-everywhere-src-6.10.1/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp --- old/qtlocation-everywhere-src-6.10.0/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/src/location/declarativemaps/qdeclarativegeoroutemodel.cpp 2025-11-13 22:19:38.000000000 +0100 @@ -750,7 +750,7 @@ } /*! - \qmlproperty list<georectangle> RouteQuery::excludedAreas + \qmlproperty list<geoRectangle> RouteQuery::excludedAreas Areas that the route must not cross. @@ -778,9 +778,9 @@ } /*! - \qmlmethod void QtLocation::RouteQuery::addExcludedArea(georectangle area) + \qmlmethod void QtLocation::RouteQuery::addExcludedArea(geoRectangle area) - Adds the specified georectangle \a area to the excluded areas + Adds the specified geoRectangle \a area to the excluded areas (areas that the route must not cross). The same area can only be added once. @@ -809,7 +809,7 @@ } /*! - \qmlmethod void QtLocation::RouteQuery::removeExcludedArea(georectangle area) + \qmlmethod void QtLocation::RouteQuery::removeExcludedArea(geoRectangle area) Removes the given \a area from excluded areas (areas that the route must not cross). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/src/location/declarativeplaces/qdeclarativesearchresultmodel.cpp new/qtlocation-everywhere-src-6.10.1/src/location/declarativeplaces/qdeclarativesearchresultmodel.cpp --- old/qtlocation-everywhere-src-6.10.0/src/location/declarativeplaces/qdeclarativesearchresultmodel.cpp 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/src/location/declarativeplaces/qdeclarativesearchresultmodel.cpp 2025-11-13 22:19:38.000000000 +0100 @@ -174,8 +174,8 @@ This property holds the search area. The search result returned by the model will be within the search area. - If this property is set to a \l {geocircle} its - \l {geocircle}{radius} property may be left unset, in which case the \l Plugin + If this property is set to a \l {geoCircle} its + \l {geoCircle}{radius} property may be left unset, in which case the \l Plugin will choose an appropriate radius for the search. Support for specifying a search area can vary according to the \l plugin backend diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/src/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp new/qtlocation-everywhere-src-6.10.1/src/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp --- old/qtlocation-everywhere-src-6.10.0/src/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/src/location/declarativeplaces/qdeclarativesearchsuggestionmodel.cpp 2025-11-13 22:19:38.000000000 +0100 @@ -69,13 +69,13 @@ */ /*! - \qmlproperty geoshape PlaceSearchSuggestionModel::searchArea + \qmlproperty geoShape PlaceSearchSuggestionModel::searchArea This property holds the search area. Search suggestion results returned by the model will be relevant to the given search area. - If this property is set to a \l {geocircle} its - \l {geocircle}{radius} property may be left unset, in which case the \l Plugin + If this property is set to a \l {geoCircle} its + \l {geoCircle}{radius} property may be left unset, in which case the \l Plugin will choose an appropriate radius for the search. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/src/location/maps/qgeoroute.cpp new/qtlocation-everywhere-src-6.10.1/src/location/maps/qgeoroute.cpp --- old/qtlocation-everywhere-src-6.10.0/src/location/maps/qgeoroute.cpp 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/src/location/maps/qgeoroute.cpp 2025-11-13 22:19:38.000000000 +0100 @@ -165,7 +165,7 @@ } /*! - \qmlproperty georectangle QtLocation::route::bounds + \qmlproperty geoRectangle QtLocation::route::bounds Read-only property which holds a bounding box which encompasses the entire route. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/src/location/quickmapitems/qdeclarativegeomap.cpp new/qtlocation-everywhere-src-6.10.1/src/location/quickmapitems/qdeclarativegeomap.cpp --- old/qtlocation-everywhere-src-6.10.0/src/location/quickmapitems/qdeclarativegeomap.cpp 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/src/location/quickmapitems/qdeclarativegeomap.cpp 2025-11-13 22:19:38.000000000 +0100 @@ -1060,7 +1060,7 @@ /*! - \qmlproperty geoshape QtLocation::Map::visibleRegion + \qmlproperty geoShape QtLocation::Map::visibleRegion This property holds the region which occupies the viewport of the map. The camera is positioned in the center of the shape, and diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/src/location/quickmapitems/qdeclarativegeomapitemview.cpp new/qtlocation-everywhere-src-6.10.1/src/location/quickmapitems/qdeclarativegeomapitemview.cpp --- old/qtlocation-everywhere-src-6.10.0/src/location/quickmapitems/qdeclarativegeomapitemview.cpp 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/src/location/quickmapitems/qdeclarativegeomapitemview.cpp 2025-11-13 22:19:38.000000000 +0100 @@ -82,13 +82,18 @@ QDeclarativeGeoMapItemGroup::componentComplete(); m_componentCompleted = true; if (!m_itemModel.isNull()) - m_delegateModel->setModel(m_itemModel); + m_delegateModel->setModel(std::exchange(m_itemModel, QVariant())); if (m_delegate) m_delegateModel->setDelegate(m_delegate); m_delegateModel->setDelegateModelAccess(m_delegateModelAccess); m_delegateModel->componentComplete(); + + // Only connect it here because we don't want to see the modelChanged() for the initial setting + // of the model. + QObject::connect(m_delegateModel, &QQmlDelegateModel::modelChanged, + this, &QDeclarativeGeoMapItemView::modelChanged); } void QDeclarativeGeoMapItemView::classBegin() @@ -181,24 +186,29 @@ */ QVariant QDeclarativeGeoMapItemView::model() const { - return m_itemModel; + return m_componentCompleted + ? m_delegateModel->model() + : m_itemModel; } void QDeclarativeGeoMapItemView::setModel(const QVariant &model) { - if (model == m_itemModel) - return; - - m_itemModel = model; if (m_componentCompleted) { + if (m_delegateModel->model() == model) + return; // Make sure to clear all stale items from the map and the model m_delegateModel->drainReusableItemsPool(0); removeInstantiatedItems(false); - m_delegateModel->setModel(m_itemModel); + m_delegateModel->setModel(model); + return; } + if (model == m_itemModel) + return; + + m_itemModel = model; emit modelChanged(); } @@ -294,8 +304,13 @@ void QDeclarativeGeoMapItemView::instantiateAllItems() { // The assumption is that if m_instantiatedItems isn't empty, instantiated items have been already added - if (!m_componentCompleted || !m_map || !m_delegate || m_itemModel.isNull() || !m_instantiatedItems.isEmpty()) + if (!m_componentCompleted + || !m_map + || !m_delegate + || m_delegateModel->model().isNull() + || !m_instantiatedItems.isEmpty()) { return; + } // If here, m_delegateModel may contain data, but QQmlInstanceModel::object for each row hasn't been called yet. QScopedValueRollback createBlocker(m_creatingObject, true); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/src/location/quickmapitems/qdeclarativepolylinemapitem.cpp new/qtlocation-everywhere-src-6.10.1/src/location/quickmapitems/qdeclarativepolylinemapitem.cpp --- old/qtlocation-everywhere-src-6.10.0/src/location/quickmapitems/qdeclarativepolylinemapitem.cpp 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/src/location/quickmapitems/qdeclarativepolylinemapitem.cpp 2025-11-13 22:19:38.000000000 +0100 @@ -575,9 +575,9 @@ } /*! - \qmlmethod void MapPolyline::setPath(geopath path) + \qmlmethod void MapPolyline::setPath(geoPath path) - Sets the \a path using a geopath type. + Sets the \a path using a geoPath type. \since 5.10 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/tests/auto/declarative_location_core/tst_place.qml new/qtlocation-everywhere-src-6.10.1/tests/auto/declarative_location_core/tst_place.qml --- old/qtlocation-everywhere-src-6.10.0/tests/auto/declarative_location_core/tst_place.qml 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/tests/auto/declarative_location_core/tst_place.qml 2025-11-13 22:19:38.000000000 +0100 @@ -229,8 +229,10 @@ compare(signalSpy.count, 2); - // set categories to the same (signal spy should not increase?) + // set categories to the same. Signal spy should not increase since nothing changes. testPlace.categories = categories; + compare(signalSpy.count, 2); + compare(testPlace.categories.length, categories.length); for (var i = 0; i < categories.length; ++i) { @@ -238,12 +240,13 @@ compare(testPlace.categories[i].name, categories[i].name); } - compare(signalSpy.count, 5); // clear + append + append + // All the comparing should not change anything about the list. + compare(signalSpy.count, 2); // reset by assignment testPlace.categories = new Array(0); compare(testPlace.categories.length, 0); - compare(signalSpy.count, 6); + compare(signalSpy.count, 3); signalSpy.destroy(); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/tests/auto/declarative_location_core/tst_placesearchmodel.qml new/qtlocation-everywhere-src-6.10.1/tests/auto/declarative_location_core/tst_placesearchmodel.qml --- old/qtlocation-everywhere-src-6.10.0/tests/auto/declarative_location_core/tst_placesearchmodel.qml 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/tests/auto/declarative_location_core/tst_placesearchmodel.qml 2025-11-13 22:19:38.000000000 +0100 @@ -70,8 +70,10 @@ { tag: "relevanceHint", property: "relevanceHint", signal: "relevanceHintChanged", value: PlaceSearchModel.DistanceHint, reset: PlaceSearchModel.UnspecifiedHint }, { tag: "visibilityScope", property: "visibilityScope", signal: "visibilityScopeChanged", value: Place.DeviceVisibility, reset: Place.UnspecifiedVisibility }, { tag: "favoritesPlugin", property: "favoritesPlugin", signal: "favoritesPluginChanged", value: favoritePlugin }, - { tag: "category", property: "categories", signal: "categoriesChanged", value: testCategory1, expectedValue: [ testCategory1 ], reset: [], array: true }, - { tag: "categories", property: "categories", signal: "categoriesChanged", value: [ testCategory1, testCategory2 ], reset: [], array: true }, + + // The "categories" property of PlaceSearchModel has its own signaling that triggers on every append(). + { tag: "category", property: "categories", signal: "categoriesChanged", value: testCategory1, expectedValue: [ testCategory1 ], reset: [], array: true, emitsExtraSignals: true }, + { tag: "categories", property: "categories", signal: "categoriesChanged", value: [ testCategory1, testCategory2 ], reset: [], array: true, emitsExtraSignals: true }, ]; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/tests/auto/declarative_location_core/utils.js new/qtlocation-everywhere-src-6.10.1/tests/auto/declarative_location_core/utils.js --- old/qtlocation-everywhere-src-6.10.0/tests/auto/declarative_location_core/utils.js 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/tests/auto/declarative_location_core/utils.js 2025-11-13 22:19:38.000000000 +0100 @@ -34,10 +34,12 @@ if (data.array) { if (data.expectedValue) { testCase.verify(compareArray(testObject[data.property], data.expectedValue)); - testCase.compare(signalSpy.count, 1 + data.expectedValue.length); + testCase.compare( + signalSpy.count, + 1 + (data.emitsExtraSignals ? data.expectedValue.length : 0)); } else { testCase.verify(compareArray(testObject[data.property], data.value)); - testCase.compare(signalSpy.count, 1 + data.value.length); + testCase.compare(signalSpy.count, 1 + (data.emitsExtraSignals ? data.value.length : 0)); } } else { @@ -52,10 +54,13 @@ if (data.array) { if (data.expectedValue) { testCase.verify(compareArray(testObject[data.property], data.expectedValue)); - testCase.compare(signalSpy.count, 1 + data.expectedValue.length); + testCase.expectFailContinue( + "category", + "The QML engine should check equality before assigning a single object to a list.") + testCase.compare(signalSpy.count, 0); } else { testCase.verify(compareArray(testObject[data.property], data.value)); - testCase.compare(signalSpy.count, 1 + data.value.length); + testCase.compare(signalSpy.count, 0); } } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtlocation-everywhere-src-6.10.0/tests/auto/declarative_ui/tst_map_itemview.qml new/qtlocation-everywhere-src-6.10.1/tests/auto/declarative_ui/tst_map_itemview.qml --- old/qtlocation-everywhere-src-6.10.0/tests/auto/declarative_ui/tst_map_itemview.qml 2025-10-02 01:38:27.000000000 +0200 +++ new/qtlocation-everywhere-src-6.10.1/tests/auto/declarative_ui/tst_map_itemview.qml 2025-11-13 22:19:38.000000000 +0100 @@ -346,6 +346,19 @@ property int y: 12 } + function aAt0() : real { + switch (modelIndex) { + case Model.Singular: + case Model.List: + return model.get(0).a + case Model.Array: + return model[0].a + case Model.Object: + return model.a + } + return -1; + } + property int modelIndex: Model.None property int delegateIndex: Delegate.None @@ -720,10 +733,17 @@ return data } + SignalSpy { + id: delegateModelAccessModelChangedSpy + target: delegateModelAccessItemView + signalName: "modelChanged" + } + function test_delegateModelAccess(data) { delegateModelAccessItemView.delegateModelAccess = DelegateModel.Qt5ReadWrite delegateModelAccessItemView.modelIndex = Model.None delegateModelAccessItemView.delegateIndex = Delegate.None + delegateModelAccessModelChangedSpy.clear(); tryCompare(mapForTestingDelegateModelAccess, "mapItemsLength", 0) const access = data.access @@ -746,13 +766,36 @@ ? access !== DelegateModel.ReadOnly : access === DelegateModel.ReadWrite + const writeShouldPropagate = + + // If we've explicitly asked for the model to be written, it is + (access === DelegateModel.ReadWrite) || + + // If it's a QAIM or an object, it's implicitly written + (modelKind !== Model.Array) || + + // When writing through the model object from a typed delegate, + // the value was propagated even before. + (access === DelegateModel.Qt5ReadWrite && delegateKind === Delegate.Typed); + + + // Only the array is actually updated itself. The other models are pointers + const writeShouldSignal = modelKind === Model.Array + let expected = 11 + // Initial setting of the model, signals one update + let expectedModelUpdates = 1; + compare(delegateModelAccessModelChangedSpy.count, expectedModelUpdates) + compare(delegate.immediateX, expected) compare(delegate.modelX, expected) - if (modelWritable) + if (modelWritable) { expected = 3 + if (writeShouldSignal) + ++expectedModelUpdates + } try { delegate.writeThroughModel() @@ -763,9 +806,14 @@ compare(delegate.immediateX, expected) compare(delegate.modelX, expected) + compare(delegateModelAccessItemView.aAt0(), writeShouldPropagate ? expected : 11); + compare(delegateModelAccessModelChangedSpy.count, expectedModelUpdates) - if (immediateWritable) + if (immediateWritable) { expected = 1 + if (writeShouldSignal) + ++expectedModelUpdates + } try { delegate.writeImmediate() @@ -778,6 +826,8 @@ // Writes to required properties always succeed, but might not be propagated to the model compare(delegate.immediateX, delegateKind === Delegate.Untyped ? expected : 1) compare(delegate.modelX, expected) + compare(delegateModelAccessItemView.aAt0(), writeShouldPropagate ? expected : 11); + compare(delegateModelAccessModelChangedSpy.count, expectedModelUpdates) } } }
