aboutsummaryrefslogtreecommitdiffstats
path: root/gui/designwidget.cc
diff options
context:
space:
mode:
authorMiodrag Milanovic <mmicko@gmail.com>2018-10-27 16:00:47 +0200
committerMiodrag Milanovic <mmicko@gmail.com>2018-10-27 16:00:47 +0200
commitf66c5a0094c42ae57398f4d91eaba5f2b9015d55 (patch)
tree886c89cf144431caf0853d478714be82077bbe06 /gui/designwidget.cc
parentcb6baa0f6aa208b46291f50202babc69cce97d7b (diff)
downloadnextpnr-f66c5a0094c42ae57398f4d91eaba5f2b9015d55.tar.gz
nextpnr-f66c5a0094c42ae57398f4d91eaba5f2b9015d55.tar.bz2
nextpnr-f66c5a0094c42ae57398f4d91eaba5f2b9015d55.zip
update properties based on move history
Diffstat (limited to 'gui/designwidget.cc')
-rw-r--r--gui/designwidget.cc54
1 files changed, 37 insertions, 17 deletions
diff --git a/gui/designwidget.cc b/gui/designwidget.cc
index e6baf090..5356258f 100644
--- a/gui/designwidget.cc
+++ b/gui/designwidget.cc
@@ -94,9 +94,13 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr)
history_ignore = true;
history_index = 0;
auto h = history.at(history_index);
- selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::ClearAndSelect);
- if (tabWidget->currentIndex() != h.first)
+ if (tabWidget->currentIndex() != h.first) {
+ selectionModel[tabWidget->currentIndex()]->clearSelection();
tabWidget->setCurrentIndex(h.first);
+ selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::Select);
+ } else {
+ selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::ClearAndSelect);
+ }
updateButtons();
});
@@ -107,9 +111,13 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr)
history_ignore = true;
history_index--;
auto h = history.at(history_index);
- selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::ClearAndSelect);
- if (tabWidget->currentIndex() != h.first)
+ if (tabWidget->currentIndex() != h.first) {
+ selectionModel[tabWidget->currentIndex()]->clearSelection();
tabWidget->setCurrentIndex(h.first);
+ selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::Select);
+ } else {
+ selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::ClearAndSelect);
+ }
updateButtons();
});
@@ -120,9 +128,13 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr)
history_ignore = true;
history_index++;
auto h = history.at(history_index);
- selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::ClearAndSelect);
- if (tabWidget->currentIndex() != h.first)
+ if (tabWidget->currentIndex() != h.first) {
+ selectionModel[tabWidget->currentIndex()]->clearSelection();
tabWidget->setCurrentIndex(h.first);
+ selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::Select);
+ } else {
+ selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::ClearAndSelect);
+ }
updateButtons();
});
@@ -133,9 +145,13 @@ DesignWidget::DesignWidget(QWidget *parent) : QWidget(parent), ctx(nullptr)
history_ignore = true;
history_index = int(history.size() - 1);
auto h = history.at(history_index);
- selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::ClearAndSelect);
- if (tabWidget->currentIndex() != h.first)
+ if (tabWidget->currentIndex() != h.first) {
+ selectionModel[tabWidget->currentIndex()]->clearSelection();
tabWidget->setCurrentIndex(h.first);
+ selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::Select);
+ } else {
+ selectionModel[h.first]->setCurrentIndex(h.second, QItemSelectionModel::ClearAndSelect);
+ }
updateButtons();
});
@@ -470,9 +486,10 @@ void DesignWidget::onClickedBel(BelId bel, bool keep)
Q_EMIT selected(getDecals(ElementType::BEL, ctx->getBelName(bel)), keep);
}
- if (tabWidget->currentIndex() != 0)
- tabWidget->setCurrentIndex(0);
- selectionModel[0]->setCurrentIndex(getTreeByElementType(ElementType::BEL)->indexFromNode(*item),
+ int index = getIndexByElementType(ElementType::BEL);
+ if (tabWidget->currentIndex() != index)
+ tabWidget->setCurrentIndex(index);
+ selectionModel[index]->setCurrentIndex(getTreeByElementType(ElementType::BEL)->indexFromNode(*item),
keep ? QItemSelectionModel::Select : QItemSelectionModel::ClearAndSelect);
}
@@ -489,9 +506,10 @@ void DesignWidget::onClickedWire(WireId wire, bool keep)
Q_EMIT selected(getDecals(ElementType::WIRE, ctx->getWireName(wire)), keep);
}
- if (tabWidget->currentIndex() != 1)
- tabWidget->setCurrentIndex(1);
- selectionModel[1]->setCurrentIndex(getTreeByElementType(ElementType::WIRE)->indexFromNode(*item),
+ int index = getIndexByElementType(ElementType::WIRE);
+ if (tabWidget->currentIndex() != index)
+ tabWidget->setCurrentIndex(index);
+ selectionModel[index]->setCurrentIndex(getTreeByElementType(ElementType::WIRE)->indexFromNode(*item),
keep ? QItemSelectionModel::Select : QItemSelectionModel::ClearAndSelect);
}
@@ -508,9 +526,11 @@ void DesignWidget::onClickedPip(PipId pip, bool keep)
Q_EMIT selected(getDecals(ElementType::PIP, ctx->getPipName(pip)), keep);
}
- if (tabWidget->currentIndex() != 2)
- tabWidget->setCurrentIndex(2);
- selectionModel[2]->setCurrentIndex(getTreeByElementType(ElementType::PIP)->indexFromNode(*item),
+
+ int index = getIndexByElementType(ElementType::PIP);
+ if (tabWidget->currentIndex() != index)
+ tabWidget->setCurrentIndex(index);
+ selectionModel[index]->setCurrentIndex(getTreeByElementType(ElementType::PIP)->indexFromNode(*item),
keep ? QItemSelectionModel::Select : QItemSelectionModel::ClearAndSelect);
}