aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmlmodels/qquickpackage.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Doc: Make module links more precise, fix markupDavid Boddie2025-11-201-2/+3
| | | | | | | | | | | QDoc can be inconsistent with link targets when there are duplicate page and section titles. Using link commands can help with more precise linking. In addition, code can be markup up as QML or using the \c command to make quoted content more accurate. Change-Id: I480b7cd301d5495201af926895a9bfec7b3bd9c8 Reviewed-by: Jerome Pasion <jerome.pasion@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Add security header for src/qmlmodelsFabian Kosmale2025-09-161-0/+1
| | | | | | | | | | | | As we assume that all QML comes from trusted sources, everything remains at the default "signicant" security level. The exception are the module headers which only include other headers and add a few defines. QUIP: 23 Fixes: QTBUG-136203 Pick-to: 6.10 6.9 6.8 Change-Id: Ib1a2abbb94dbb25420f03e01a2b444f89517a902 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Doc: Replace \instantiates with \nativetypePaul Wicking2024-08-201-1/+1
| | | | | | | | | | | Since the implementation of the `\nativetype`-command in QDoc, the `\instantiates`-command is deprecated. Replace the use of the deprecated command in favor of its replacement. Pick-to: 6.8 Task-number: QTBUG-128216 Change-Id: I23d9f66d3f6db2e5f827d7868497a432bb9b0626 Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* Doc: Fix linking to Qt Qml moduleTopi Reinio2023-12-011-1/+1
| | | | | | | | | | The module landing page has been renamed in af0539c7bb6f46e89523054c09d5d846ae55f355. The correct link target is 'Qt Qml'. Change-Id: I4a13348948fe1577e7a62edbb49a0d99f9695322 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Doc: Use correct module identifiers in \qmlproperty commandsTopi Reinio2023-06-091-1/+1
| | | | | | | | | | | | Multiple \qmlproperty commands used a QML module identifier different to what their parent \qmltype uses in \inqmlmodule. With upcoming changes to QDoc these will result in documentation warnings. Pick-to: 6.6 6.5 Change-Id: I07cde85801506b374a9781ae79d211813d5dad4f Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Remove link to Photo Viewer demoVolker Hilsheimer2023-05-221-1/+1
| | | | | | | | Amends 117382f2615d1e16bfa437b1ccc388fb77c99bf2 in qtdoc repo. Change-Id: I5b76854d8dffbfb8d235cb169eca7cf283cf7e2f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Port from container::count() and length() to size() - V5Marc Mutz2022-10-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a semantic patch using ClangTidyTransformator as in qtbase/df9d882d41b741fef7c5beeddb0abe9d904443d8, but extended to handle typedefs and accesses through pointers, too: const std::string o = "object"; auto hasTypeIgnoringPointer = [](auto type) { return anyOf(hasType(type), hasType(pointsTo(type))); }; auto derivedFromAnyOfClasses = [&](ArrayRef<StringRef> classes) { auto exprOfDeclaredType = [&](auto decl) { return expr(hasTypeIgnoringPointer(hasUnqualifiedDesugaredType(recordType(hasDeclaration(decl))))).bind(o); }; return exprOfDeclaredType(cxxRecordDecl(isSameOrDerivedFrom(hasAnyName(classes)))); }; auto renameMethod = [&] (ArrayRef<StringRef> classes, StringRef from, StringRef to) { return makeRule(cxxMemberCallExpr(on(derivedFromAnyOfClasses(classes)), callee(cxxMethodDecl(hasName(from), parameterCountIs(0)))), changeTo(cat(access(o, cat(to)), "()")), cat("use '", to, "' instead of '", from, "'")); }; renameMethod(<classes>, "count", "size"); renameMethod(<classes>, "length", "size"); except that on() was replaced with a matcher that doesn't ignoreParens(). a.k.a qt-port-to-std-compatible-api V5 with config Scope: 'Container'. Change-Id: I58e1b41b91c34d2e860dbb5847b3752edbfc6fc9 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Port from container::count() and length() to size()Marc Mutz2022-10-071-2/+2
| | | | | | | | | | | | | | | | | | | | This is a semantic patch using ClangTidyTransformator as in qtbase/df9d882d41b741fef7c5beeddb0abe9d904443d8: auto QtContainerClass = anyOf( expr(hasType(cxxRecordDecl(isSameOrDerivedFrom(hasAnyName(classes))))).bind(o), expr(hasType(namedDecl(hasAnyName(<classes>)))).bind(o)); makeRule(cxxMemberCallExpr(on(QtContainerClass), callee(cxxMethodDecl(hasAnyName({"count", "length"), parameterCountIs(0))))), changeTo(cat(access(o, cat("size"), "()"))), cat("use 'size()' instead of 'count()/length()'")) a.k.a qt-port-to-std-compatible-api with config Scope: 'Container', with the extended set of container classes recognized. Change-Id: Idb1f75dfe2323bd1d9e8b4d58d54f1b4b80c7ed7 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Use SPDX license identifiersLucie Gérard2022-06-111-38/+2
| | | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. Files that have to be modified by hand are modified. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: I63563bbeb6f60f89d2c99660400dca7fab78a294 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Cleanup QQmlGuard and related classesFabian Kosmale2022-02-211-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An investigation of uses of QQmlGuard (+ related classes) yielded the following results: - objectDestroyed is the only virtual method of QQmlGuard (besides the dtor) - we never have an owning pointer of type QQmlGuard * to one of its subclasess => Therefore, we can replace the use of virtual methods with a function pointer, which avoids the issue of duplicated vtables. None of the objectDestroyed actually cares about the object we pass to them, so we can leave it out in the function pointer. As everything is private API, we could easily bring it back if the need arises in the future. By moving the function pointer into QQmlGuardImpl we also avoid UB in qqmlengine.cpp, which cast any QQmlGuardImpl pointer to QQmlGuard<QObject>. This, however, is wrong as QQmlGuard<T> does not inherit from QQmlGuard<QObject>, even if T inherits from QObject. As we now can sipmly access the pointer from QQmlGuardImpl, we can side-step any casting woes alltogether. Moreover, we use this opportunity to let QQmlStrongJSObjectReference drectly inherit from QQmlGuardImpl. This requires duplicating some of the QQmlGuard API, but on the other hand avoids busy-work to hide no longer desired API. Unfortunately, we can no longer inherit privately from QQmlGuardImpl, as otherwise the various subclasses can no longer cast the QQmlGuardImpl we pass to them to their own type in the objectDestroyed(Impl) methods. QQmlGuard(Impl) still could benefit from a move ctor/assignment operator; those will be added in a later commit. Task-number: QTBUG-45582 Change-Id: I995148a428e541ced5c79b3a61d91c4bb7e03308 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Fix life cycle methods for some QML-exposed typesUlf Hermann2021-07-141-4/+0
| | | | | | | | | Follow the rule of 5: Drop empty dtors, and add Q_DISABLE_COPY_MOVE where we do need an explicit dtor. Change-Id: Icbb9d87e1087c69b1cf1f18062a496c148935783 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
* QQmlListProperty: Use qsizetype rather than int for sizesUlf Hermann2020-11-091-3/+3
| | | | | | | | | | [ChangeLog][QtQml] The QQmlListProperty callback functions use qsizetype now as type for the size of a list. This is in line with the containers that you might use to back the list. Fixes: QTBUG-88269 Change-Id: Ia38403cb32f241e6c70e1a580dbeff1d6d694331 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Use the extended QQmlListProperty interface in a few placesUlf Hermann2020-02-071-4/+15
| | | | | | | Task-number: QTBUG-79263 Change-Id: If518f644b5b9eddbacfb1cb16fbb557127ffcfb2 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Move documentation for Instantiator and Package into QtQml.ModelsUlf Hermann2019-09-251-2/+5
| | | | | Change-Id: Ie086399104de51ce0ae741f6fef316633ed47aa9 Reviewed-by: Martin Smith <martin.smith@qt.io>
* Move model types into their own libraryUlf Hermann2019-05-021-0/+198
The model types are not part of the core QML runtime and should only be loaded if you explicitly import them. We cannot enforce that in Qt5 as some of them are available from the QtQml import, but we can change it in Qt6. Change-Id: I1e49e84d748e352537ec2d4af901c034c91d038f Reviewed-by: Erik Verbruggen <erik.verbruggen@me.com>