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

View File

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

View File

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