aboutsummaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
...
| | * V4: Don't mark InternalClass::parent when garbage collectingUlf Hermann2019-03-201-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The parent pointer is only kept so that we can update the parent's transitions when removing a child. There is no need to keep the parents alive for the children. Fixes: QTBUG-58559 Change-Id: Ia28183966bde6d478ca030fe11195489925dfc13 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Implement dummy QML lookups for "global" variablesSimon Hausmann2019-03-204-5/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When resolving names in the context of QML bindings, we now direct runtime access to QQmlContextWrapper::resolveQmlPropertyLookupGetter. At the moment this does basically the same as Runtime::method_loadName, which we called earlier. However this now provides the opportunity to optimize lookups in the QML context in a central place. When performing a call on a scope or context object property, we also did not use a CallName() instruction - which would have gotten the thisObject wrong - but instead we use a dedicated CallScopeObjectProperty and CallContextObjectProperty instruction. These rely on identifying these properties at compile time, which goes away with lookups (and also doesn't work when using ahead-of-time compilation). Therefore the qml context property lookup is using a getPropertyAndBase style signature and Runtime::method_callQmlContextPropertyLookup uses that. For the tests to pass, some error expectations need adjusting. In particular the compile-time detection of write attempts to id objects is now delayed to the run-time. The old code path is still there and will be removed separately in the next commit (as it is massive). Task-number: QTBUG-69898 Change-Id: Iad1ff93d3758c4db984a7c2d003beee21ed2275c Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| | * Blacklist tst_QQuickListView::enforceRange_withoutHighlight on opensuseUlf Hermann2019-03-201-0/+2
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-74544 Change-Id: I0a8c54d2a02d959edacd82abcee4553222d575d9 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * Raise timeout in QQmlPreview testUlf Hermann2019-03-201-1/+1
| | | | | | | | | | | | | | | | | | | | | Apparently on some platforms this can time out. Change-Id: I30cd274ff3127319c558b473b6ec7e7f5bc79c38 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Blacklist AnimatedImage::test_crashRaceCondition_replyFinished()Ulf Hermann2019-03-201-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | This is unstable on macOS 10.13. Task-number: QTBUG-74525 Change-Id: I8c04b4f0b4c560d1805982a605f994e0f1f1c87d Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * Blacklist tst_TouchMouse::buttonOnFlickable() on mingwUlf Hermann2019-03-201-0/+4
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-74517 Change-Id: I3e0a90a264f8f686bba89e6b8dc4ebcf05418f77 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * Relax tst_QQuickGridView::contentHeightWithDelayRemoveUlf Hermann2019-03-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Apparently we cannot rely on the content height change to immediately take effect. Change-Id: I8b4bf7b7d0b72da84228c7a3f1460b42c97e0330 Fixes: QTBUG-74518 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * Create import directory from intercepted URL, not orignial oneUlf Hermann2019-03-204-0/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | If the qmldir URL got intercepted, we should use the intercepted URL to get to the contents to be loaded. Fixes: QTBUG-73843 Change-Id: I51715575e767ed429a8237517f47196677409fe0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Baseline JIT: Save accumulator in toInt32LhsAcc()Ulf Hermann2019-03-191-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | toInt32LhsAcc convertes both the lhs and the accumulator to int32. If the accumulator is not saved, a GC run during the conversion of the lhs might trash its value. Fixes: QTBUG-74058 Change-Id: Ic42693061c7d483bb430d77bcc095de6ff9a6843 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Fix compilation for SLES 12Ulf Hermann2019-03-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Apparently only some compilers see through QPointer on connect() Fixes: QTBUG-74500 Change-Id: I4d0ca7c8ab8b7eae281deff14523a1628e669279 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-03-183-4/+29
| |\| | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4codegen.cpp Change-Id: I66b7db42bf208855889094ace0267326595ce03c
| | * Try to fix tst_qquickrectangle::gradient_separate()Ulf Hermann2019-03-151-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Use QTRY_VERIFY in order to allow for a delay in rendering the rectangle. Fixes: QTBUG-74468 Change-Id: I797b269358aaa35487144bb03a85f36646e2302f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Unify the JavaScript parsing recursion checksUlf Hermann2019-03-151-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We only need to check in one central location and we can allow for more recursion. 4k recursions seem tolerable. A common default for stack sizes is 8MB. Each recursion step takes up to 1k stack space in debug mode. So, exhausting this would burn about half of the available stack size. We don't report the exact source location in this case as finding the source location may itself trigger a deep recursion. Fixes: QTBUG-74087 Change-Id: I43e6e20b322f6035c7136a6f381230ec285c30ae Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Don't keep raw pointers to SparseArrayNodeUlf Hermann2019-03-141-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The nodes are owned by the SparseArrayData and will be freed whenever an item is deleted from the array. Therefore, we have to look up the node for each iteration. This is slightly slower, but at least it doesn't crash. Fixes: QTBUG-74188 Change-Id: Id24324a8c83b00b3ad1212cdaabccabd6c8a999f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | QV4Engine: Unify fromValue and metaTypeToJSRobin Burchell2019-03-213-9/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Somehow, we ended up with two codepaths doing essentially the same thing: constructing a JS value from a QVariant. metaTypeToJS is invoked from QJSEngine::toScriptValue, whereas fromVariant() is used in various places internally. metaTypeToJS lacks proper handling for a number of cases, such as builtin types like QPointF, which lead to toScriptValue(QPointF) (incorrectly, and uselessly) constructing a VariantObject which couldn't then do anything useful. [ChangeLog][QtQml] QJSEngine::toScriptValue will now return correct JavaScript objects in more cases, for example, for gadget types like QPointF. [ChangeLog][QtQml] QJSEngine::toScriptValue now uses the same behavior as the rest of the engine when building JavaScript values, which will cause the types of some returned JavaScript objects to change. For instance, string lists are now returned as sequence objects, not array objects, and QChar now constructs a JavaScript string. Change-Id: I0290eb7c9c46e7b508d497cc33cd61d9378f3872 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | Support QRegularExpression on the same level as QRegExpUlf Hermann2019-03-208-20/+197
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QRegularExpression is the recommended way to do regular expressions nowadays. Support assignment of JavaScript regular expressions to QRegularExpression properties of QObjects and the other way around. QJSValue::toVariant() will create a QRegularExpression from a JavaScript RegExp by default now. [ChangeLog][QtQml][Important Behavior Changes] QRegularExpression is now supported the same way QRegExp is in QML. QJSValue::toVariant() creates a QRegularExpression variant rather than a QRegExp one from a JavaScript regular expression now. Fixes: QTBUG-73429 Change-Id: I301a02771cd17903406c2bc5c7aaeca6cce629f0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-03-1511-6/+259
|\| | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4codegen.cpp Change-Id: I604517d0948fb5056ce36cc104f13ac956fbcc24
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-03-1310-5/+258
| |\| | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4codegen.cpp src/qml/animations/qsequentialanimationgroupjob.cpp Change-Id: I8b76e509fd7c8599d4cef25181d790ee28edab54
| | * Disable tail calls for function called with more arguments than formalsUlf Hermann2019-03-041-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We cannot easily find the required stack space to store the extra arguments without adding a new stack frame. In principle it would be possible, but heavily recursing on such functions should be a rare problem. Change-Id: I1a53a6d29e37ce67aa7bd64acb7b1f41197e84c0 Fixes: QTBUG-72807 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Fix a bug where hover events were not sent if the mouse was never movedJan Arve Sæther2019-03-043-2/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This happened if the "real mouse" was never moved, since moving the real mouse caused it to update the internal QQuickWindowPrivate::lastMousePosition. If the window never got any mouse events, it would therefore fail to generate proper hover events. However, if the window got exposed under a mouse cursor it would generate a hover enter event. We therefore update lastMousePosition when that happens also. Change-Id: I77d9b1bd779a813756c4056b015f2e81664b6d36 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * Don't crash when passive grabber deleted before exclusive gr. releasedShawn Rutledge2019-02-262-0/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In this scenario, a DragHandler is inside an Item in a Loader, under a MouseArea, which unloads the loader on press. So on press, the DragHandler acquires a passive grab, then the MouseArea acquires the exclusive grab, then the DragHandler is destroyed along with its parent when the Loader is unloaded. On release, QQuickEventPoint::setGrabberItem(nullptr) was sending an onGrabChanged(passiveGrabber, OverrideGrabPassive, this) notification. That was questionable: the handler was not just then getting its grab overridden, but rather un-overridden, because the exclusive grab was being released. It's also a good idea to check for null pointers, since m_passiveGrabbers is a collection of QPointers already, so we can tell when a passive grabber is deleted dynamically. It can also be reproduced with MultiPointTouchArea just as with MouseArea, so the test is written that way for convenience, because we have tst_multipointtoucharea_interop already. It doesn't really matter which handler has the passive grab, or which item has the exclusive grab that's being relinquished. Fixes: QTBUG-73819 Change-Id: Ic605efa2143a1d849be095dcb88d6c38d7d2ee19 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
| | * QAnimationGroupJob: Notify about removed children on clear()Ulf Hermann2019-02-261-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Derived classes, such as QSequentialAnimationGroupJob, might keep additional pointers to the children. Those need to be cleared, too. Therefore, use the regular removeAnimation() method for clearing. Fixes: QTBUG-73828 Change-Id: I64cc1fe4da59f10b29f27012b10f93b4289b6e5a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * QQmlExtensionPlugin test: Don't fail when detecting old pluginUlf Hermann2019-02-261-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some Qt modules still register plugins under the old IID. This makes the test fail if any of those have been compiled before. As the old IID is still recognized we don't really have to fail in this case. A warning should be enough. Change-Id: I409534d51c339ce361002866a50c47c721170b8b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Blacklist tst_QQuickShortcut shortcuts and multiple on opensuseUlf Hermann2019-02-261-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | Those are flaky. They need to be fixed. Task-number: QTBUG-74050 Change-Id: I08f17aa490afc1809823fbda3bfdbbd9ee109087 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| | * Unify and fix number to string conversion with radixUlf Hermann2019-02-251-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the loop that generated the string could fail to terminate with certain numbers as input. Also, the algorithm was duplicated in two places. Change-Id: Ie2075148d931e7cfcedb5bcd23af61e2e8afc232 Fixes: QTBUG-73999 Reviewed-by: Robert Loehning <robert.loehning@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * V4: Rotate loop in ArrayPattern and eliminate "done" labelErik Verbruggen2019-02-251-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This prevents jumping over the resetting of the unwind handler when an exception occurs. (cherry-picked from commit 0282b89ec672e25a465a8e51bc74c7fd58a624b1) Fixes: QTBUG-73985 Change-Id: I4a4da815f54c13980d239e0492f9b013991cfbd5 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| | * Update the cursor when the window is enteredAndy Shaw2019-02-251-0/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a window is entered, due to another window being hidden, then it is possible that the item under the mouse has a different cursor than the one previously set for that window. Since there will not be a mouse move at this point yet, then we should update the cursor right away. Change-Id: I2ef3c72617ae5c995a4daf7daef1ba3311fdcc12 Fixes: QTBUG-41045 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * | Use lowercase name for window headerSamuli Piippo2019-03-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Compilation otherwise fails when cross-compiling on linux, since the filename is is lowercased. Change-Id: I0b25f814543b677802cd6f07dc91964547a6028a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-03-086-58/+97
|\| | | | | | | | | | | Change-Id: I7aa5284298990062fac9d9f1ab55d05f9b225ac9
| * | QtDeclarative: replace deprecated functionsChristian Ehrlicher2019-03-046-58/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace the deprecated functions with it successors: - QProcess::finished(int) -> QProcess::finished(int, ExitStatus) - QDateTime::toTime_t() -> toSecsSinceEpoch() - QDateTime::setUtcOffset() -> setOffsetFromUtc() - QDateTime::utcOffset() -> offsetFromUtc() - QWindowSystemInterface::handleDrag/Drop(4 params) -> 6-params - QJSEngine::installTranslatorFunctions() -> installExtensions(QJSEngine::TranslationExtension) - QEasingCurve::cubicBezierSpline() -> toCubicSpline() Change-Id: I96b4b2195887396b7a5182fce2749745380f5949 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | TableModel: support built-in QML model rolesMitch Curtis2019-02-289-96/+238
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | | Fix tst_librarymetrics_performance benchmarkChris Adams2019-02-271-16/+188
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Revert "tst_librarymetrics_performance: Use QBENCHMARK macro instead of rolling our own" This reverts commit 7377e8f950d550d8823914588c35e541c48ab3ce. By using QBENCHMARK in the way 7377e8f950d550d did, engine construction and other unwanted side effects were included in each benchmark run. This commit also adds more comments to document the reasons behind using a custom benchmark harness rather than QBENCHMARK, and also to document more precisely the purpose of each individual benchmark to ensure that future maintainers don't accidentally introduce side-effects into the benchmarked code sections which could contaminate the benchmark results. Task-number: QTBUG-43096 Change-Id: Ib917bfd5a5ac59690d2e237080f995cb646d724a Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | | Upgrade Yarr to latest version from WebKitUlf Hermann2019-02-261-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is an upgrade to commit cbb0aa18662bc26da31de91e2104c030eaa6ead2 in webkit. It causes some more ecmascript tests to pass. Fixes: QTBUG-73915 Change-Id: I8bb5ff9b37907d17b1020576ba64f0b3aed2f1b3 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-02-2513-34/+223
|\| | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/qml/qqmlmetatype.cpp Change-Id: I517c001ea4eb0fdd8e469f9fffe5b7559a5b0795
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Liang Qi2019-02-229-30/+219
| |\| | | | | | | | | | | | | | | | | | | Conflicts: tests/auto/quick/qquicktableview/tst_qquicktableview.cpp Change-Id: If3bf1abc23a59c458be0bb862d92f2edcb16b79f
| | * Merge remote-tracking branch 'origin/5.12.2' into 5.12Qt Forward Merge Bot2019-02-222-30/+26
| | |\ | | | | | | | | | | | | Change-Id: If1c718780a48a3e818eb5a0c0907a31acb6c694d
| | | * Only warn about incompatible parameter types passed from QMLUlf Hermann2019-02-212-30/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Throwing a TypeError is too drastic. We need to properly deprecate this pattern before we actually enforce the compatibility. Fixes: QTBUG-73943 Change-Id: I00313ad7aed4021a7368fd014e2bfc6443b177e3 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * | QML: Pass type minor version when creating property dataUlf Hermann2019-02-213-0/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Depending on the type minor version recursive properties should be available or not. Check for that when resolving grouped properties. Fixes: QTBUG-33179 Change-Id: Id8f62befdc4a29d879710499e19d3d289bd18775 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * | Blacklist tests in tst_FlickableInteropUlf Hermann2019-02-211-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | touchAndDragHandlerOnFlickable and touchDragFlickableBehindSlider are unstable. Task-number: QTBUG-73983 Change-Id: I220869a0a6e7beb69d7273b0edc66ac067ebcd38 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| | * | QQmlDelegateModel: guard new row/column properties with revision 12Richard Moe Gustavsen2019-02-212-0/+99
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| | * | QQmlPropertyCache: support setting an explicit metaObject revisionRichard Moe Gustavsen2019-02-211-0/+21
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When creating a QQmlPropertyCache for a QMetaObject, there were currently no way to specify which revision to use. Normally this is not needed, since when creating property caches for types declared in QML, the correct revision would be filled in later, based on the import version found in the QML file. But sometimes we need to create a QQmlPropertyCache for a QMetaObject created in C++, that has no associated QML file and import version. And if that meta object has revisioned properties, we need to specify which revision of the meta object the cache should represent. Otherwise, the revision would just be 0, which means that revisoned properties would not be found by the V4 runtime later. As an example, QQmlAdaptorModel has a set of classes that wraps various models (QAIM, arrays, etc). When a new delegate item is created by a view, an instance of a model class will be created as well (from C++). This instance will be set as context object for the delegate item, enabling properties such as index, row, column and model roles. But since row and column should a revision (currently they don't), we need to be able to specify that the property cache should have a revision that matches the import version of the view. That way, we can ensure that they don't shadow any existing row and column properties that might exist in the application from before, and as such, cause regressions. This patch will add an extra argument to the constructor that lets you specify which revision of the QMetaObject to use. Task-number: QTBUG-70031 Change-Id: I1c245a0c8b6f071e35865966fedc97f2839cd2f3 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * | Only generate a warning when assigning null to incompatible propertiesUlf Hermann2019-02-224-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | Such code used to work before and we should not break it without a proper deprecation procedure. Change-Id: I049caf6ae5cc06aa796b19eda858612935b8d674 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | TableModel: add QML-invokable overloads for index(), data() and setData()Shawn Rutledge2019-02-222-0/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | | TableModel.roleDataProvider: replace row, column with index argumentShawn Rutledge2019-02-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | | Add tst_qqmltablemodel to the .pro so that it gets built and runShawn Rutledge2019-02-221-0/+1
| | | | | | | | | | | | | | | Change-Id: I2d6a5c93686bb7b53e6b467c66153907c57ac8a5 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-02-215-43/+86
|\| | | | | | | | | | | Change-Id: Ie33d1c736992abcbde6568131374a7a7891f965c
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-02-205-43/+86
| |\| | | | | | | | | | Change-Id: I69c3e6610ff590d9c18f386fc17ed2e429b58d26
| | * Avoid unnecessary re-generation qml cache files in some circumstancesUlf Hermann2019-02-182-17/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The map of name IDs to resolved types so far is copied several times during compilation and different compile passes see different copies of it. Compile passes may add things to the map, and if they do that on copies that are inaccessible to other code, we get nondeterministic results. Furthermore all the copies and pointers are confusing and inefficient. Fixes: QTBUG-69340 Change-Id: I43ad3cbeeec34f90e05570eddc901fe8aa64c709 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * QML: Don't crash the parser on certain kinds of bad inputUlf Hermann2019-02-181-0/+10
| | | | | | | | | | | | | | | | | | Fixes: QTBUG-72734 Change-Id: I92146ec517c6a26a67e13830618e137f2a3021c2 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| | * Check parameter types when invoking C++ functions from QMLUlf Hermann2019-02-172-26/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We now check if the given parameters can be converted to the expected arguments of the function being invoked and throw a type error if not. Previously we would still invoke the method with random parameters. [ChangeLog][QtQml][Important Behavior Changes] The parameters passed to C++ functions from QML are now checked for compatibility with the expected arguments. If they cannot be converted, a type error is thrown in JavaScript and the function is not invoked. Fixes: QTBUG-73405 Change-Id: If16089510d314bb7cdb7d4db86478114c61281a8 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>