diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2011-11-28 16:04:33 +0000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-05 15:33:30 +0100 |
commit | 5ac2990688c7da6ce872bccc5c08129267887d68 (patch) | |
tree | 4099c1f9e415dc3efda5ea97385a5a76824375c6 /src/quick/items/qquickitem.cpp | |
parent | 5c9179b19776808acecab4805b10932dc4f9511a (diff) |
Introduce more generic fast property handling
Also reduce the number of direct calls to qt_metacall().
Change-Id: I04cd6e516a3e61058548309a19fe0b830f15c93f
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Diffstat (limited to 'src/quick/items/qquickitem.cpp')
-rw-r--r-- | src/quick/items/qquickitem.cpp | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index a9409ecdf4..5ec0787d9e 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -64,14 +64,45 @@ #include <QtQuick/private/qdeclarativestate_p.h> #include <private/qlistmodelinterface_p.h> #include <private/qquickitem_p.h> +#include <private/qdeclarativeaccessors_p.h> #include <float.h> -// XXX todo Readd parentNotifier for faster parent bindings // XXX todo Check that elements that create items handle memory correctly after visual ownership change QT_BEGIN_NAMESPACE +static void QQuickItem_parentNotifier(QObject *o, intptr_t, QDeclarativeNotifier **n) +{ + QQuickItemPrivate *d = QQuickItemPrivate::get(static_cast<QQuickItem *>(o)); + *n = &d->parentNotifier; +} + +QML_PRIVATE_ACCESSOR(QQuickItem, QQuickItem *, parent, parentItem) +QML_PRIVATE_ACCESSOR(QQuickItem, qreal, x, x) +QML_PRIVATE_ACCESSOR(QQuickItem, qreal, y, y) +QML_PRIVATE_ACCESSOR(QQuickItem, qreal, width, width) +QML_PRIVATE_ACCESSOR(QQuickItem, qreal, height, height) + +static QDeclarativeAccessors QQuickItem_parent = { QQuickItem_parentRead, QQuickItem_parentNotifier }; +static QDeclarativeAccessors QQuickItem_x = { QQuickItem_xRead, 0 }; +static QDeclarativeAccessors QQuickItem_y = { QQuickItem_yRead, 0 }; +static QDeclarativeAccessors QQuickItem_width = { QQuickItem_widthRead, 0 }; +static QDeclarativeAccessors QQuickItem_height = { QQuickItem_heightRead, 0 }; + +QML_DECLARE_PROPERTIES(QQuickItem) { + { QML_PROPERTY_NAME(parent), 0, &QQuickItem_parent }, + { QML_PROPERTY_NAME(x), 0, &QQuickItem_x }, + { QML_PROPERTY_NAME(y), 0, &QQuickItem_y }, + { QML_PROPERTY_NAME(width), 0, &QQuickItem_width }, + { QML_PROPERTY_NAME(height), 0, &QQuickItem_height } +}; + +void QQuickItemPrivate::registerAccessorProperties() +{ + QML_DEFINE_PROPERTIES(QQuickItem); +} + /*! \qmlclass Transform QQuickTransform \inqmlmodule QtQuick 2 @@ -1880,6 +1911,7 @@ void QQuickItem::setParentItem(QQuickItem *parentItem) d->itemChange(ItemParentHasChanged, d->parentItem); + d->parentNotifier.notify(); emit parentChanged(d->parentItem); } |