Propagate proper ctx, fixes fetchMore

This commit is contained in:
Miodrag Milanovic 2018-11-11 10:53:48 +01:00
parent 3cfdb4e0c1
commit b8870bb99c
3 changed files with 14 additions and 13 deletions

View File

@ -297,7 +297,7 @@ void DesignWidget::newContext(Context *ctx)
auto belGetter = [](Context *ctx, BelId id) { return ctx->getBelName(id); };
getTreeByElementType(ElementType::BEL)
->loadData(std::unique_ptr<TreeModel::ElementXYRoot<BelId>>(
->loadData(ctx, std::unique_ptr<TreeModel::ElementXYRoot<BelId>>(
new TreeModel::ElementXYRoot<BelId>(ctx, belMap, belGetter, ElementType::BEL)));
}
@ -312,7 +312,7 @@ void DesignWidget::newContext(Context *ctx)
}
auto wireGetter = [](Context *ctx, WireId id) { return ctx->getWireName(id); };
getTreeByElementType(ElementType::WIRE)
->loadData(std::unique_ptr<TreeModel::ElementXYRoot<WireId>>(
->loadData(ctx, std::unique_ptr<TreeModel::ElementXYRoot<WireId>>(
new TreeModel::ElementXYRoot<WireId>(ctx, wireMap, wireGetter, ElementType::WIRE)));
}
@ -326,14 +326,14 @@ void DesignWidget::newContext(Context *ctx)
}
auto pipGetter = [](Context *ctx, PipId id) { return ctx->getPipName(id); };
getTreeByElementType(ElementType::PIP)
->loadData(std::unique_ptr<TreeModel::ElementXYRoot<PipId>>(
->loadData(ctx, std::unique_ptr<TreeModel::ElementXYRoot<PipId>>(
new TreeModel::ElementXYRoot<PipId>(ctx, pipMap, pipGetter, ElementType::PIP)));
}
#endif
getTreeByElementType(ElementType::CELL)
->loadData(std::unique_ptr<TreeModel::IdStringList>(new TreeModel::IdStringList(ElementType::CELL)));
->loadData(ctx, std::unique_ptr<TreeModel::IdStringList>(new TreeModel::IdStringList(ElementType::CELL)));
getTreeByElementType(ElementType::NET)
->loadData(std::unique_ptr<TreeModel::IdStringList>(new TreeModel::IdStringList(ElementType::NET)));
->loadData(ctx, std::unique_ptr<TreeModel::IdStringList>(new TreeModel::IdStringList(ElementType::NET)));
}
updateTree();
}
@ -367,8 +367,8 @@ void DesignWidget::updateTree()
nets.push_back(pair.first);
}
getTreeByElementType(ElementType::CELL)->updateElements(ctx, cells);
getTreeByElementType(ElementType::NET)->updateElements(ctx, nets);
getTreeByElementType(ElementType::CELL)->updateElements(cells);
getTreeByElementType(ElementType::NET)->updateElements(nets);
}
}
QtProperty *DesignWidget::addTopLevelProperty(const QString &id)

View File

@ -154,20 +154,21 @@ Model::Model(QObject *parent) : QAbstractItemModel(parent), root_(new Item("Elem
Model::~Model() {}
void Model::loadData(std::unique_ptr<Item> data)
void Model::loadData(Context *ctx, std::unique_ptr<Item> data)
{
beginResetModel();
ctx_ = ctx;
root_ = std::move(data);
endResetModel();
}
void Model::updateElements(Context *ctx, std::vector<IdString> elements)
void Model::updateElements(std::vector<IdString> elements)
{
if (!ctx)
if (!ctx_)
return;
beginResetModel();
root_->updateElements(ctx, elements);
root_->updateElements(ctx_, elements);
endResetModel();
}

View File

@ -352,8 +352,8 @@ class Model : public QAbstractItemModel
Model(QObject *parent = nullptr);
~Model();
void loadData(std::unique_ptr<Item> data);
void updateElements(Context *ctx, std::vector<IdString> elements);
void loadData(Context *ctx, std::unique_ptr<Item> data);
void updateElements(std::vector<IdString> elements);
Item *nodeFromIndex(const QModelIndex &idx) const;
QModelIndex indexFromNode(Item *node)
{