diff options
author | Liang Qi <liang.qi@qt.io> | 2017-12-08 13:57:48 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-12-08 13:57:48 +0100 |
commit | 8283bc83857ed8c7d85b61d2dc3b35fa4e96a037 (patch) | |
tree | 51822ff6eac9bd96693657c8f648fafccb0bd69f | |
parent | f98e83d66c4315e58f777150e129e25fdaa4312f (diff) | |
parent | dac71f3d6f6bc4f159f6107c792bc70cfe7c308e (diff) |
Merge remote-tracking branch 'origin/5.10.0' into 5.10
Change-Id: I92858e9bcccc45aff3792eeb24920181fbf12b4d
-rw-r--r-- | dist/changes-5.10.0 | 188 | ||||
-rw-r--r-- | dist/changes-5.9.3 | 73 | ||||
-rw-r--r-- | src/qml/debugger/qqmlprofiler_p.h | 11 | ||||
-rw-r--r-- | src/qml/qml/qqmlimport.cpp | 10 | ||||
-rw-r--r-- | src/qml/qml/qqmlmetatype.cpp | 4 | ||||
-rw-r--r-- | src/qml/qml/qqmltypeloader.cpp | 10 | ||||
-rw-r--r-- | src/qml/types/qqmldelegatemodel.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 19 | ||||
-rw-r--r-- | src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp | 9 | ||||
-rw-r--r-- | tests/auto/qml/debugger/qqmlprofilerservice/data/qstr.qml | 9 | ||||
-rw-r--r-- | tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro | 3 | ||||
-rw-r--r-- | tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp | 20 | ||||
-rw-r--r-- | tests/auto/qml/qqmllanguage/data/circularSingleton.qml | 6 | ||||
-rw-r--r-- | tests/auto/qml/qqmllanguage/data/singleton/circular/MySingleton.qml | 12 | ||||
-rw-r--r-- | tests/auto/qml/qqmllanguage/data/singleton/circular/qmldir | 1 | ||||
-rw-r--r-- | tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp | 17 | ||||
-rw-r--r-- | tests/auto/quick/qquickflickable/BLACKLIST | 3 |
17 files changed, 374 insertions, 23 deletions
diff --git a/dist/changes-5.10.0 b/dist/changes-5.10.0 new file mode 100644 index 0000000000..e98bc8e4d9 --- /dev/null +++ b/dist/changes-5.10.0 @@ -0,0 +1,188 @@ +Qt 5.10 introduces many new features and improvements as well as bugfixes +over the 5.9.x series. For more details, refer to the online documentation +included in this distribution. The documentation is also available online: + +http://doc.qt.io/qt-5/index.html + +The Qt version 5.10 series is binary compatible with the 5.9.x series. +Applications compiled for 5.9 will continue to run with 5.10. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* General * +**************************************************************************** + + - Added the QtQuick.Shapes plugin providing the Shape and ShapePath + types for rendering geometry-based stroked and filled paths. + Various types of Path existed already for defining movement trajectories + in PathView, but now they can be rendered too. + * PathLine, PathQuad, PathCubic, PathArc, PathCurve, and PathSvg + * Fill: solid color, linear, radial or conical gradients + * Stroke: colored and dashed lines + * Uses GL_NV_path_rendering on recent nVidia GPUs + + - Added the Qt.labs.handlers plugin, providing a Tech Preview version + of Pointer Handlers. These are intended as an improved way of handling + gestures and events from pointing devices (mouse, touchpad, and + touchscreen so far; stylus devices are coming in a future release). + Properties acceptedButtons, acceptedModifiers, acceptedDevices, and + acceptedPointerTypes enable scoping their reaction for specific use + cases, but by default, they work equally well with mouse (as applicable) + and touch devices. So far we have four of them available in QML: + * TapHandler is for detecting clicks and taps, double-clicks, + multi-clicks and taps, and long presses. + * DragHandler provides a way of declaring an Item draggable, and also + has properties which can be used for bindings to achieve + less-mainstream use cases. + * PinchHandler can react to a pinch gesture using two or more fingers + (as configured via properties) or to a native pinch gesture from the OS. + Declaring an instance inside an Item is enough to support pinching to + scale, rotate and move that Item; and it also has properties available + for bindings to enable other use cases. + * PointHandler does not directly manipulate an Item, but just provides + information about individual touchpoints or the mouse, for binding + purposes. It is intended mainly for interactive feedback, orthogonal + to whichever Handler or Item currently has the exclusive grab. + Along with this, control over grabbing has gotten more fine-grained: + the grabPermissions property in a Pointer Handler sets rules for how + Pointer Handlers and Items negotiate for the exclusive grab; and some + Pointer Handlers are able to handle some kinds of interaction with a new + type of grab, the passive grab. There are several new logging categories + you can enable to see how event delivery is done, the grab transitions, + and so on. + + As usual with Tech Preview material, we reserve the right to change it + substantially in future releases. + +**************************************************************************** +* Library * +**************************************************************************** + +QmlTest +------- + + - The returned object from TestCase::grabImage now has 'width', 'height', + and 'size' properties for additional verification. In addition, there is + a save() method to be able to persist the grabbed image to disk (for + diagnostics purposes, for example). + +Qt Quick +-------- + + - [QTBUG-58945] Added the properties ShaderEffectSource.samples and + Item.layer.samples to allow requesting MSAA rendering of an item + subtree, without enabling multisampling for the entire scene. + - [QTBUG-59462] Added support for samplerExternalOES sampler type in + ShaderEffect + - [QTBUG-60268] Added Qt.platform.pluginName property. + - [QTBUG-60268] Selecting software as default renderer moved from build + time to run time + - Resizing is done by setSize() in a couple of places, such that + the widthChanged() and heightChanged() are emitted after both + properties are updated. + + - Flickable: + * [QTBUG-38515] Added a boundsMovement property that allows disabling + the default bounce effect and implementing custom edge effects. + + - Item Views: + * [QTBUG-34576] ListView velocities remain correct during index-based + programmatic scrolling + + - Important Behavior Change: + * [QTCREATORBUG-15000] The implicitWidthChanged2 and + implicitHeightChanged2 signals of QQuickImplicitSizeItem have been + removed. Although these were undocumented and hence private API, any + applications currently using them should use the public + implicitWidthChanged and implicitHeightChanged signals. + + - Item: + * Add QQuickItem::size() and document QQuickItem::setSize(). + * When subclassing QQuickItem, you should call setAcceptTouchEvents(true) + if you need the item to receive touch events. It will be required later on. + * Added a ItemEnabledHasChanged value to the ItemChange enum. + QQuickItem::itemChange(ItemEnabledHasChanged) gets called when the + item's effective enabled state has changed. The new enabled state is + stored in ItemChangeData::boolValue. + + - Window: + * It is now possible to set the default render type of text-like + elements globally via the QQuickWindow::setTextRenderType() function. + If you were using the (undocumented) QT_QUICK_DEFAULT_TEXT_RENDER_TYPE + macro when building Qt Quick for the same purpose, note that the macro + value needs now to be set to the "NativeTextRendering" value, instead + of "NativeRendering". + + - Screen: + * Added manufacturer, model and serial number. + + - TextEdit: + * Added tabStopDistance property + + - Text: + * [QTBUG-56728] Added "advance" property to Text element. + * [QTBUG-56728] Added "font.preferShaping" property to Text, TextEdit + and TextInput. This makes it possible to improve performance at the + expense of some cosmetic font features. + * [QTBUG-56728] Added "kerning" property to the font type to support + disabling kerning on text. + * [QTBUG-61984] Fixed an issue when the family of an application font + was hardcoded and applied to text before the font itself was loaded. + + - Image: + * [QTBUG-59872][QTBUG-29451] Allow direct loading of pkm texture files + into Image. For example: Image { source: "myImage.pkm" } + + - QtTest: + * [QTBUG-53381] Added keySequence() function in TestCase. + +QtQml +----- + + - [QTBUG-58493] "const" variable declarations are now available in JS as + well as QML mode. + - [QTBUG-58493] "const" variable declarations now require an initializer, + bringing them closer to the required spec behavior. + - [QTBUG-58493] "const" variable declarations now throw a SyntaxError if + multiple attempts to declare the same variable name are found. Note that + "const" is still not fully spec-compliant (i.e. reassignment at runtime + is not disallowed). + - Object.assign from the ES6 specification is now implemented. + - Number now contains the MAX_SAFE_INTEGER, MIN_SAFE_INTEGER, isInteger + and isSafeInteger properties from the ES6 specification. + - [QTBUG-24799] The instanceof keyword in JavaScript has been extended to + work on QML types and instances. This means that you are now able to use + it to verify that a var is indeed the type you expect (e.g. someVar + instanceof Rectangle). + - [QTBUG-54961] Support C++11 scoped enums in QML. These can now be + accessed as <TypeName>.<EnumName>.<EnumValue> + - The QML engine can now emit informational messages (in the + "qt.qml.binding.removal" logging category) whenever a binding is lost + due to an imperative assignment. This can be used to debug issues due to + broken bindings. + - [QTBUG-61599] Allow sending binary data, encoded as ArrayBuffer objects, + via XMLHttpRequest's send() method. + - [QTBUG-14861] Enums can now be declared directly in QML. + - [QTBUG-63464] Fix Number.isNaN() returning incorrect values with some + glibc versions. + - [QTBUG-52515] Qt.platform.os returns "qnx" when running on QNX + platforms. + - [QTBUG-60133] std::vector and QVector are now on par with QList as a + Q_INVOKABLE return type and as a property type + + - QQmlEngine: + * [QTBUG-15602] Added retranslate() slot and QEvent::LanguageChange + support to refresh bindings when changing the language at runtime. + +qmlscene +-------- + - Added --core-profile option to request that type of OpenGL context + - Added --apptype option to set the application class (like the qml + runtime tool already had) diff --git a/dist/changes-5.9.3 b/dist/changes-5.9.3 new file mode 100644 index 0000000000..825941df23 --- /dev/null +++ b/dist/changes-5.9.3 @@ -0,0 +1,73 @@ +Qt 5.9.3 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.9.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +http://doc.qt.io/qt-5/index.html + +The Qt version 5.9 series is binary compatible with the 5.8.x series. +Applications compiled for 5.8 will continue to run with 5.9. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Qt 5.9.3 Changes * +**************************************************************************** + +QtQml +----- + + - [QTBUG-63464] Fix Number.isNaN() returning incorrect values with some + glibc versions. + - [QTBUG-52515] Qt.platform.os returns "qnx" when running on QNX + platforms. + - [QTBUG-63200] Deferred property assignments in inner contexts are now + executed properly + - [QTBUG-63733] Fixed a crash during object deletion due to a dangling + pointer + - [QTBUG-64017] Fixed a circular dependency problem which caused a + failure when using QML singletons + +QtQuick +------- + + - Global: + * [QTBUG-61679] Input method events now work in QQuickWidget + * Loader and Flickable use setSize() to resize the inner Item in one + transaction rather than setting width and height separately. + This makes the state consistent by the time the change signals are emitted. + * Optimized rendering of opaque pixmaps, 9-patches and layers in the + software renderer + * [QTBUG-61434] Fixed a crash on exit by ensuring that a PointerEvent + instance is created only in response to an actual incoming event, + not because of checking the mouseGrabberItem at shutdown, and by + explicitly destroying the instances at the right time. + + - QQuickWidget: + * [QTBUG-61798] QQuickWidget is repainted properly when moving between + screens + * [QTBUG-45557] Mouse enter and leave events are now correctly forwarded + to MouseAreas inside a QQuickWidget + + - Item Views: + * [QTBUG-62607] Fixed a crash and a memory leak related to moving Items + in Item Views + * [QTBUG-57225][QTBUG-57225] GridView's removeDisplaced animation + occurs reliably and at the right time + * [QTBUG-61269][QTBUG-62864] Changes in a ListView's model no longer + disrupt the movement of an animated highlight item + * [QTBUG-34576] ListView's calculated velocity remains correct during + index-based scrolling + * [QTBUG-63974] ListView.positionViewAtIndex now works correctly + in the presence of sticky headers and footers + + - Platform Specific Changes: + * [QTBUG-63835] iOS selection handles are shown properly when selecting + all text in a TextEdit diff --git a/src/qml/debugger/qqmlprofiler_p.h b/src/qml/debugger/qqmlprofiler_p.h index 88f8e94f25..6dc9859295 100644 --- a/src/qml/debugger/qqmlprofiler_p.h +++ b/src/qml/debugger/qqmlprofiler_p.h @@ -237,14 +237,19 @@ public: // Add 1 to the ID, to make it different from the IDs the V4 profiler produces. The +1 makes // the pointer point into the middle of the QV4::Function. Thus it still points to valid // memory but we cannot accidentally create a duplicate key from another object. - quintptr locationId(id(function) + 1); + // If there is no function, use a static but valid address: The profiler itself. + quintptr locationId = function ? id(function) + 1 : id(this); m_data.append(QQmlProfilerData(m_timer.nsecsElapsed(), (1 << RangeStart | 1 << RangeLocation), Binding, locationId)); RefLocation &location = m_locations[locationId]; - if (!location.isValid()) - location = RefLocation(function); + if (!location.isValid()) { + if (function) + location = RefLocation(function); + else // Make it valid without actually providing a location + location.locationType = Binding; + } } // Have toByteArrays() construct another RangeData event from the same QString later. diff --git a/src/qml/qml/qqmlimport.cpp b/src/qml/qml/qqmlimport.cpp index 334bc8b28e..a7cafa1a93 100644 --- a/src/qml/qml/qqmlimport.cpp +++ b/src/qml/qml/qqmlimport.cpp @@ -1231,10 +1231,12 @@ QString QQmlImportsPrivate::resolvedUri(const QString &dir_arg, QQmlImportDataba stableRelativePath.replace(Backslash, Slash); // remove optional versioning in dot notation from uri - int lastSlash = stableRelativePath.lastIndexOf(Slash); - if (lastSlash >= 0) { - int versionDot = stableRelativePath.indexOf(Dot, lastSlash); - if (versionDot >= 0) + int versionDot = stableRelativePath.lastIndexOf(Dot); + if (versionDot >= 0) { + int nextSlash = stableRelativePath.indexOf(Slash, versionDot); + if (nextSlash >= 0) + stableRelativePath.remove(versionDot, nextSlash - versionDot); + else stableRelativePath = stableRelativePath.left(versionDot); } diff --git a/src/qml/qml/qqmlmetatype.cpp b/src/qml/qml/qqmlmetatype.cpp index 8e6be538ef..0f388cf7b7 100644 --- a/src/qml/qml/qqmlmetatype.cpp +++ b/src/qml/qml/qqmlmetatype.cpp @@ -274,8 +274,10 @@ void QQmlType::SingletonInstanceInfo::init(QQmlEngine *e) QQmlData::ensurePropertyCache(e, o); } else if (!url.isEmpty() && !qobjectApi(e)) { QQmlComponent component(e, url, QQmlComponent::PreferSynchronous); - QObject *o = component.create(); + QObject *o = component.beginCreate(e->rootContext()); setQObjectApi(e, o); + if (o) + component.completeCreate(); } v4->popContext(); } diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp index 8e9f57f661..128e37d51b 100644 --- a/src/qml/qml/qqmltypeloader.cpp +++ b/src/qml/qml/qqmltypeloader.cpp @@ -2409,7 +2409,15 @@ void QQmlTypeData::dataReceived(const SourceCodeData &data) void QQmlTypeData::initializeFromCachedUnit(const QQmlPrivate::CachedQmlUnit *unit) { m_document.reset(new QmlIR::Document(isDebugging())); - unit->loadIR(m_document.data(), unit); + if (unit->loadIR) { + // old code path for older generated code + unit->loadIR(m_document.data(), unit); + } else { + // new code path + QmlIR::IRLoader loader(unit->qmlData, m_document.data()); + loader.load(); + m_document->javaScriptCompilationUnit.adopt(unit->createCompilationUnit()); + } continueLoadFromIR(); } diff --git a/src/qml/types/qqmldelegatemodel.cpp b/src/qml/types/qqmldelegatemodel.cpp index 4d2a9746c3..4ee1ab1b76 100644 --- a/src/qml/types/qqmldelegatemodel.cpp +++ b/src/qml/types/qqmldelegatemodel.cpp @@ -1957,6 +1957,8 @@ void QQmlDelegateModelItem::destroyObject() Q_ASSERT(data); if (data->ownContext) { data->ownContext->clearContext(); + if (data->ownContext->contextObject == object) + data->ownContext->contextObject = nullptr; data->ownContext = 0; data->context = 0; } diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index e865a609a6..2dc3caf430 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -1712,24 +1712,27 @@ void QQuickWindowPrivate::deliverMouseEvent(QQuickPointerMouseEvent *pointerEven if (point->exclusiveGrabber()) { if (auto grabber = point->grabberItem()) { + bool handled = false; if (sendFilteredPointerEvent(pointerEvent, grabber)) - return; + handled = true; // if the grabber is an Item: // if the update consists of changing button state, don't accept it unless // the button is one in which the grabber is interested Qt::MouseButtons acceptedButtons = grabber->acceptedMouseButtons(); - if (pointerEvent->button() != Qt::NoButton && acceptedButtons + if (!handled && pointerEvent->button() != Qt::NoButton && acceptedButtons && !(acceptedButtons & pointerEvent->button())) { pointerEvent->setAccepted(false); - return; + handled = true; } // send update - QPointF localPos = grabber->mapFromScene(lastMousePosition); - auto me = pointerEvent->asMouseEvent(localPos); - me->accept(); - QCoreApplication::sendEvent(grabber, me); - point->setAccepted(me->isAccepted()); + if (!handled) { + QPointF localPos = grabber->mapFromScene(lastMousePosition); + auto me = pointerEvent->asMouseEvent(localPos); + me->accept(); + QCoreApplication::sendEvent(grabber, me); + point->setAccepted(me->isAccepted()); + } // release event: ungrab if no buttons are pressed anymore if (mouseIsReleased) diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp b/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp index 10291b9cb5..8843b6450a 100644 --- a/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp +++ b/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp @@ -490,12 +490,13 @@ QRectF QSGSoftwareInternalImageNode::rect() const const QPixmap &QSGSoftwareInternalImageNode::pixmap() const { - if (QSGSoftwarePixmapTexture *pt = qobject_cast<QSGSoftwarePixmapTexture*>(m_texture)) { + if (QSGSoftwarePixmapTexture *pt = qobject_cast<QSGSoftwarePixmapTexture*>(m_texture)) return pt->pixmap(); - } else { - QSGSoftwareLayer *layer = qobject_cast<QSGSoftwareLayer*>(m_texture); + if (QSGSoftwareLayer *layer = qobject_cast<QSGSoftwareLayer*>(m_texture)) return layer->pixmap(); - } + Q_ASSERT(m_texture == 0); + static const QPixmap nullPixmap; + return nullPixmap; } QT_END_NAMESPACE diff --git a/tests/auto/qml/debugger/qqmlprofilerservice/data/qstr.qml b/tests/auto/qml/debugger/qqmlprofilerservice/data/qstr.qml new file mode 100644 index 0000000000..09dcd34b5c --- /dev/null +++ b/tests/auto/qml/debugger/qqmlprofilerservice/data/qstr.qml @@ -0,0 +1,9 @@ +import QtQml 2.0 + +Timer { + property string stuff: qsTr("foo") + + running: true + interval: 1 + onTriggered: Qt.quit(); +} diff --git a/tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro b/tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro index 95d743e9ff..a26f48e6c7 100644 --- a/tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro +++ b/tests/auto/qml/debugger/qqmlprofilerservice/qqmlprofilerservice.pro @@ -19,4 +19,5 @@ OTHER_FILES += \ data/TestImage_2x2.png \ data/signalSourceLocation.qml \ data/javascript.qml \ - data/timer.qml + data/timer.qml \ + data/qstr.qml diff --git a/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp b/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp index 45e4ad1207..4d37f16e41 100644 --- a/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp +++ b/tests/auto/qml/debugger/qqmlprofilerservice/tst_qqmlprofilerservice.cpp @@ -298,6 +298,7 @@ private slots: void signalSourceLocation(); void javascript(); void flushInterval(); + void translationBinding(); }; #define VERIFY(type, position, expected, checks) QVERIFY(verify(type, position, expected, checks)) @@ -705,6 +706,25 @@ void tst_QQmlProfilerService::flushInterval() checkJsHeap(); } +void tst_QQmlProfilerService::translationBinding() +{ + QCOMPARE(connect(true, "qstr.qml"), ConnectSuccess); + + m_client->sendRecordingStatus(true); + + checkTraceReceived(); + checkJsHeap(); + + QQmlProfilerData expected(0, QQmlProfilerDefinitions::RangeStart, + QQmlProfilerDefinitions::Binding); + VERIFY(MessageListQML, 8, expected, + CheckDetailType | CheckMessageType); + + expected.messageType = QQmlProfilerDefinitions::RangeEnd; + VERIFY(MessageListQML, 10, expected, + CheckDetailType | CheckMessageType); +} + QTEST_MAIN(tst_QQmlProfilerService) #include "tst_qqmlprofilerservice.moc" diff --git a/tests/auto/qml/qqmllanguage/data/circularSingleton.qml b/tests/auto/qml/qqmllanguage/data/circularSingleton.qml new file mode 100644 index 0000000000..e569111956 --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/circularSingleton.qml @@ -0,0 +1,6 @@ +import QtQuick 2.10 +import "singleton/circular" + +QtObject { + property int value: MySingleton.value +} diff --git a/tests/auto/qml/qqmllanguage/data/singleton/circular/MySingleton.qml b/tests/auto/qml/qqmllanguage/data/singleton/circular/MySingleton.qml new file mode 100644 index 0000000000..1253018789 --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/singleton/circular/MySingleton.qml @@ -0,0 +1,12 @@ +pragma Singleton +import QtQuick 2.10 + +QtObject { + enum MyEnum { + Value0, + Value1, + Value2 + } + + property int value: MySingleton.Value2 +} diff --git a/tests/auto/qml/qqmllanguage/data/singleton/circular/qmldir b/tests/auto/qml/qqmllanguage/data/singleton/circular/qmldir new file mode 100644 index 0000000000..3bc50738dd --- /dev/null +++ b/tests/auto/qml/qqmllanguage/data/singleton/circular/qmldir @@ -0,0 +1 @@ +singleton MySingleton MySingleton.qml diff --git a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp index 21efb0336d..7fb4c809f7 100644 --- a/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp +++ b/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp @@ -240,6 +240,7 @@ private slots: void compositeSingletonJavaScriptPragma(); void compositeSingletonSelectors(); void compositeSingletonRegistered(); + void compositeSingletonCircular(); void customParserBindingScopes(); void customParserEvaluateEnum(); @@ -4211,6 +4212,22 @@ void tst_qqmllanguage::compositeSingletonRegistered() verifyCompositeSingletonPropertyValues(o, "value1", 925, "value2", 755); } +void tst_qqmllanguage::compositeSingletonCircular() +{ + QQmlComponent component(&engine, testFile("circularSingleton.qml")); + VERIFY_ERRORS(0); + + QQmlTestMessageHandler messageHandler; + + QObject *o = component.create(); + QVERIFY(o != 0); + + // ensure we aren't hitting the recursion warning + QVERIFY2(messageHandler.messages().isEmpty(), qPrintable(messageHandler.messageString())); + + QCOMPARE(o->property("value").toInt(), 2); +} + void tst_qqmllanguage::customParserBindingScopes() { QQmlComponent component(&engine, testFile("customParserBindingScopes.qml")); diff --git a/tests/auto/quick/qquickflickable/BLACKLIST b/tests/auto/quick/qquickflickable/BLACKLIST index f35397f119..826c024732 100644 --- a/tests/auto/quick/qquickflickable/BLACKLIST +++ b/tests/auto/quick/qquickflickable/BLACKLIST @@ -1,7 +1,8 @@ # QTBUG-36804 osx-10.10 +# QTBUG-26696 [rebound] -osx-10.10 +osx [movingAndFlicking:vertical] osx-10.10 [movingAndFlicking:both] |