void QScriptDebuggerLocalsModelPrivate::deleteAllObjectSnapshots() { QList<qint64> snapshotIds; for (int i = 0; i < invisibleRootNode->children.count(); ++i) snapshotIds += findSnapshotIdsRecursively(invisibleRootNode->children.at(i)); deleteObjectSnapshots(snapshotIds); }
QScriptDebuggerLocalsModel::~QScriptDebuggerLocalsModel() { Q_D(QScriptDebuggerLocalsModel); QList<qint64> snapshotIds; for (int i = 0; i < d->invisibleRootNode->children.count(); ++i) snapshotIds += findSnapshotIdsRecursively(d->invisibleRootNode->children.at(i)); QScriptDebuggerCommandSchedulerFrontend frontend(d->commandScheduler, 0); for (int j = 0; j < snapshotIds.size(); ++j) frontend.scheduleDeleteScriptObjectSnapshot(snapshotIds.at(j)); }
void QScriptDebuggerLocalsModelPrivate::removeChild(const QModelIndex &parentIndex, QScriptDebuggerLocalsModelNode *parentNode, int row) { Q_Q(QScriptDebuggerLocalsModel); q->beginRemoveRows(parentIndex, row, row); QScriptDebuggerLocalsModelNode *child = parentNode->children.takeAt(row); QList<qint64> snapshotIds = findSnapshotIdsRecursively(child); delete child; q->endRemoveRows(); deleteObjectSnapshots(snapshotIds); }
void QScriptDebuggerLocalsModelPrivate::depopulate(QScriptDebuggerLocalsModelNode *node) { Q_Q(QScriptDebuggerLocalsModel); bool hasChildren = !node->children.isEmpty(); if (hasChildren) q->beginRemoveRows(indexFromNode(node), 0, node->children.count() - 1); QList<qint64> snapshotIds = findSnapshotIdsRecursively(node); qDeleteAll(node->children); node->children.clear(); node->snapshotId = -1; node->populationState = QScriptDebuggerLocalsModelNode::NotPopulated; if (hasChildren) q->endRemoveRows(); deleteObjectSnapshots(snapshotIds); }