From b8870bb99c24d2998ca5bb5245589dd9d0703ea4 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sun, 11 Nov 2018 10:53:48 +0100 Subject: [PATCH] Propagate proper ctx, fixes fetchMore --- gui/designwidget.cc | 14 +++++++------- gui/treemodel.cc | 9 +++++---- gui/treemodel.h | 4 ++-- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/gui/designwidget.cc b/gui/designwidget.cc index 8be71f3f..f7805320 100644 --- a/gui/designwidget.cc +++ b/gui/designwidget.cc @@ -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>( + ->loadData(ctx, std::unique_ptr>( new TreeModel::ElementXYRoot(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>( + ->loadData(ctx, std::unique_ptr>( new TreeModel::ElementXYRoot(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>( + ->loadData(ctx, std::unique_ptr>( new TreeModel::ElementXYRoot(ctx, pipMap, pipGetter, ElementType::PIP))); } #endif getTreeByElementType(ElementType::CELL) - ->loadData(std::unique_ptr(new TreeModel::IdStringList(ElementType::CELL))); + ->loadData(ctx, std::unique_ptr(new TreeModel::IdStringList(ElementType::CELL))); getTreeByElementType(ElementType::NET) - ->loadData(std::unique_ptr(new TreeModel::IdStringList(ElementType::NET))); + ->loadData(ctx, std::unique_ptr(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) diff --git a/gui/treemodel.cc b/gui/treemodel.cc index ab7dc263..b834c682 100644 --- a/gui/treemodel.cc +++ b/gui/treemodel.cc @@ -154,20 +154,21 @@ Model::Model(QObject *parent) : QAbstractItemModel(parent), root_(new Item("Elem Model::~Model() {} -void Model::loadData(std::unique_ptr data) +void Model::loadData(Context *ctx, std::unique_ptr data) { beginResetModel(); + ctx_ = ctx; root_ = std::move(data); endResetModel(); } -void Model::updateElements(Context *ctx, std::vector elements) +void Model::updateElements(std::vector elements) { - if (!ctx) + if (!ctx_) return; beginResetModel(); - root_->updateElements(ctx, elements); + root_->updateElements(ctx_, elements); endResetModel(); } diff --git a/gui/treemodel.h b/gui/treemodel.h index dbbf1025..d7f337a3 100644 --- a/gui/treemodel.h +++ b/gui/treemodel.h @@ -352,8 +352,8 @@ class Model : public QAbstractItemModel Model(QObject *parent = nullptr); ~Model(); - void loadData(std::unique_ptr data); - void updateElements(Context *ctx, std::vector elements); + void loadData(Context *ctx, std::unique_ptr data); + void updateElements(std::vector elements); Item *nodeFromIndex(const QModelIndex &idx) const; QModelIndex indexFromNode(Item *node) {