aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/jsapi/qjsengine.h2
-rw-r--r--src/qml/jsruntime/qv4value_p.h7
-rw-r--r--src/qml/qml/qqml.h55
-rw-r--r--src/qml/qml/qqmlapplicationengine.h6
-rw-r--r--src/qml/qml/qqmlcomponent.h18
-rw-r--r--src/qml/qml/qqmlcontext.cpp2
-rw-r--r--src/qml/qml/qqmlcontext.h4
-rw-r--r--src/qml/qml/qqmlengine.h2
-rw-r--r--src/qml/qml/qqmlexpression.h6
-rw-r--r--src/qml/qml/qqmlextensionplugin.h2
-rw-r--r--src/qml/qml/qqmlfileselector.h2
-rw-r--r--src/qml/qml/qqmllist.h36
-rw-r--r--src/qml/qml/qqmlobjectcreator.cpp2
-rw-r--r--src/qml/types/qqmllistmodelworkeragent_p.h3
-rw-r--r--src/qml/util/qqmlpropertymap.h2
-rw-r--r--src/quick/items/qquickanimatedsprite.cpp92
-rw-r--r--src/quick/items/qquickanimatedsprite_p.h10
-rw-r--r--src/quick/items/qquickframebufferobject.h2
-rw-r--r--src/quick/items/qquickitem.h6
-rw-r--r--src/quick/items/qquickitemgrabresult.h2
-rw-r--r--src/quick/items/qquickpainteditem.h4
-rw-r--r--src/quick/items/qquickrendercontrol.cpp4
-rw-r--r--src/quick/items/qquickrendercontrol.h6
-rw-r--r--src/quick/items/qquickscalegrid_p_p.h2
-rw-r--r--src/quick/items/qquickshadereffect.cpp8
-rw-r--r--src/quick/items/qquickshadereffect_p.h1
-rw-r--r--src/quick/items/qquickshadereffectnode.cpp1
-rw-r--r--src/quick/items/qquickshadereffectnode_p.h1
-rw-r--r--src/quick/items/qquicksprite.cpp5
-rw-r--r--src/quick/items/qquicksprite_p.h4
-rw-r--r--src/quick/items/qquicktextinput.cpp15
-rw-r--r--src/quick/items/qquickview.h4
-rw-r--r--src/quick/items/qquickwindow.h6
-rw-r--r--src/quick/scenegraph/coreapi/qsgabstractrenderer.h2
-rw-r--r--src/quick/scenegraph/coreapi/qsgnode.h2
-rw-r--r--src/quick/scenegraph/util/qsgengine.h6
-rw-r--r--src/quick/util/qquickimageprovider.h2
-rw-r--r--src/quickwidgets/qquickwidget.h4
-rw-r--r--tests/auto/quick/qquickanimatedsprite/tst_qquickanimatedsprite.cpp22
39 files changed, 221 insertions, 139 deletions
diff --git a/src/qml/jsapi/qjsengine.h b/src/qml/jsapi/qjsengine.h
index 300990873d..6ecd0c7ec0 100644
--- a/src/qml/jsapi/qjsengine.h
+++ b/src/qml/jsapi/qjsengine.h
@@ -111,7 +111,7 @@ private:
friend inline bool qjsvalue_cast_helper(const QJSValue &, int, void *);
protected:
- QJSEngine(QJSEnginePrivate &dd, QObject *parent = 0);
+ QJSEngine(QJSEnginePrivate &dd, QObject *parent = Q_NULLPTR);
private:
QV8Engine *d;
diff --git a/src/qml/jsruntime/qv4value_p.h b/src/qml/jsruntime/qv4value_p.h
index e8320b33d2..514bdafb48 100644
--- a/src/qml/jsruntime/qv4value_p.h
+++ b/src/qml/jsruntime/qv4value_p.h
@@ -119,11 +119,14 @@ struct Q_QML_PRIVATE_EXPORT Value
Q_ALWAYS_INLINE quint32 value() const { return _val >> 32; }
#endif
-#ifdef QV4_USE_64_BIT_VALUE_ENCODING
+#if defined(V4_BOOTSTRAP)
+ Q_ALWAYS_INLINE Heap::Base *m() const { Q_UNREACHABLE(); return Q_NULLPTR; }
+ Q_ALWAYS_INLINE void setM(Heap::Base *b) { Q_UNUSED(b); Q_UNREACHABLE(); }
+#elif defined(QV4_USE_64_BIT_VALUE_ENCODING)
Q_ALWAYS_INLINE Heap::Base *m() const { Heap::Base *b; memcpy(&b, &_val, 8); return b; }
Q_ALWAYS_INLINE void setM(Heap::Base *b) { memcpy(&_val, &b, 8); }
#else // !QV4_USE_64_BIT_VALUE_ENCODING
- Q_ALWAYS_INLINE Heap::Base *m() const { Heap::Base *b; quint32 v = value(); memcpy(&b, &v, 4); return b; }
+ Q_ALWAYS_INLINE Heap::Base *m() const { Q_STATIC_ASSERT(sizeof(Heap::Base*) == sizeof(quint32)); Heap::Base *b; quint32 v = value(); memcpy(&b, &v, 4); return b; }
Q_ALWAYS_INLINE void setM(Heap::Base *b) { quint32 v; memcpy(&v, &b, 4); setValue(v); }
#endif
diff --git a/src/qml/qml/qqml.h b/src/qml/qml/qqml.h
index a71d06f7de..8fb710ad9d 100644
--- a/src/qml/qml/qqml.h
+++ b/src/qml/qml/qqml.h
@@ -111,10 +111,11 @@ int qmlRegisterType()
qRegisterNormalizedMetaType<T *>(pointerName.constData()),
qRegisterNormalizedMetaType<QQmlListProperty<T> >(listName.constData()),
- 0, 0,
+ 0,
+ Q_NULLPTR,
QString(),
- 0, 0, 0, 0, &T::staticMetaObject,
+ Q_NULLPTR, 0, 0, Q_NULLPTR, &T::staticMetaObject,
QQmlPrivate::attachedPropertiesFunc<T>(),
QQmlPrivate::attachedPropertiesMetaObject<T>(),
@@ -123,9 +124,9 @@ int qmlRegisterType()
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueSource>::cast(),
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueInterceptor>::cast(),
- 0, 0,
+ Q_NULLPTR, Q_NULLPTR,
- 0,
+ Q_NULLPTR,
0
};
@@ -144,7 +145,8 @@ int qmlRegisterUncreatableType(const char *uri, int versionMajor, int versionMin
qRegisterNormalizedMetaType<T *>(pointerName.constData()),
qRegisterNormalizedMetaType<QQmlListProperty<T> >(listName.constData()),
- 0, 0,
+ 0,
+ Q_NULLPTR,
reason,
uri, versionMajor, versionMinor, qmlName, &T::staticMetaObject,
@@ -156,9 +158,9 @@ int qmlRegisterUncreatableType(const char *uri, int versionMajor, int versionMin
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueSource>::cast(),
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueInterceptor>::cast(),
- 0, 0,
+ Q_NULLPTR, Q_NULLPTR,
- 0,
+ Q_NULLPTR,
0
};
@@ -175,7 +177,8 @@ int qmlRegisterUncreatableType(const char *uri, int versionMajor, int versionMin
qRegisterNormalizedMetaType<T *>(pointerName.constData()),
qRegisterNormalizedMetaType<QQmlListProperty<T> >(listName.constData()),
- 0, 0,
+ 0,
+ Q_NULLPTR,
reason,
uri, versionMajor, versionMinor, qmlName, &T::staticMetaObject,
@@ -187,9 +190,9 @@ int qmlRegisterUncreatableType(const char *uri, int versionMajor, int versionMin
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueSource>::cast(),
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueInterceptor>::cast(),
- 0, 0,
+ Q_NULLPTR, Q_NULLPTR,
- 0,
+ Q_NULLPTR,
metaObjectRevision
};
@@ -213,7 +216,8 @@ int qmlRegisterExtendedUncreatableType(const char *uri, int versionMajor, int ve
qRegisterNormalizedMetaType<T *>(pointerName.constData()),
qRegisterNormalizedMetaType<QQmlListProperty<T> >(listName.constData()),
- 0, 0,
+ 0,
+ Q_NULLPTR,
reason,
uri, versionMajor, versionMinor, qmlName, &T::staticMetaObject,
@@ -227,7 +231,7 @@ int qmlRegisterExtendedUncreatableType(const char *uri, int versionMajor, int ve
QQmlPrivate::createParent<E>, &E::staticMetaObject,
- 0,
+ Q_NULLPTR,
0
};
@@ -256,9 +260,9 @@ int qmlRegisterType(const char *uri, int versionMajor, int versionMinor, const c
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueSource>::cast(),
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueInterceptor>::cast(),
- 0, 0,
+ Q_NULLPTR, Q_NULLPTR,
- 0,
+ Q_NULLPTR,
0
};
@@ -287,9 +291,9 @@ int qmlRegisterType(const char *uri, int versionMajor, int versionMinor, const c
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueSource>::cast(),
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueInterceptor>::cast(),
- 0, 0,
+ Q_NULLPTR, Q_NULLPTR,
- 0,
+ Q_NULLPTR,
metaObjectRevision
};
@@ -318,9 +322,9 @@ int qmlRegisterRevision(const char *uri, int versionMajor, int versionMinor)
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueSource>::cast(),
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueInterceptor>::cast(),
- 0, 0,
+ Q_NULLPTR, Q_NULLPTR,
- 0,
+ Q_NULLPTR,
metaObjectRevision
};
@@ -338,10 +342,11 @@ int qmlRegisterExtendedType()
qRegisterNormalizedMetaType<T *>(pointerName.constData()),
qRegisterNormalizedMetaType<QQmlListProperty<T> >(listName.constData()),
- 0, 0,
+ 0,
+ Q_NULLPTR,
QString(),
- 0, 0, 0, 0, &T::staticMetaObject,
+ Q_NULLPTR, 0, 0, Q_NULLPTR, &T::staticMetaObject,
QQmlPrivate::attachedPropertiesFunc<T>(),
QQmlPrivate::attachedPropertiesMetaObject<T>(),
@@ -352,7 +357,7 @@ int qmlRegisterExtendedType()
QQmlPrivate::createParent<E>, &E::staticMetaObject,
- 0,
+ Q_NULLPTR,
0
};
@@ -391,7 +396,7 @@ int qmlRegisterExtendedType(const char *uri, int versionMajor, int versionMinor,
QQmlPrivate::createParent<E>, &E::staticMetaObject,
- 0,
+ Q_NULLPTR,
0
};
@@ -441,7 +446,7 @@ int qmlRegisterCustomType(const char *uri, int versionMajor, int versionMinor,
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueSource>::cast(),
QQmlPrivate::StaticCastSelector<T,QQmlPropertyValueInterceptor>::cast(),
- 0, 0,
+ Q_NULLPTR, Q_NULLPTR,
parser,
0
@@ -536,7 +541,7 @@ inline int qmlRegisterSingletonType(const char *uri, int versionMajor, int versi
uri, versionMajor, versionMinor, typeName,
- callback, 0, 0, 0, 0
+ callback, Q_NULLPTR, Q_NULLPTR, 0, 0
};
return QQmlPrivate::qmlregister(QQmlPrivate::SingletonRegistration, &api);
@@ -554,7 +559,7 @@ inline int qmlRegisterSingletonType(const char *uri, int versionMajor, int versi
uri, versionMajor, versionMinor, typeName,
- 0, callback, &T::staticMetaObject, qRegisterNormalizedMetaType<T *>(pointerName.constData()), 0
+ Q_NULLPTR, callback, &T::staticMetaObject, qRegisterNormalizedMetaType<T *>(pointerName.constData()), 0
};
return QQmlPrivate::qmlregister(QQmlPrivate::SingletonRegistration, &api);
diff --git a/src/qml/qml/qqmlapplicationengine.h b/src/qml/qml/qqmlapplicationengine.h
index 59667a1841..ff7dce5f8b 100644
--- a/src/qml/qml/qqmlapplicationengine.h
+++ b/src/qml/qml/qqmlapplicationengine.h
@@ -53,9 +53,9 @@ class Q_QML_EXPORT QQmlApplicationEngine : public QQmlEngine
{
Q_OBJECT
public:
- QQmlApplicationEngine(QObject *parent=0);
- QQmlApplicationEngine(const QUrl &url, QObject *parent=0);
- QQmlApplicationEngine(const QString &filePath, QObject *parent=0);
+ QQmlApplicationEngine(QObject *parent = Q_NULLPTR);
+ QQmlApplicationEngine(const QUrl &url, QObject *parent = Q_NULLPTR);
+ QQmlApplicationEngine(const QString &filePath, QObject *parent = Q_NULLPTR);
~QQmlApplicationEngine();
QList<QObject*> rootObjects();
diff --git a/src/qml/qml/qqmlcomponent.h b/src/qml/qml/qqmlcomponent.h
index 0e226320d6..aefbf20aff 100644
--- a/src/qml/qml/qqmlcomponent.h
+++ b/src/qml/qml/qqmlcomponent.h
@@ -72,12 +72,12 @@ public:
enum CompilationMode { PreferSynchronous, Asynchronous };
Q_ENUM(CompilationMode)
- QQmlComponent(QObject *parent = 0);
- QQmlComponent(QQmlEngine *, QObject *parent=0);
- QQmlComponent(QQmlEngine *, const QString &fileName, QObject *parent = 0);
- QQmlComponent(QQmlEngine *, const QString &fileName, CompilationMode mode, QObject *parent = 0);
- QQmlComponent(QQmlEngine *, const QUrl &url, QObject *parent = 0);
- QQmlComponent(QQmlEngine *, const QUrl &url, CompilationMode mode, QObject *parent = 0);
+ QQmlComponent(QObject *parent = Q_NULLPTR);
+ QQmlComponent(QQmlEngine *, QObject *parent = Q_NULLPTR);
+ QQmlComponent(QQmlEngine *, const QString &fileName, QObject *parent = Q_NULLPTR);
+ QQmlComponent(QQmlEngine *, const QString &fileName, CompilationMode mode, QObject *parent = Q_NULLPTR);
+ QQmlComponent(QQmlEngine *, const QUrl &url, QObject *parent = Q_NULLPTR);
+ QQmlComponent(QQmlEngine *, const QUrl &url, CompilationMode mode, QObject *parent = Q_NULLPTR);
virtual ~QQmlComponent();
enum Status { Null, Ready, Loading, Error };
@@ -96,12 +96,12 @@ public:
QUrl url() const;
- virtual QObject *create(QQmlContext *context = 0);
+ virtual QObject *create(QQmlContext *context = Q_NULLPTR);
virtual QObject *beginCreate(QQmlContext *);
virtual void completeCreate();
- void create(QQmlIncubator &, QQmlContext *context = 0,
- QQmlContext *forContext = 0);
+ void create(QQmlIncubator &, QQmlContext *context = Q_NULLPTR,
+ QQmlContext *forContext = Q_NULLPTR);
QQmlContext *creationContext() const;
diff --git a/src/qml/qml/qqmlcontext.cpp b/src/qml/qml/qqmlcontext.cpp
index f759f46af5..65a337f4e5 100644
--- a/src/qml/qml/qqmlcontext.cpp
+++ b/src/qml/qml/qqmlcontext.cpp
@@ -95,7 +95,7 @@ QQmlContextPrivate::QQmlContextPrivate()
by name in the context, as though they were all individually added through calls
to QQmlContext::setContextProperty(). Changes to the property's values are
detected through the property's notify signal. Setting a context object is both
- faster and easier than manually adding and maintaing context property values.
+ faster and easier than manually adding and maintaining context property values.
The following example has the same effect as the previous one, but it uses a context
object.
diff --git a/src/qml/qml/qqmlcontext.h b/src/qml/qml/qqmlcontext.h
index c6b5d44f5a..781eac44fc 100644
--- a/src/qml/qml/qqmlcontext.h
+++ b/src/qml/qml/qqmlcontext.h
@@ -62,8 +62,8 @@ class Q_QML_EXPORT QQmlContext : public QObject
Q_DECLARE_PRIVATE(QQmlContext)
public:
- QQmlContext(QQmlEngine *parent, QObject *objParent=0);
- QQmlContext(QQmlContext *parent, QObject *objParent=0);
+ QQmlContext(QQmlEngine *parent, QObject *objParent = Q_NULLPTR);
+ QQmlContext(QQmlContext *parent, QObject *objParent = Q_NULLPTR);
virtual ~QQmlContext();
bool isValid() const;
diff --git a/src/qml/qml/qqmlengine.h b/src/qml/qml/qqmlengine.h
index a7eda0ee6c..bd2a3cfc48 100644
--- a/src/qml/qml/qqmlengine.h
+++ b/src/qml/qml/qqmlengine.h
@@ -95,7 +95,7 @@ class Q_QML_EXPORT QQmlEngine : public QJSEngine
Q_PROPERTY(QString offlineStoragePath READ offlineStoragePath WRITE setOfflineStoragePath)
Q_OBJECT
public:
- QQmlEngine(QObject *p = 0);
+ explicit QQmlEngine(QObject *p = Q_NULLPTR);
virtual ~QQmlEngine();
QQmlContext *rootContext() const;
diff --git a/src/qml/qml/qqmlexpression.h b/src/qml/qml/qqmlexpression.h
index 0aff4884f9..5239d59c8a 100644
--- a/src/qml/qml/qqmlexpression.h
+++ b/src/qml/qml/qqmlexpression.h
@@ -60,8 +60,8 @@ class Q_QML_EXPORT QQmlExpression : public QObject
Q_OBJECT
public:
QQmlExpression();
- QQmlExpression(QQmlContext *, QObject *, const QString &, QObject * = 0);
- explicit QQmlExpression(const QQmlScriptString &, QQmlContext * = 0, QObject * = 0, QObject * = 0);
+ QQmlExpression(QQmlContext *, QObject *, const QString &, QObject * = Q_NULLPTR);
+ explicit QQmlExpression(const QQmlScriptString &, QQmlContext * = Q_NULLPTR, QObject * = Q_NULLPTR, QObject * = Q_NULLPTR);
virtual ~QQmlExpression();
QQmlEngine *engine() const;
@@ -84,7 +84,7 @@ public:
void clearError();
QQmlError error() const;
- QVariant evaluate(bool *valueIsUndefined = 0);
+ QVariant evaluate(bool *valueIsUndefined = Q_NULLPTR);
Q_SIGNALS:
void valueChanged();
diff --git a/src/qml/qml/qqmlextensionplugin.h b/src/qml/qml/qqmlextensionplugin.h
index d0ee16ac50..de482d0352 100644
--- a/src/qml/qml/qqmlextensionplugin.h
+++ b/src/qml/qml/qqmlextensionplugin.h
@@ -58,7 +58,7 @@ class Q_QML_EXPORT QQmlExtensionPlugin
Q_INTERFACES(QQmlExtensionInterface)
Q_INTERFACES(QQmlTypesExtensionInterface)
public:
- explicit QQmlExtensionPlugin(QObject *parent = 0);
+ explicit QQmlExtensionPlugin(QObject *parent = Q_NULLPTR);
~QQmlExtensionPlugin();
QUrl baseUrl() const;
diff --git a/src/qml/qml/qqmlfileselector.h b/src/qml/qml/qqmlfileselector.h
index 34ba4d7a56..03b951420e 100644
--- a/src/qml/qml/qqmlfileselector.h
+++ b/src/qml/qml/qqmlfileselector.h
@@ -54,7 +54,7 @@ class Q_QML_EXPORT QQmlFileSelector : public QObject
Q_OBJECT
Q_DECLARE_PRIVATE(QQmlFileSelector)
public:
- QQmlFileSelector(QQmlEngine* engine, QObject* parent=0);
+ explicit QQmlFileSelector(QQmlEngine *engine, QObject *parent = Q_NULLPTR);
~QQmlFileSelector();
QFileSelector *selector() const Q_DECL_NOTHROW;
void setSelector(QFileSelector *selector);
diff --git a/src/qml/qml/qqmllist.h b/src/qml/qml/qqmllist.h
index dd548168c3..e3955deee5 100644
--- a/src/qml/qml/qqmllist.h
+++ b/src/qml/qml/qqmllist.h
@@ -61,15 +61,41 @@ public:
typedef void (*ClearFunction)(QQmlListProperty<T> *);
QQmlListProperty()
- : object(0), data(0), append(0), count(0), at(0), clear(0), dummy1(0), dummy2(0) {}
+ : object(Q_NULLPTR),
+ data(Q_NULLPTR),
+ append(Q_NULLPTR),
+ count(Q_NULLPTR),
+ at(Q_NULLPTR),
+ clear(Q_NULLPTR),
+ dummy1(Q_NULLPTR),
+ dummy2(Q_NULLPTR)
+ {}
QQmlListProperty(QObject *o, QList<T *> &list)
: object(o), data(&list), append(qlist_append), count(qlist_count), at(qlist_at),
- clear(qlist_clear), dummy1(0), dummy2(0) {}
+ clear(qlist_clear),
+ dummy1(Q_NULLPTR),
+ dummy2(Q_NULLPTR)
+ {}
QQmlListProperty(QObject *o, void *d, AppendFunction a, CountFunction c, AtFunction t,
ClearFunction r )
- : object(o), data(d), append(a), count(c), at(t), clear(r), dummy1(0), dummy2(0) {}
+ : object(o),
+ data(d),
+ append(a),
+ count(c),
+ at(t),
+ clear(r),
+ dummy1(Q_NULLPTR),
+ dummy2(Q_NULLPTR)
+ {}
QQmlListProperty(QObject *o, void *d, CountFunction c, AtFunction t)
- : object(o), data(d), append(0), count(c), at(t), clear(0), dummy1(0), dummy2(0) {}
+ : object(o),
+ data(d),
+ append(Q_NULLPTR),
+ count(c), at(t),
+ clear(Q_NULLPTR),
+ dummy1(Q_NULLPTR),
+ dummy2(Q_NULLPTR)
+ {}
bool operator==(const QQmlListProperty &o) const {
return object == o.object &&
data == o.data &&
@@ -114,7 +140,7 @@ class Q_QML_EXPORT QQmlListReference
{
public:
QQmlListReference();
- QQmlListReference(QObject *, const char *property, QQmlEngine * = 0);
+ QQmlListReference(QObject *, const char *property, QQmlEngine * = Q_NULLPTR);
QQmlListReference(const QQmlListReference &);
QQmlListReference &operator=(const QQmlListReference &);
~QQmlListReference();
diff --git a/src/qml/qml/qqmlobjectcreator.cpp b/src/qml/qml/qqmlobjectcreator.cpp
index 1a7896bde8..29fff04325 100644
--- a/src/qml/qml/qqmlobjectcreator.cpp
+++ b/src/qml/qml/qqmlobjectcreator.cpp
@@ -716,6 +716,8 @@ bool QQmlObjectCreator::setPropertyBinding(const QQmlPropertyData *property, con
QQmlTypeNameCache::Result res = context->imports->query(stringAt(binding->propertyNameIndex));
if (res.isValid())
attachedType = res.type;
+ else
+ return false;
}
const int id = attachedType->attachedPropertiesId(QQmlEnginePrivate::get(engine));
QObject *qmlObject = qmlAttachedPropertiesObjectById(id, _qobject);
diff --git a/src/qml/types/qqmllistmodelworkeragent_p.h b/src/qml/types/qqmllistmodelworkeragent_p.h
index 0c639b140d..f9872a6ad4 100644
--- a/src/qml/types/qqmllistmodelworkeragent_p.h
+++ b/src/qml/types/qqmllistmodelworkeragent_p.h
@@ -97,7 +97,8 @@ public:
VariantRef &operator=(const VariantRef &o) {
if (o.a) o.a->addref();
- if (a) a->release(); a = o.a;
+ if (a) a->release();
+ a = o.a;
return *this;
}
diff --git a/src/qml/util/qqmlpropertymap.h b/src/qml/util/qqmlpropertymap.h
index ea1561bc60..01048f3662 100644
--- a/src/qml/util/qqmlpropertymap.h
+++ b/src/qml/util/qqmlpropertymap.h
@@ -55,7 +55,7 @@ class Q_QML_EXPORT QQmlPropertyMap : public QObject
{
Q_OBJECT
public:
- explicit QQmlPropertyMap(QObject *parent = 0);
+ explicit QQmlPropertyMap(QObject *parent = Q_NULLPTR);
virtual ~QQmlPropertyMap();
QVariant value(const QString &key) const;
diff --git a/src/quick/items/qquickanimatedsprite.cpp b/src/quick/items/qquickanimatedsprite.cpp
index f5df5763bb..c32e9546a5 100644
--- a/src/quick/items/qquickanimatedsprite.cpp
+++ b/src/quick/items/qquickanimatedsprite.cpp
@@ -316,8 +316,6 @@ struct AnimatedSpriteVertices {
//TODO: Implicitly size element to size of sprite
QQuickAnimatedSprite::QQuickAnimatedSprite(QQuickItem *parent) :
QQuickItem(parent)
- , m_node(0)
- , m_material(0)
, m_sprite(new QQuickSprite(this))
, m_spriteEngine(0)
, m_curFrame(0)
@@ -331,9 +329,9 @@ QQuickAnimatedSprite::QQuickAnimatedSprite(QQuickItem *parent) :
{
setFlag(ItemHasContents);
connect(this, SIGNAL(widthChanged()),
- this, SLOT(sizeVertices()));
+ this, SLOT(reset()));
connect(this, SIGNAL(heightChanged()),
- this, SLOT(sizeVertices()));
+ this, SLOT(reset()));
}
bool QQuickAnimatedSprite::isCurrentFrameChangedConnected()
@@ -461,12 +459,9 @@ static QSGGeometry::AttributeSet AnimatedSprite_AttributeSet =
AnimatedSprite_Attributes
};
-void QQuickAnimatedSprite::sizeVertices()
+void QQuickAnimatedSprite::sizeVertices(QSGGeometryNode *node)
{
- if (!m_node)
- return;
-
- AnimatedSpriteVertices *p = (AnimatedSpriteVertices *) m_node->geometry()->vertexData();
+ AnimatedSpriteVertices *p = (AnimatedSpriteVertices *) node->geometry()->vertexData();
p->v1.x = 0;
p->v1.y = 0;
@@ -494,21 +489,21 @@ QSGGeometryNode* QQuickAnimatedSprite::buildNode()
return 0;
}
- m_material = new QQuickAnimatedSpriteMaterial();
+ QQuickAnimatedSpriteMaterial *material = new QQuickAnimatedSpriteMaterial();
QImage image = m_spriteEngine->assembledImage(); //Engine prints errors if there are any
if (image.isNull())
return 0;
m_sheetSize = QSizeF(image.size());
- m_material->texture = window()->createTextureFromImage(image);
+ material->texture = window()->createTextureFromImage(image);
m_spriteEngine->start(0);
- m_material->animT = 0;
- m_material->animX1 = m_spriteEngine->spriteX() / m_sheetSize.width();
- m_material->animY1 = m_spriteEngine->spriteY() / m_sheetSize.height();
- m_material->animX2 = m_material->animX1;
- m_material->animY2 = m_material->animY1;
- m_material->animW = m_spriteEngine->spriteWidth() / m_sheetSize.width();
- m_material->animH = m_spriteEngine->spriteHeight() / m_sheetSize.height();
+ material->animT = 0;
+ material->animX1 = m_spriteEngine->spriteX() / m_sheetSize.width();
+ material->animY1 = m_spriteEngine->spriteY() / m_sheetSize.height();
+ material->animX2 = material->animX1;
+ material->animY2 = material->animY1;
+ material->animW = m_spriteEngine->spriteWidth() / m_sheetSize.width();
+ material->animH = m_spriteEngine->spriteHeight() / m_sheetSize.height();
int vCount = 4;
int iCount = 6;
@@ -517,7 +512,7 @@ QSGGeometryNode* QQuickAnimatedSprite::buildNode()
AnimatedSpriteVertices *p = (AnimatedSpriteVertices *) g->vertexData();
- QRectF texRect = m_material->texture->normalizedTextureSubRect();
+ QRectF texRect = material->texture->normalizedTextureSubRect();
p->v1.tx = texRect.topLeft().x();
p->v1.ty = texRect.topLeft().y();
@@ -540,51 +535,51 @@ QSGGeometryNode* QQuickAnimatedSprite::buildNode()
indices[5] = 2;
- m_node = new QSGGeometryNode();
- m_node->setGeometry(g);
- m_node->setMaterial(m_material);
- m_node->setFlag(QSGGeometryNode::OwnsMaterial);
- m_node->setFlag(QSGGeometryNode::OwnsGeometry);
- sizeVertices();
- return m_node;
+ QSGGeometryNode *node = new QSGGeometryNode();
+ node->setGeometry(g);
+ node->setMaterial(material);
+ node->setFlag(QSGGeometryNode::OwnsMaterial);
+ node->setFlag(QSGGeometryNode::OwnsGeometry);
+ sizeVertices(node);
+ return node;
}
void QQuickAnimatedSprite::reset()
{
m_pleaseReset = true;
+ update();
}
-QSGNode *QQuickAnimatedSprite::updatePaintNode(QSGNode *, UpdatePaintNodeData *)
+QSGNode *QQuickAnimatedSprite::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *)
{
if (m_pleaseReset) {
- delete m_node;
+ delete oldNode;
- m_node = 0;
- m_material = 0;
+ oldNode = 0;
m_pleaseReset = false;
}
- prepareNextFrame();
+ QSGGeometryNode *node = static_cast<QSGGeometryNode *>(oldNode);
+ if (!node)
+ node = buildNode();
+
+ if (node)
+ prepareNextFrame(node);
if (m_running) {
if (!m_paused)
update();
- if (m_node) {
- m_node->markDirty(QSGNode::DirtyMaterial);
+ if (node) {
+ node->markDirty(QSGNode::DirtyMaterial);
}
}
- return m_node;
+ return node;
}
-void QQuickAnimatedSprite::prepareNextFrame()
+void QQuickAnimatedSprite::prepareNextFrame(QSGGeometryNode *node)
{
- if (m_node == 0)
- m_node = buildNode();
- if (m_node == 0) //error creating node
- return;
-
int timeInt = m_timestamp.elapsed() + m_pauseOffset;
qreal time = timeInt / 1000.;
@@ -700,14 +695,15 @@ void QQuickAnimatedSprite::prepareNextFrame()
}
}
- m_material->animX1 = x1;
- m_material->animY1 = y1;
- m_material->animX2 = x2;
- m_material->animY2 = y2;
- m_material->animW = w;
- m_material->animH = h;
- m_material->animT = m_interpolate ? progress : 0.0;
- m_material->texture->setFiltering(smooth() ? QSGTexture::Linear : QSGTexture::Nearest);
+ QQuickAnimatedSpriteMaterial *material = static_cast<QQuickAnimatedSpriteMaterial *>(node->material());
+ material->animX1 = x1;
+ material->animY1 = y1;
+ material->animX2 = x2;
+ material->animY2 = y2;
+ material->animW = w;
+ material->animH = h;
+ material->animT = m_interpolate ? progress : 0.0;
+ material->texture->setFiltering(smooth() ? QSGTexture::Linear : QSGTexture::Nearest);
}
QT_END_NAMESPACE
diff --git a/src/quick/items/qquickanimatedsprite_p.h b/src/quick/items/qquickanimatedsprite_p.h
index 6b49d903df..1e5981c1a4 100644
--- a/src/quick/items/qquickanimatedsprite_p.h
+++ b/src/quick/items/qquickanimatedsprite_p.h
@@ -357,19 +357,19 @@ public Q_SLOTS:
private Q_SLOTS:
void createEngine();
- void sizeVertices();
+ void sizeVertices(QSGGeometryNode *node);
-protected:
+protected Q_SLOTS:
void reset();
+
+protected:
void componentComplete() Q_DECL_OVERRIDE;
QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
private:
bool isCurrentFrameChangedConnected();
- void prepareNextFrame();
+ void prepareNextFrame(QSGGeometryNode *node);
void reloadImage();
QSGGeometryNode* buildNode();
- QSGGeometryNode *m_node;
- QQuickAnimatedSpriteMaterial *m_material;
QQuickSprite* m_sprite;
QQuickSpriteEngine* m_spriteEngine;
QElapsedTimer m_timestamp;
diff --git a/src/quick/items/qquickframebufferobject.h b/src/quick/items/qquickframebufferobject.h
index 446cfed22b..13eeb931ad 100644
--- a/src/quick/items/qquickframebufferobject.h
+++ b/src/quick/items/qquickframebufferobject.h
@@ -75,7 +75,7 @@ public:
void *data;
};
- QQuickFramebufferObject(QQuickItem *parent = 0);
+ QQuickFramebufferObject(QQuickItem *parent = Q_NULLPTR);
bool textureFollowsItemSize() const;
void setTextureFollowsItemSize(bool follows);
diff --git a/src/quick/items/qquickitem.h b/src/quick/items/qquickitem.h
index b33f3d8b6a..c5c17615ee 100644
--- a/src/quick/items/qquickitem.h
+++ b/src/quick/items/qquickitem.h
@@ -59,7 +59,7 @@ class Q_QUICK_EXPORT QQuickTransform : public QObject
{
Q_OBJECT
public:
- QQuickTransform(QObject *parent = 0);
+ explicit QQuickTransform(QObject *parent = Q_NULLPTR);
~QQuickTransform();
void appendToItem(QQuickItem *);
@@ -195,7 +195,7 @@ public:
};
Q_ENUM(TransformOrigin)
- QQuickItem(QQuickItem *parent = 0);
+ explicit QQuickItem(QQuickItem *parent = Q_NULLPTR);
virtual ~QQuickItem();
QQuickWindow *window() const;
@@ -440,7 +440,7 @@ protected:
virtual void updatePolish();
protected:
- QQuickItem(QQuickItemPrivate &dd, QQuickItem *parent = 0);
+ QQuickItem(QQuickItemPrivate &dd, QQuickItem *parent = Q_NULLPTR);
private:
Q_PRIVATE_SLOT(d_func(), void _q_resourceObjectDeleted(QObject *))
diff --git a/src/quick/items/qquickitemgrabresult.h b/src/quick/items/qquickitemgrabresult.h
index 15399010dd..42d71862de 100644
--- a/src/quick/items/qquickitemgrabresult.h
+++ b/src/quick/items/qquickitemgrabresult.h
@@ -79,7 +79,7 @@ private Q_SLOTS:
private:
friend class QQuickItem;
- QQuickItemGrabResult(QObject *parent = 0);
+ QQuickItemGrabResult(QObject *parent = Q_NULLPTR);
};
QT_END_NAMESPACE
diff --git a/src/quick/items/qquickpainteditem.h b/src/quick/items/qquickpainteditem.h
index 1e384a45e3..f9e3c91a42 100644
--- a/src/quick/items/qquickpainteditem.h
+++ b/src/quick/items/qquickpainteditem.h
@@ -57,7 +57,7 @@ class Q_QUICK_EXPORT QQuickPaintedItem : public QQuickItem
Q_PROPERTY(QSize textureSize READ textureSize WRITE setTextureSize NOTIFY textureSizeChanged)
public:
- QQuickPaintedItem(QQuickItem *parent = 0);
+ explicit QQuickPaintedItem(QQuickItem *parent = Q_NULLPTR);
virtual ~QQuickPaintedItem();
enum RenderTarget {
@@ -118,7 +118,7 @@ Q_SIGNALS:
void textureSizeChanged();
protected:
- QQuickPaintedItem(QQuickPaintedItemPrivate &dd, QQuickItem *parent = 0);
+ QQuickPaintedItem(QQuickPaintedItemPrivate &dd, QQuickItem *parent = Q_NULLPTR);
QSGNode *updatePaintNode(QSGNode *, UpdatePaintNodeData *) Q_DECL_OVERRIDE;
void releaseResources() Q_DECL_OVERRIDE;
diff --git a/src/quick/items/qquickrendercontrol.cpp b/src/quick/items/qquickrendercontrol.cpp
index 285a394cee..e36df53d38 100644
--- a/src/quick/items/qquickrendercontrol.cpp
+++ b/src/quick/items/qquickrendercontrol.cpp
@@ -54,6 +54,8 @@
#include <QtQuick/private/qquickwindow_p.h>
#include <QtCore/private/qobject_p.h>
+#include <private/qquickshadereffectnode_p.h>
+
QT_BEGIN_NAMESPACE
extern Q_GUI_EXPORT QImage qt_gl_read_framebuffer(const QSize &size, bool alpha_format, bool include_alpha);
@@ -181,6 +183,8 @@ void QQuickRenderControlPrivate::windowDestroyed()
delete QQuickWindowPrivate::get(window)->animationController;
QQuickWindowPrivate::get(window)->animationController = 0;
+ QQuickShaderEffectMaterial::cleanupMaterialCache();
+
window = 0;
}
}
diff --git a/src/quick/items/qquickrendercontrol.h b/src/quick/items/qquickrendercontrol.h
index c5691b1329..31ea176cc1 100644
--- a/src/quick/items/qquickrendercontrol.h
+++ b/src/quick/items/qquickrendercontrol.h
@@ -55,7 +55,7 @@ class Q_QUICK_EXPORT QQuickRenderControl : public QObject
Q_OBJECT
public:
- QQuickRenderControl(QObject *parent = 0);
+ explicit QQuickRenderControl(QObject *parent = Q_NULLPTR);
~QQuickRenderControl();
void prepareThread(QThread *targetThread);
@@ -68,8 +68,8 @@ public:
QImage grab();
- static QWindow *renderWindowFor(QQuickWindow *win, QPoint *offset = 0);
- virtual QWindow *renderWindow(QPoint *offset) { Q_UNUSED(offset); return 0; }
+ static QWindow *renderWindowFor(QQuickWindow *win, QPoint *offset = Q_NULLPTR);
+ virtual QWindow *renderWindow(QPoint *offset) { Q_UNUSED(offset); return Q_NULLPTR; }
Q_SIGNALS:
void renderRequested();
diff --git a/src/quick/items/qquickscalegrid_p_p.h b/src/quick/items/qquickscalegrid_p_p.h
index 8064a31377..a424002dfb 100644
--- a/src/quick/items/qquickscalegrid_p_p.h
+++ b/src/quick/items/qquickscalegrid_p_p.h
@@ -61,7 +61,7 @@
QT_BEGIN_NAMESPACE
-class QQuickScaleGrid : public QObject
+class Q_AUTOTEST_EXPORT QQuickScaleGrid : public QObject
{
Q_OBJECT
diff --git a/src/quick/items/qquickshadereffect.cpp b/src/quick/items/qquickshadereffect.cpp
index 05900bc12b..0cfb85db97 100644
--- a/src/quick/items/qquickshadereffect.cpp
+++ b/src/quick/items/qquickshadereffect.cpp
@@ -958,6 +958,12 @@ void QQuickShaderEffect::updateGeometry()
update();
}
+void QQuickShaderEffect::updateGeometryIfAtlased()
+{
+ if (m_supportsAtlasTextures)
+ updateGeometry();
+}
+
void QQuickShaderEffect::updateLogAndStatus(const QString &log, int status)
{
m_log = parseLog() + log;
@@ -1006,6 +1012,8 @@ QSGNode *QQuickShaderEffect::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeDa
m_dirtyUniforms = true;
m_dirtyGeometry = true;
connect(node, SIGNAL(logAndStatusChanged(QString,int)), this, SLOT(updateLogAndStatus(QString,int)));
+ connect(node, &QQuickShaderEffectNode::dirtyTexture,
+ this, &QQuickShaderEffect::updateGeometryIfAtlased);
}
QQuickShaderEffectMaterial *material = static_cast<QQuickShaderEffectMaterial *>(node->material());
diff --git a/src/quick/items/qquickshadereffect_p.h b/src/quick/items/qquickshadereffect_p.h
index 23557e52fa..fb266d4c44 100644
--- a/src/quick/items/qquickshadereffect_p.h
+++ b/src/quick/items/qquickshadereffect_p.h
@@ -173,6 +173,7 @@ protected:
private Q_SLOTS:
void updateGeometry();
+ void updateGeometryIfAtlased();
void updateLogAndStatus(const QString &log, int status);
void sourceDestroyed(QObject *object);
void propertyChanged(int mappedId);
diff --git a/src/quick/items/qquickshadereffectnode.cpp b/src/quick/items/qquickshadereffectnode.cpp
index 8040bbe754..66154fac6d 100644
--- a/src/quick/items/qquickshadereffectnode.cpp
+++ b/src/quick/items/qquickshadereffectnode.cpp
@@ -497,6 +497,7 @@ QQuickShaderEffectNode::~QQuickShaderEffectNode()
void QQuickShaderEffectNode::markDirtyTexture()
{
markDirty(DirtyMaterial);
+ Q_EMIT dirtyTexture();
}
void QQuickShaderEffectNode::textureProviderDestroyed(QObject *object)
diff --git a/src/quick/items/qquickshadereffectnode_p.h b/src/quick/items/qquickshadereffectnode_p.h
index 570a0c3213..cc016d13a7 100644
--- a/src/quick/items/qquickshadereffectnode_p.h
+++ b/src/quick/items/qquickshadereffectnode_p.h
@@ -148,6 +148,7 @@ public:
Q_SIGNALS:
void logAndStatusChanged(const QString &, int status);
+ void dirtyTexture();
private Q_SLOTS:
void markDirtyTexture();
diff --git a/src/quick/items/qquicksprite.cpp b/src/quick/items/qquicksprite.cpp
index 6429c0d668..63d3180842 100644
--- a/src/quick/items/qquicksprite.cpp
+++ b/src/quick/items/qquicksprite.cpp
@@ -224,6 +224,11 @@ QQuickSprite::QQuickSprite(QObject *parent)
{
}
+/*! \internal */
+QQuickSprite::~QQuickSprite()
+{
+}
+
int QQuickSprite::variedDuration() const //Deals with precedence when multiple durations are set
{
if (m_frameSync)
diff --git a/src/quick/items/qquicksprite_p.h b/src/quick/items/qquicksprite_p.h
index 3a91b3374a..1b8c8cee84 100644
--- a/src/quick/items/qquicksprite_p.h
+++ b/src/quick/items/qquicksprite_p.h
@@ -61,7 +61,8 @@
QT_BEGIN_NAMESPACE
-class QQuickSprite : public QQuickStochasticState
+// exported, since it's used in QtQuickParticles
+class Q_QUICK_EXPORT QQuickSprite : public QQuickStochasticState
{
Q_OBJECT
Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
@@ -84,6 +85,7 @@ class QQuickSprite : public QQuickStochasticState
public:
explicit QQuickSprite(QObject *parent = 0);
+ ~QQuickSprite();
QUrl source() const
{
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp
index 4b816c41c3..2b1141bea8 100644
--- a/src/quick/items/qquicktextinput.cpp
+++ b/src/quick/items/qquicktextinput.cpp
@@ -1893,11 +1893,15 @@ bool QQuickTextInput::isRightToLeft(int start, int end)
\qmlmethod QtQuick::TextInput::cut()
Moves the currently selected text to the system clipboard.
+
+ \note If the echo mode is set to a mode other than Normal then cut
+ will not work. This is to prevent using cut as a method of bypassing
+ password features of the line control.
*/
void QQuickTextInput::cut()
{
Q_D(QQuickTextInput);
- if (!d->m_readOnly) {
+ if (!d->m_readOnly && d->m_echoMode == QQuickTextInput::Normal) {
d->copy();
d->del();
}
@@ -1907,6 +1911,10 @@ void QQuickTextInput::cut()
\qmlmethod QtQuick::TextInput::copy()
Copies the currently selected text to the system clipboard.
+
+ \note If the echo mode is set to a mode other than Normal then copy
+ will not work. This is to prevent using copy as a method of bypassing
+ password features of the line control.
*/
void QQuickTextInput::copy()
{
@@ -4286,10 +4294,7 @@ void QQuickTextInputPrivate::processKeyEvent(QKeyEvent* event)
}
}
else if (event == QKeySequence::Cut) {
- if (!m_readOnly) {
- copy();
- del();
- }
+ q->cut();
}
else if (event == QKeySequence::DeleteEndOfLine) {
if (!m_readOnly)
diff --git a/src/quick/items/qquickview.h b/src/quick/items/qquickview.h
index 29ce5b4935..1fcc34e3a1 100644
--- a/src/quick/items/qquickview.h
+++ b/src/quick/items/qquickview.h
@@ -60,9 +60,9 @@ class Q_QUICK_EXPORT QQuickView : public QQuickWindow
Q_PROPERTY(Status status READ status NOTIFY statusChanged)
Q_PROPERTY(QUrl source READ source WRITE setSource DESIGNABLE true)
public:
- explicit QQuickView(QWindow *parent = 0);
+ explicit QQuickView(QWindow *parent = Q_NULLPTR);
QQuickView(QQmlEngine* engine, QWindow *parent);
- QQuickView(const QUrl &source, QWindow *parent = 0);
+ explicit QQuickView(const QUrl &source, QWindow *parent = Q_NULLPTR);
virtual ~QQuickView();
QUrl source() const;
diff --git a/src/quick/items/qquickwindow.h b/src/quick/items/qquickwindow.h
index e04a4a1ce2..1024147bb4 100644
--- a/src/quick/items/qquickwindow.h
+++ b/src/quick/items/qquickwindow.h
@@ -95,7 +95,7 @@ public:
};
Q_ENUM(SceneGraphError)
- QQuickWindow(QWindow *parent = 0);
+ explicit QQuickWindow(QWindow *parent = Q_NULLPTR);
explicit QQuickWindow(QQuickRenderControl *renderControl);
virtual ~QQuickWindow();
@@ -129,7 +129,7 @@ public:
// Scene graph specific functions
QSGTexture *createTextureFromImage(const QImage &image) const;
QSGTexture *createTextureFromImage(const QImage &image, CreateTextureOptions options) const;
- QSGTexture *createTextureFromId(uint id, const QSize &size, CreateTextureOptions options = CreateTextureOption(0)) const;
+ QSGTexture *createTextureFromId(uint id, const QSize &size, CreateTextureOptions options = CreateTextureOption()) const;
void setClearBeforeRendering(bool enabled);
bool clearBeforeRendering() const;
@@ -176,7 +176,7 @@ public Q_SLOTS:
void releaseResources();
protected:
- QQuickWindow(QQuickWindowPrivate &dd, QWindow *parent = 0);
+ QQuickWindow(QQuickWindowPrivate &dd, QWindow *parent = Q_NULLPTR);
void exposeEvent(QExposeEvent *) Q_DECL_OVERRIDE;
void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE;
diff --git a/src/quick/scenegraph/coreapi/qsgabstractrenderer.h b/src/quick/scenegraph/coreapi/qsgabstractrenderer.h
index e02fb819fe..d0a22c8c10 100644
--- a/src/quick/scenegraph/coreapi/qsgabstractrenderer.h
+++ b/src/quick/scenegraph/coreapi/qsgabstractrenderer.h
@@ -86,7 +86,7 @@ Q_SIGNALS:
void sceneGraphChanged();
protected:
- QSGAbstractRenderer(QObject *parent = 0);
+ explicit QSGAbstractRenderer(QObject *parent = Q_NULLPTR);
virtual void nodeChanged(QSGNode *node, QSGNode::DirtyState state) = 0;
private:
diff --git a/src/quick/scenegraph/coreapi/qsgnode.h b/src/quick/scenegraph/coreapi/qsgnode.h
index d294e6f3ca..9d14ae04df 100644
--- a/src/quick/scenegraph/coreapi/qsgnode.h
+++ b/src/quick/scenegraph/coreapi/qsgnode.h
@@ -151,7 +151,7 @@ public:
QT_DEPRECATED void clearDirty() { }
void markDirty(DirtyState bits);
- QT_DEPRECATED DirtyState dirtyState() const { return 0; }
+ QT_DEPRECATED DirtyState dirtyState() const { return Q_NULLPTR; }
virtual bool isSubtreeBlocked() const;
diff --git a/src/quick/scenegraph/util/qsgengine.h b/src/quick/scenegraph/util/qsgengine.h
index beeb8a543f..89af71fb47 100644
--- a/src/quick/scenegraph/util/qsgengine.h
+++ b/src/quick/scenegraph/util/qsgengine.h
@@ -63,15 +63,15 @@ public:
};
Q_DECLARE_FLAGS(CreateTextureOptions, CreateTextureOption)
- QSGEngine(QObject *parent = 0);
+ explicit QSGEngine(QObject *parent = Q_NULLPTR);
~QSGEngine();
void initialize(QOpenGLContext *context);
void invalidate();
QSGAbstractRenderer *createRenderer() const;
- QSGTexture *createTextureFromImage(const QImage &image, CreateTextureOptions options = CreateTextureOption(0)) const;
- QSGTexture *createTextureFromId(uint id, const QSize &size, CreateTextureOptions options = CreateTextureOption(0)) const;
+ QSGTexture *createTextureFromImage(const QImage &image, CreateTextureOptions options = CreateTextureOption()) const;
+ QSGTexture *createTextureFromId(uint id, const QSize &size, CreateTextureOptions options = CreateTextureOption()) const;
};
QT_END_NAMESPACE
diff --git a/src/quick/util/qquickimageprovider.h b/src/quick/util/qquickimageprovider.h
index 0813711e48..d4719a7f5b 100644
--- a/src/quick/util/qquickimageprovider.h
+++ b/src/quick/util/qquickimageprovider.h
@@ -87,7 +87,7 @@ Q_SIGNALS:
class Q_QUICK_EXPORT QQuickImageProvider : public QQmlImageProviderBase
{
public:
- QQuickImageProvider(ImageType type, Flags flags = 0);
+ QQuickImageProvider(ImageType type, Flags flags = Flags());
virtual ~QQuickImageProvider();
ImageType imageType() const;
diff --git a/src/quickwidgets/qquickwidget.h b/src/quickwidgets/qquickwidget.h
index 688cafd475..0732c506bb 100644
--- a/src/quickwidgets/qquickwidget.h
+++ b/src/quickwidgets/qquickwidget.h
@@ -64,9 +64,9 @@ class Q_QUICKWIDGETS_EXPORT QQuickWidget : public QWidget
Q_PROPERTY(QUrl source READ source WRITE setSource DESIGNABLE true)
public:
- explicit QQuickWidget(QWidget *parent = 0);
+ explicit QQuickWidget(QWidget *parent = Q_NULLPTR);
QQuickWidget(QQmlEngine* engine, QWidget *parent);
- QQuickWidget(const QUrl &source, QWidget *parent = 0);
+ explicit QQuickWidget(const QUrl &source, QWidget *parent = Q_NULLPTR);
virtual ~QQuickWidget();
QUrl source() const;
diff --git a/tests/auto/quick/qquickanimatedsprite/tst_qquickanimatedsprite.cpp b/tests/auto/quick/qquickanimatedsprite/tst_qquickanimatedsprite.cpp
index c1998ae44e..27ce46d163 100644
--- a/tests/auto/quick/qquickanimatedsprite/tst_qquickanimatedsprite.cpp
+++ b/tests/auto/quick/qquickanimatedsprite/tst_qquickanimatedsprite.cpp
@@ -30,6 +30,7 @@
#include <QtQuick/qquickview.h>
#include <private/qabstractanimation_p.h>
#include <private/qquickanimatedsprite_p.h>
+#include <private/qquickitem_p.h>
#include <QtGui/qpainter.h>
#include <QtGui/qopenglcontext.h>
#include <QtGui/qopenglfunctions.h>
@@ -48,6 +49,7 @@ private slots:
void test_frameChangedSignal();
void test_largeAnimation_data();
void test_largeAnimation();
+ void test_reparenting();
};
void tst_qquickanimatedsprite::initTestCase()
@@ -263,6 +265,26 @@ void tst_qquickanimatedsprite::test_largeAnimation()
delete window;
}
+void tst_qquickanimatedsprite::test_reparenting()
+{
+ QQuickView window;
+ window.setSource(testFileUrl("basic.qml"));
+ window.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&window));
+
+ QVERIFY(window.rootObject());
+ QQuickAnimatedSprite* sprite = window.rootObject()->findChild<QQuickAnimatedSprite*>("sprite");
+ QVERIFY(sprite);
+
+ QTRY_VERIFY(sprite->running());
+ sprite->setParentItem(0);
+
+ sprite->setParentItem(window.rootObject());
+ // don't crash (QTBUG-51162)
+ sprite->polish();
+ QTRY_COMPARE(QQuickItemPrivate::get(sprite)->polishScheduled, true);
+ QTRY_COMPARE(QQuickItemPrivate::get(sprite)->polishScheduled, false);
+}
QTEST_MAIN(tst_qquickanimatedsprite)