diff options
| author | Miodrag Milanovic <mmicko@gmail.com> | 2018-07-28 17:13:13 +0200 | 
|---|---|---|
| committer | Miodrag Milanovic <mmicko@gmail.com> | 2018-07-28 17:13:13 +0200 | 
| commit | 9a30b6330b1997d07a8f18b87e2b413faf95094a (patch) | |
| tree | 2ce3f117e1036b691df22cbdaacc32d00fa20513 /gui | |
| parent | 0d3d149c4f3bb3197bc2f4488ba8f856f0f35889 (diff) | |
| download | nextpnr-9a30b6330b1997d07a8f18b87e2b413faf95094a.tar.gz nextpnr-9a30b6330b1997d07a8f18b87e2b413faf95094a.tar.bz2 nextpnr-9a30b6330b1997d07a8f18b87e2b413faf95094a.zip | |
fix select multiple, and reinit model
Diffstat (limited to 'gui')
| -rw-r--r-- | gui/designwidget.cc | 22 | 
1 files changed, 11 insertions, 11 deletions
| 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<ContextTreeItem *, int>::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);
  }
 | 
