From 9a30b6330b1997d07a8f18b87e2b413faf95094a Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Sat, 28 Jul 2018 17:13:13 +0200 Subject: fix select multiple, and reinit model --- gui/designwidget.cc | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'gui') diff --git a/gui/designwidget.cc b/gui/designwidget.cc index ee6a14b4..106c3146 100644 --- a/gui/designwidget.cc +++ b/gui/designwidget.cc @@ -30,7 +30,7 @@ NEXTPNR_NAMESPACE_BEGIN -DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr) +DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr), selectionModel(nullptr) { // Add tree view treeView = new QTreeView(); @@ -158,9 +158,6 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr) &DesignWidget::prepareMenuProperty); connect(propertyEditor->treeWidget(), &QTreeWidget::itemDoubleClicked, this, &DesignWidget::onItemDoubleClicked); - selectionModel = treeView->selectionModel(); - connect(selectionModel, SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), - SLOT(onSelectionChanged(const QItemSelection &, const QItemSelection &))); connect(treeView, &QTreeWidget::customContextMenuRequested, this, &DesignWidget::prepareMenuTree); history_index = -1; @@ -202,6 +199,8 @@ void DesignWidget::addToHistory(QModelIndex item) void DesignWidget::newContext(Context *ctx) { + if (!ctx) + return; highlightSelected.clear(); history_ignore = false; @@ -211,16 +210,13 @@ void DesignWidget::newContext(Context *ctx) highlightSelected.clear(); this->ctx = ctx; + treeView->setModel(nullptr); treeModel->loadData(ctx); - updateTree(); } void DesignWidget::updateTree() { - if (!ctx) - return; - clearProperties(); QMap::iterator i = highlightSelected.begin(); @@ -236,6 +232,10 @@ void DesignWidget::updateTree() } treeModel->updateData(ctx); + treeView->setModel(treeModel); + selectionModel = treeView->selectionModel(); + connect(selectionModel, SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), + SLOT(onSelectionChanged(const QItemSelection &, const QItemSelection &))); } QtProperty *DesignWidget::addTopLevelProperty(const QString &id) { @@ -310,21 +310,21 @@ QtProperty *DesignWidget::addSubGroup(QtProperty *topItem, const QString &name) void DesignWidget::onClickedBel(BelId bel, bool keep) { ContextTreeItem *item = treeModel->nodeForIdType(ElementType::BEL, ctx->getBelName(bel).c_str(ctx)); - selectionModel->setCurrentIndex(treeModel->indexFromNode(item), QItemSelectionModel::ClearAndSelect); + selectionModel->setCurrentIndex(treeModel->indexFromNode(item), keep ? QItemSelectionModel::Select : QItemSelectionModel::ClearAndSelect); Q_EMIT selected(getDecals(ElementType::BEL, ctx->getBelName(bel)), keep); } void DesignWidget::onClickedWire(WireId wire, bool keep) { ContextTreeItem *item = treeModel->nodeForIdType(ElementType::WIRE, ctx->getWireName(wire).c_str(ctx)); - selectionModel->setCurrentIndex(treeModel->indexFromNode(item), QItemSelectionModel::ClearAndSelect); + selectionModel->setCurrentIndex(treeModel->indexFromNode(item), keep ? QItemSelectionModel::Select : QItemSelectionModel::ClearAndSelect); Q_EMIT selected(getDecals(ElementType::WIRE, ctx->getWireName(wire)), keep); } void DesignWidget::onClickedPip(PipId pip, bool keep) { ContextTreeItem *item = treeModel->nodeForIdType(ElementType::PIP, ctx->getPipName(pip).c_str(ctx)); - selectionModel->setCurrentIndex(treeModel->indexFromNode(item), QItemSelectionModel::ClearAndSelect); + selectionModel->setCurrentIndex(treeModel->indexFromNode(item), keep ? QItemSelectionModel::Select : QItemSelectionModel::ClearAndSelect); Q_EMIT selected(getDecals(ElementType::PIP, ctx->getPipName(pip)), keep); } -- cgit v1.2.3