aboutsummaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* Tests: Silence Clang warningsFriedemann Kleint2018-04-272-7/+5
| | | | | | | | | | | | | | | | | | | | | | | | ./stringmodel.h(63,9): warning: 'rowCount' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] int rowCount(const QModelIndex &) const ^ ./stringmodel.h(73,17): warning: 'columnCount' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] virtual int columnCount(const QModelIndex &) const ^ ./stringmodel.h(83,25): warning: 'index' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] virtual QModelIndex index(int row, int column, const QModelIndex &parent) const ./stringmodel.h(92,25): warning: 'parent' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] virtual QModelIndex parent(const QModelIndex &) const ^ ./stringmodel.h(97,14): warning: 'data' overrides a member function but is not marked 'override' [-Winconsistent-missing-override] QVariant data (const QModelIndex & index, int role) const ^ tst_qquicklistview.cpp(8695,18): warning: unused variable 'ctxt' [-Wunused-variable] QQmlContext *ctxt = window->rootContext(); Task-number: QTBUG-63512 Change-Id: Ie928981a601d0462cfadd093815d110f6971d7f5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* test: fix flaky in tst_QQuickPathView::movementDirection()Liang Qi2018-04-271-1/+3
| | | | | | | | | Due to heavy load in ci test vm, the animation perhaps didn't start after QTest::qWait(100). Task-number: QTBUG-67939 Change-Id: I8c786c82ea41c3d3514ab6bddaefb0c584f35fe0 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix qmlInfo and friends for anonymous componentsSimon Hausmann2018-04-272-0/+22
| | | | | | | | | When used on for example delegates we can and should also print the line number and column where the component is declared. Change-Id: I0f02c675425700cde119352d0001895cc31a4c73 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Normalize URL before loading typesErik Verbruggen2018-04-274-0/+36
| | | | | | | | | This prevents loading of types with slightly different paths multiple times, like "qrc:/One.qml" and "qrc:///One.qml". Task-number: QTBUG-65723 Change-Id: I6e26db6d1d271b2ed37b97eb990618843e99c372 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Make the test pass on my high resolution screenLars Knoll2018-04-251-1/+1
| | | | | Change-Id: I08e952fb8c19c21caf33ffb1cfdc260b533a01d9 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix QQuickListViewPrivate::snapItemAt for lists with spacingJohan Klokkhammer Helsing2018-04-252-0/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If lists had spacing, snapping would have gaps where snapItemAt would return nullptr eventhough there were items above and below in the list. I.e. if we have a list with items of size 100, and a spacing of 100, and scroll to 110 (right below the first item), then the first item would fail because this is false: itemTop+itemSize()/2 >= pos (50 >= 110) And the next item (the one we should have snapped to), would fail because this is false: itemTop-prevItemSize/2 < pos (200-100/2 < 110) The meaning of first part was probably to see if the middle of the current item is inside the view. The meaning of the second part was probably to see if the middle of the previous item is outside the view. This patch refactors the code so it's more visible what's happening and fixes the bug by taking the spacing into account when computing the position of the halfway positions. Task-number: QTBUG-59852 Change-Id: I60eec0d16e91d2f22d70b97d11bcde5d88ac2997 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Make the shared test code independent of QtQmlUlf Hermann2018-04-2413-52/+44
| | | | | | | | | This enables us to drop the QML dependency from a number of tests. This is desirable because we want to test that we didn't do any incompatible changes to the debug framework. Change-Id: I937dd45d3079eac15c200c9d68bb4c911f61afc0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Make QtQmlDebug independent of QtQmlUlf Hermann2018-04-241-47/+37
| | | | | | | | | | | | | | | | This means QtQmlDebug needs its own qqmlprofilerdefintions.h. This is a good thing because this way we notice if we change the definitions in an incompatible way. The test uses QtQmlDebug after all. Also, qqmldebugserviceinterfaces_p.h is not available anymore, which means the service names have to be spelled out. This, also, is beneficial as it prevents us from accidentally changing the names. In the context of QmlDebug we don't need to namespace the profiler definitions, either. This simplifies some code. Task-number: QTBUG-60996 Change-Id: Ibb39e48c9b758687d68b8ce4431f45eb26939a09 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Update submodule now that I've fixed the actual bug hereEdward Welbourne2018-04-231-0/+0
| | | | | | | | | | | The submodule has now reverted my "fix" for a test the ES spec initially lead me to think was misguided; the test is fine, in fact, but I was using the wrong time-zone to run it. That's now fixed here, so we can take in the revert of the mis-fix. Task-number: QTBUG-67010 Change-Id: I89c8236ce11ee4dc16eb145e37f4510e19977bb2 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Use Los Angeles to represent PST8PDT, not VancouverEdward Welbourne2018-04-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | This amends commit 2b8b7a162be52f8cd6c2bc39f498a1ddfb59dd68. The very last test (15.9.5.43-0-8) in the ES test-suite relies on constructing a time *just* outside the valid range, to provoke (and check it gets) a RangeError. However, it uses the current time-zone offset in computing this; and the local time -> UTC conversion in the Date constructor uses the zone information for the zone at the given time. The TZ db uses each zone's local mean solar time for the period before a formal zone was introduced; and Vancouver is further West than the nominal meridian for its zone. The test code throws in an hour's correction in case it's run in daylight-saving time, which would put the test time, when run during standard time, an hour (and a millisecond, rather than just the millisecond) outside the valid Date range, so as to ensure it's still a ms outside when the test is run during DST. However, the 12m28s mean solar offset overcomes the 1ms and puts the time back in range durign DST (but still 47m32.001s outside during standard time, which is why this problem only surfaced when North America entered summer time). Fortunately, Los Angeles is further East than the meridian in question, and uses the same zone. Task-number: QTBUG-67010 Change-Id: I58fd7bf14366ebe5842b8abd7e6802c9c78ca27e Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix Text with ElideRight not being rendered when reparentedMitch Curtis2018-04-172-0/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider the following example: Item { width: 100 height: 30 Text { width: parent ? parent.width : 0 height: parent ? parent.height : 0 elide: Text.ElideRight text: "wot" } } When setting the Text item's parent to null, its explicit width and height are set to 0. When restoring its parent (the Item), its explicit width and height are set to 100 and 30 again, but the text itself is still not rendered. The cause can be seen here: if (!(widthChanged || widthMaximum) && !d->isLineLaidOutConnected()) { // only height has changed if (newGeometry.height() > oldGeometry.height()) { if (!d->heightExceeded) // Height is adequate and growing. goto geomChangeDone; heightExceeded was false, because 30 > 12 (or whatever the implicit height happened to be), so the text was not laid out again, even though it went from having an explicit height of 0 to an explicit height of 30. Fix the issue by only executing the goto if the old explicit height wasn't 0. Task-number: QTBUG-60328 Task-number: QTBUG-67145 Change-Id: I7f4d2f95bc95c850133ba91ac2d1a02c7ee159b6 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
* Fix calling Qt.binding() on bound functionsLars Knoll2018-04-163-0/+59
| | | | | | | | | | | | | | | | | | | Calling Qt.binding() on a bound function object is a valid use case and used to work until Qt 5.8. The problem was that we optimized the code in QQmlBinding and QQmlJavascriptExpression to directly work on a QV4::Function, so this wouldn't work anymore. To fix this make sure recursive calls to Function.bind() are unrolled (so that the BoundFunction's target is never a bound function itself), then add the bound function as an optional member to the QQmlBinding and use it's bound arguments if present. Task-number: QTBUG-61927 Change-Id: I472214ddd82fc2a1212efd9b769861fc43d2ddaf Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix JSON.stringify with sequence typesSimon Hausmann2018-04-162-6/+21
| | | | | | | | | | Stringify::JA takes an ArrayObject* but it merely gets the length property and does indexed get calls. Those work also on array-like objects such as our sequence wrappers. Task-number: QTBUG-45018 Change-Id: I4ec4f89a2e09c918fbc2ff1d48ae5915e67ce280 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Doc: Describe new 5.11 features in Image elementv5.11.0-beta4Eirik Aavitsland2018-04-131-0/+1
| | | | | | | | Add user documentation of the compressed texture file support and the file extension auto detection. Change-Id: Icfae8574dd3acba30e8275ccd6ff3438fa037868 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Pass on tab presses to the offscreen window to handle firstAndy Shaw2018-04-113-1/+156
| | | | | | | | | | | | | | When pressing tab/backtab then the offscreen window needs to pass it on to the item in case it will handle this for changing focus. If it does not handle the event, it will pass it back for QWidget handling. [ChangeLog][QQuickWidget] Tab presses are now passed on to the root item to be handled first. When not handled by the root item, it will be handled like a standard QWidget. Task-number: QTBUG-45641 Change-Id: Ief0552ba496c87ab0b6e12aa8e67ef44b5a20ae2 Reviewed-by: Liang Qi <liang.qi@qt.io>
* Warn about non spec compliant extension being usedLars Knoll2018-04-112-4/+4
| | | | | | | | | | | | eval("function(){}") would return a function object in our engine. This is not compliant with the ES spec, so warn about it, as it'll start throwing a syntax error in 5.12. Also fix the two places where we were using that syntax in our auto tests. Change-Id: I573c2ad0ec4955570b857c69edef2f75998d55a9 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix XMLHttpRequest when used with QQmlEngine::evaluateSimon Hausmann2018-04-092-0/+37
| | | | | | | | | | | | | | | | | | | | | | | Our XHR implementation insists on a valid QQmlContext when processing callbacks. This is to protect against callbacks being triggered after dynamic QML contexts such as delegates have been destroyed. Unfortunately those checks are too strict and make it impossible to use XHR from within plain JS scripts (where v4->callingQmlContext() will return a null pointer). Dispatching the callbacks in functions that are directly called from QML/JS is safe and something we can do unconditionally. This applies to the callbacks triggered from abort() and open() for example. When we're called from QNetworkAccessManager we should enforce the continued existence of a QML context only if it was present at send() time. Task-number: QTBUG-67337 Change-Id: I8235f6ef407adc3eaeeff4eee72238ba6750afb2 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Valery Kotov <vkotov@luxoft.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QQmlDebuggingEnabler test: Relax output string conditionUlf Hermann2018-04-061-4/+8
| | | | | | | | | | | | Apparently the "qml: " prefix to strings output via console.log() is not reliable. We can also get "qml <function> - ", as seen in the test log. Also, increase the timeouts. The test log indicates that they are too small. Change-Id: Icb0da329e52273f9300504047b79b1ad41c02892 Task-number: QTBUG-67505 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* QmlProfiler test: Keep recording until we receive the needed eventsUlf Hermann2018-03-281-2/+15
| | | | | | | | We can apparently catch the engine at a point where it has already registered but not compiled anything. Change-Id: I09cd7fefe731a61a6f2095e125516ecf57c602cb Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix QQmlExpression::hasError()/error() on syntax errorsSimon Hausmann2018-03-271-1/+5
| | | | | | | | | | | | Record errors that happen during QV4::Script::parse() time in the same way as we record errors during binding evaluation, in order to correctly set the error state of QQmlExpression. This also removes dead code about setting line, description, etc. which is taken care of by ExecutionEngine::catchExceptionAsQmlError. Task-number: QTBUG-67240 Change-Id: I2d586e16803d0883cdd2d1d262b4c67202c00562 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Fix CONFIG+=qtquickcompiler with paths that contain spacesSimon Hausmann2018-03-274-0/+25
| | | | | | | | Map spaces to underscores as well. Task-number: QTBUG-54683 Change-Id: Id73c086a2845111623df631c06733ba2b42249e0 Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* qtquick_compiler_add_resources() with spaces in pathsSimon Hausmann2018-03-273-2/+2
| | | | | | | | Ensure a quoted path when constructing the command line for rcc -list. Change-Id: I43e31015e3de58f65f46d2e594cb362d71b123ed Task-number: QTBUG-57758 Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
* Improve QtQuickCompiler cmake testsSimon Hausmann2018-03-274-6/+31
| | | | | | | | Perform not only a build test when running the cmake tests, also run the resulting testlib based binary to verify the toolchain end to end. Change-Id: Ic962edf10b810b36f3feb68df55e7230841865d6 Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
* Qml Profiler: Store and send URL of compile eventsUlf Hermann2018-03-271-0/+36
| | | | | | Task-number: QTBUG-67354 Change-Id: I7251095570d5ba8d0a62d854cfcbc339b2455747 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Use a separate process for testing perf.map fileUlf Hermann2018-03-274-68/+99
| | | | | | | | | | | | The environment change was too fragile. If the JIT ran before the relevant test function was executed, it would set the doProfile flag to false, and never re-evaluate the environment variable. The qmljs binary is only available for private tests, and the test didn't quite fit into qjsengine anyway. Therefore a new test for the QV4Assembler class that genertes the map files is added. Change-Id: Ice0c18daaee9f0f4f0f15eba0261bcc01aa4b105 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QML Tooling: Wait for QML trace to be started in QML profiler testUlf Hermann2018-03-271-0/+3
| | | | | | | | | | If we don't wait for anything else, we need to wait for at least the "trace started" message before we disable profiling. Otherwise we might disable the profiling before the first engine registers, which will give us no trace at all. Change-Id: I9fb64e82bd05c60640ffbbd2ece5e99edfa97f4a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Add test for jump strict-not-equal undefined on 32bitErik Verbruggen2018-03-261-0/+21
| | | | | | | | | | | | Commit 86702c3be53fda404ebe331207f9062675c952e0 and e2218f8b5c527a6da52ae4dc8a381b3ff68d3cd0 were submitted directly to the 5.9 and 5.6 branches. As the problem does not exist per-se in 5.11 there is no fix required. This commit only adds the test coverage for this issue to avoid regressing. Change-Id: Ic5f5d56f52f3855d20755f771804025f8a93acd9 Task-number: QTBUG-66832 Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Handle function expressions in SignalTransitionMichael Brasser2018-03-211-1/+0
| | | | | | | | Extend 22b13921f8067f8a93164875a4ad59bed85b0400 to SignalTransition. Change-Id: Ic7d03353efaa7ba894b913e5b0bc193d648d21df Task-number: QTBUG-50328 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix QQmlListModel crash when appending an empty array in debug modeDaniel Vrátil2018-03-201-0/+22
| | | | | | | | | Calling QQmlListModel::append() with an empty JS array triggers an assert in QAbstractItemModel::beginInsertRows() because it's called with negative "last" parameter. Change-Id: I202da260d79f2e6677c663c5785ff754c715fef8 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix QML data structure version checking for ahead-of-time generated filesSimon Hausmann2018-03-205-3/+54
| | | | | | | | | | | | | | | | | | We must also do version checking for QML and JS files that were compiled ahead of time and are embedded in resources. If the lookup for the original source code fails, then we must generate an appropriate error message. As an upside we get better error reporting when trying to load an empty file and Qt.include() now reports the error message in the statusText field. The error reporting for imported scripts was not changed as importing an empty script is (oddly) allowed. Task-number: QTBUG-66986 Change-Id: Ie0ef81af371a51ecf8c66ae7954d43f5cc6c12de Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Handle function expressions as signal handlersErik Verbruggen2018-03-201-0/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two ways to use function expressions on the right-hand side of bindings: property var somethingPressed somethingPressed: function() { /* ..press something else.. */ } signal buttonPressed onButtonPressed: function() { /* ..handle buttonPress.. */ } In the former case, it declares a property that holds a function. So on initialization, the right-hand side of the binding returns a closure that gets assigned to the property 'somethingPressed'. In the latter case, the signal handler is explicitly marked as a function for clarity. So, the handler should not be returning the closure, but the handler should *be* the closure. In general, it is not possible to detect if the left-hand side is a property or a signal handler when generating QML cache files ahead of time. So for this case, we mark the function as only returning a closure. Then when instantiating the object, we check if it is a signal handler, and if the handler is marked as only returning a closure. If so, we set that closure to be the signal handler. Task-number: QTBUG-57043 Task-number: QTBUG-50328 Change-Id: I3008ddd847e30b7d0adef07344a326f84d85f1ba Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix assigning objects to QJSValue propertiesSimon Hausmann2018-03-202-0/+6
| | | | | | | | | | | | | | We support simple object bindings such as someProperty: Rectangle { ... } when the type of "someProperty" is QVariant, but we produce an error when it's QJSValue. There is no good reason for that, and the fix for QTBUG-67118 requires this. Change-Id: Ia5dc88749bcba0b5c781a6ab2b4a9fb92299e0ac Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* tests: un-blacklist tst_qquickitem::ignoreButtonPressNotInAcceptedMouseButtons()Gatis Paeglis2018-03-201-2/+0
| | | | | | | | | | This change reverts 8740f35e69 and 8ef46910fc. The qtestlib limitation was fixed by b3e91b66b9175c1c3ff5f73f3ac231f74f9bf932 Task-number: QTBUG-63957 Change-Id: I2e12b1eff25c5ea8005db0893477a9732f24d211 Reviewed-by: Liang Qi <liang.qi@qt.io>
* Fix out of bounds reads in Array.concatLars Knoll2018-03-201-0/+14
| | | | | | | | | | In some cases, when our simple array data had an offset and data would wrap around, ArrayData::append would write out of bounds data into the new array, leading to crashes. Task-number: QTBUG-51581 Change-Id: I55172542ef0b94d263cfc9a17d7ca49ec6c3a565 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* QML debugger: Don't crash when creating objects on engine destructionUlf Hermann2018-03-191-0/+24
| | | | | | | | | | You can create further objects while the QML engine is being destroyed. The debug service is not interested in those because they will be rather short lived anyway. Task-number: QTBUG-62458 Change-Id: If5395ef058268e0e956d159bc636495da1c0c98f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Restore the QV4_WRITE_PERF_MAP featureUlf Hermann2018-03-191-0/+68
| | | | | | | | We want to be able to generate perf map files for JITed code. Task-number: QTBUG-67056 Change-Id: I56899e1dbf184083d94efe926d21fca4f9ea1e18 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Pass "this" object when evaluating debug jobsUlf Hermann2018-03-171-0/+32
| | | | | | | | | We have to explicitly specify the "this" object on QV4::Function::call, otherwise it will assume undefined or the QML global object. Task-number: QTBUG-66942 Change-Id: I1af7742b4fee1b49e9760a413834daf3edb15d74 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Add a test that verifies the this object in signal handlersSimon Hausmann2018-03-172-13/+25
| | | | | | | | | | Ask expected, this passes currently. The this object is set to the scope object in QQmlJavaScriptExpression::evaluate, which QQmlBoundSignalExpression::evaluate calls. Task-number: QTBUG-66942 Change-Id: I16a709768f9c798910377a52b5e882bb6d554a5f Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Fix lookup of enums declared in QML singletonsSimon Hausmann2018-03-163-0/+9
| | | | | | | | | | | | | | | | | | | | | Given the following expression var x = MySingleton.MyEnumValue where MySingleton is a QML (composite) singleton and MyEnumValue comes from a QML declared enum, we had code in place up to (and including) 5.10 to attempt to optimize that expression to a enum constant at compile time. In 5.10 that optimization does not exist anymore. In <= 5.10 we would also skip the optimization under certain circumstances (too many statementes, etc.). The fallback that is in place for handling this at run-time tried to be smart by avoiding the QQmlContextWrapper::get lookup and return straight a reference to the singleton as QObject. That works for regular property lookups, but it fails when trying to look up something like an enum, that isn't a meta-object property. Change-Id: I1819b9d8ae06a3f595e067bf5b018c4065be76bb Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* When deactivating a loader, do not immediately clear its contextErik Verbruggen2018-03-162-0/+116
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 2eb2d6386da304cd1164264ae0bff685c796d89c, deactivating/clearing the loader would now prevent any subsequent bindings from being evaluated. The problem there was that the item created by the loader wouldn't have a parent item (among things) anymore, so references to it in the bindings would result in errors. The way to prevent it was done by invalidating the context of the item, which in turn would detach it from the root context. This is a problem if objects in the root context are referenced after deactivating/clearing the loader: onSomethingChanged: { loader.source = "" objectInRootContext.doIt() } This would result in a ReferenceError when resolving objectInRootContext and break the behavior present before the fix mentioned above. The correct way is to recursively clear the context set on all bindings, but leave everything in place. This way, no subsequent bindings will be evaluated, but the currently "running" scripts will still be able to reach the root context. Task-number: QTBUG-66822 Change-Id: Ic9c2ab0a752093a26967da4783cb4c29cf83d2ca Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Scale up SVG images if source size is larger than original sizeAndy Shaw2018-03-154-1/+21
| | | | | | | | | | | | | | Since SVG images can be scaled up without any loss of quality then we should allow this to happen even though it is not done for other image formats. This restores the 5.9.x behavior for SVG images. Additionally the manual test is updated to showcase an embedded image inside a SVG one to indicate this is continuing to work as before too. Task-number: QTBUG-67019 Change-Id: Ia719899937f8146e8fab50aa85adf18e2f79aa98 Reviewed-by: Evangelos Foutras <evangelos@foutrelis.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* tests: add autotest for Q_GADGET derived template classNils Jeisecke2018-03-141-0/+29
| | | | | | | | This tests the effectivity of the qtbase fixes for QTBUG-66744. Task-number: QTBUG-66744 Change-Id: I5bb041082ae4ce6cb91076c3f1279ac7bdcae4f0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Fix failing ch15.9.5.43-0-8 after US summer time changeSimon Hausmann2018-03-121-0/+0
| | | | | | | | | | Eddy fixed the issue in the testsuite itself and this change bumps the submodule to include the fix. (It also brings in the .gitignore fix, which was omitted from an earlier merge by accident). Task-number: QTBUG-67010 Change-Id: I006a2c8babb135187eeb5c296b616e7c1208cd4c Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* Fix issue with bindings to aliases that cannot yet be resolvedErik Verbruggen2018-03-092-0/+25
| | | | | | | | | | | | | | When an alias points to a child object which has not yet been initialized, it's id won't have been registered yet, so setting up a binding to it will result in a crash. The fix is: when setting a binding target fails, and its target property is an alias, queue them until all bindings have been set up, and try again. Task-number: QTBUG-57041 Change-Id: I4dc5a6d25c0a32fed9fd952c955e2006c76be45a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* Clean up memory leaks in testsSimon Hausmann2018-03-081-272/+196
| | | | | | | | | | A call to QQmlComponent::create() transfer ownership of the created object to the caller. Many tests forgot to delete the object or only deleted it manually if all tests passed. The simplest way to avoid leaks this way is to store the returned value in a QScopedPointer. Change-Id: I6173f440eddedd4f3eab5026f710602a263246c9 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix unnecessary evaluation of dependent bindingsSimon Hausmann2018-03-083-0/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Given two simple bindings in this order property int firstVar: secondVar property int secondVar: ... then the binding expression for "secondVar" ends up being evaluated twice at run-time. The first time happens when enabling the binding expression for "firstVar", which results in the engine detecting that there is a dependency onto another binding that has not been enabled yet. This is when QQmlData::flushPendingBinding(Impl) enables the expression for secondVar and does an initial evaluation. Afterwards the QQmlObjectCreator continues enabling the next binding in ::finalize(), which will end up evaluating secondVar a second time, unnecessarily. We can detect this case inside setEnabled and only call update() if we transition from disabled to enabled state. This should also cover the case of bindings created and assigned dynamically through QtQuick PropertyChanges / States, as those call setEnabled(false) before removing the binding (to replace it with something else) and setEnabled(true) when reverting the state (in QQmlPropertyPrivate::setBinding). Change-Id: I447432891eabff2c4393f5abfee1092992746fa0 Task-number: QTBUG-66945 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix group property bindings for aliases that point to id objectsSimon Hausmann2018-03-082-0/+26
| | | | | | | | | | | | | | | | | | When declaring bindings within a group property and that group property itself is a locally declared alias, then by the time we try to determine property caches for the group property we will fail as the aliases haven't been resolved yet. To fix this we can keep track of such group property declarations (encapsulated in the QQmlInstantiatingBindingContext that has all we need) and after we've resolved the aliases (added them to the property caches), we can go back and fill in the entries in the propertyCaches array for the group properties. Task-number: QTBUG-51043 Change-Id: I5613513db3977934bcc51a3df530de47d57326f9 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Fix calling Qt.createComponent() from QQmlEngine::evaluate()Simon Hausmann2018-03-081-0/+12
| | | | | | | | | | | | | If we're run from a top-level evaluate() call from the JS engine, then let's assume that any created components are top-level components that belong to the root QML engine context. This is not quite a typical use-case, but our API allows for this and this seems like an easy and sensible solution. Task-number: QTBUG-66792 Change-Id: Ic1c9171c257e8e60c0b2c43f9194bd038744ed2d Reviewed-by: Oleg Yadrov <oleg.yadrov@qt.io> Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Fix regression involving aliases on case-insensitive file systemsMitch Curtis2018-03-082-0/+21
| | | | | | | | | | | | | | When initializing a QQmlProperty with the following syntax: QQmlProperty property(root, "testType.objectName", QQmlEngine::contextForObject(root)); only try to look up types (for each token after splitting on the '.') if the token starts with an uppercase letter, as 1e350a8c now enforces that type names begin with an uppercase letter. Task-number: QTBUG-66715 Change-Id: Iab64be1deb971dca256fc65d358c773837222a57 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* tests: refactor and un-blacklist tst_QQuickMouseArea::pressedMultipleButtonsGatis Paeglis2018-03-082-85/+72
| | | | | | | | | | | | | | | | | It seems that qtestlib has never really supported mouse state handling for multiple buttons (see QTBUG-64030). And the current implementation of this test relied on QGuiApplication to generate mouse releases when necessary. Since a37785ec7638e7485112b87dd7e767881fecc114, qtestlib does not rely on QGuiApplication to deduce mouse button state, but requires explicit mouse press/release events via QTest::mouse* APIs, thus causing this auto test to fail. Refactor the auto test to use QTest::mouse* APIs. This change depends on a fix for QTBUG-64030. Task-number: QTBUG-63786 Change-Id: Id24526714ec9716a0126e8288e5e8974074ebc9e Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>