void QDeclarativeLoaderPrivate::clear() { if (ownComponent) { component->deleteLater(); component = 0; ownComponent = false; } source = QUrl(); if (item) { if (QDeclarativeItem *qmlItem = qobject_cast<QDeclarativeItem*>(item)) { QDeclarativeItemPrivate *p = static_cast<QDeclarativeItemPrivate *>(QGraphicsItemPrivate::get(qmlItem)); p->removeItemChangeListener(this, QDeclarativeItemPrivate::Geometry); } // We can't delete immediately because our item may have triggered // the Loader to load a different item. if (item->scene()) { item->scene()->removeItem(item); } else { item->setParentItem(0); item->setVisible(false); } item->deleteLater(); item = 0; } }
QDeclarativeLoader::~QDeclarativeLoader() { Q_D(QDeclarativeLoader); if (d->item) { if (QDeclarativeItem *qmlItem = qobject_cast<QDeclarativeItem*>(d->item)) { QDeclarativeItemPrivate *p = static_cast<QDeclarativeItemPrivate *>(QGraphicsItemPrivate::get(qmlItem)); p->removeItemChangeListener(d, QDeclarativeItemPrivate::Geometry); } } }
void QDeclarativeBasePositionerPrivate::unwatchChanges(QGraphicsObject* other) { if (QGraphicsItemPrivate::get(other)->isDeclarativeItem) { QDeclarativeItemPrivate *otherPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(other)); otherPrivate->removeItemChangeListener(this, watchedChanges); } else { Q_Q(QDeclarativeBasePositioner); QObject::disconnect(other, SIGNAL(widthChanged()), q, SLOT(graphicsWidgetGeometryChanged())); QObject::disconnect(other, SIGNAL(heightChanged()), q, SLOT(graphicsWidgetGeometryChanged())); QObject::disconnect(other, SIGNAL(opacityChanged()), q, SLOT(graphicsWidgetGeometryChanged())); QObject::disconnect(other, SIGNAL(visibleChanged()), q, SLOT(graphicsWidgetGeometryChanged())); } }
void QDeclarativeAnchorsPrivate::remDepend(QGraphicsObject *item) { if (!item) return; QGraphicsItemPrivate * itemPrivate = QGraphicsItemPrivate::get(item); if (itemPrivate->isDeclarativeItem) { QDeclarativeItemPrivate *p = static_cast<QDeclarativeItemPrivate *>(itemPrivate); p->removeItemChangeListener(this, QDeclarativeItemPrivate::Geometry); } else if(itemPrivate->isWidget) { Q_Q(QDeclarativeAnchors); QGraphicsWidget *widget = static_cast<QGraphicsWidget *>(item); QObject::disconnect(widget, SIGNAL(destroyed(QObject*)), q, SLOT(_q_widgetDestroyed(QObject*))); QObject::disconnect(widget, SIGNAL(geometryChanged()), q, SLOT(_q_widgetGeometryChanged())); } }
void QDeclarativeBasePositionerPrivate::unwatchChanges(QDeclarativeItem* other) { QDeclarativeItemPrivate *otherPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(other)); otherPrivate->removeItemChangeListener(this, watchedChanges); }