예제 #1
0
void QScriptDebuggerLocalsModelPrivate::deleteAllObjectSnapshots()
{
    QList<qint64> snapshotIds;
    for (int i = 0; i < invisibleRootNode->children.count(); ++i)
        snapshotIds += findSnapshotIdsRecursively(invisibleRootNode->children.at(i));
    deleteObjectSnapshots(snapshotIds);
}
예제 #2
0
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));
}
예제 #3
0
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);
}
예제 #4
0
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);
}