summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2010-04-15 02:51:51 (GMT)
committerAaron Kennedy <aaron.kennedy@nokia.com>2010-04-15 02:51:51 (GMT)
commitc0eb81664f2bae225dcaca897c23564d6f97a3d1 (patch)
tree354f235d26815bad727df33b849853f06c75a961 /src
parent087e90f089918b939c19133909edb3528fc3e103 (diff)
downloadQt-c0eb81664f2bae225dcaca897c23564d6f97a3d1.zip
Qt-c0eb81664f2bae225dcaca897c23564d6f97a3d1.tar.gz
Qt-c0eb81664f2bae225dcaca897c23564d6f97a3d1.tar.bz2
Add QML object destruction hook
Diffstat (limited to 'src')
-rw-r--r--src/declarative/qml/qdeclarativeengine.cpp4
-rw-r--r--src/declarative/qml/qdeclarativeprivate.h11
2 files changed, 13 insertions, 2 deletions
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp
index c5afe92..85e8a9e 100644
--- a/src/declarative/qml/qdeclarativeengine.cpp
+++ b/src/declarative/qml/qdeclarativeengine.cpp
@@ -350,6 +350,10 @@ typedef QMap<QString, QString> StringStringMap;
Q_GLOBAL_STATIC(StringStringMap, qmlEnginePluginsWithRegisteredTypes); // stores the uri
+void QDeclarativePrivate::qdeclarativeelement_destructor(QObject *)
+{
+}
+
void QDeclarativeDeclarativeData::destroyed(QDeclarativeData *d, QObject *o)
{
static_cast<QDeclarativeDeclarativeData *>(d)->destroyed(o);
diff --git a/src/declarative/qml/qdeclarativeprivate.h b/src/declarative/qml/qdeclarativeprivate.h
index bebe82c..6e240d8 100644
--- a/src/declarative/qml/qdeclarativeprivate.h
+++ b/src/declarative/qml/qdeclarativeprivate.h
@@ -69,11 +69,18 @@ public:
class QDeclarativeCustomParser;
namespace QDeclarativePrivate
{
+ void Q_DECLARATIVE_EXPORT qdeclarativeelement_destructor(QObject *);
template<typename T>
- QObject *create() { return new T; }
+ class QDeclarativeElement : public T
+ {
+ public:
+ virtual ~QDeclarativeElement() {
+ QDeclarativePrivate::qdeclarativeelement_destructor(this);
+ }
+ };
template<typename T>
- void createInto(void *memory) { new (memory) T; }
+ void createInto(void *memory) { new (memory) QDeclarativeElement<T>; }
template<typename T>
QObject *createParent(QObject *p) { return new T(p); }