diff --git a/pglab/SequenceModel.cpp b/pglab/SequenceModel.cpp index 6a4867b..659348f 100644 --- a/pglab/SequenceModel.cpp +++ b/pglab/SequenceModel.cpp @@ -32,17 +32,21 @@ QVariant SequenceModel::headerData(int section, Qt::Orientation orientation, int void SequenceModel::setCatalog(std::shared_ptr cat) { - m_catalog = cat; - reloadData(); + if (cat != m_catalog) { + m_catalog = cat; + refreshConnection = connect(m_catalog.get(), &PgDatabaseCatalog::refreshed, + this, &SequenceModel::refresh); + } + refresh(); } void SequenceModel::setNamespaceFilter(NamespaceFilter filter) { m_namespaceFilter = filter; - reloadData(); + refresh(); } -void SequenceModel::reloadData() +void SequenceModel::refresh() { if (!m_catalog) return; diff --git a/pglab/SequenceModel.h b/pglab/SequenceModel.h index f055f05..00aa7d3 100644 --- a/pglab/SequenceModel.h +++ b/pglab/SequenceModel.h @@ -45,8 +45,9 @@ private: std::shared_ptr m_catalog; std::vector m_sequences; NamespaceFilter m_namespaceFilter = NamespaceFilter::User; + QMetaObject::Connection refreshConnection; - void reloadData(); + void refresh(); }; #endif // SEQUENCEMODEL_H diff --git a/pglab/widgets/CatalogSequencesPage.cpp b/pglab/widgets/CatalogSequencesPage.cpp index e8774ae..1af5c22 100644 --- a/pglab/widgets/CatalogSequencesPage.cpp +++ b/pglab/widgets/CatalogSequencesPage.cpp @@ -28,6 +28,8 @@ CatalogSequencesPage::CatalogSequencesPage(QWidget *parent) connect(m_sequenceTable->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &CatalogSequencesPage::sequenceTable_currentRowChanged); + connect(m_model, &SequenceModel::modelReset, + [this] () { selectedSequenceChanged({}); }); retranslateUi(); }