diff --git a/src/DetailsTabs/ChangelogTab.h b/src/DetailsTabs/ChangelogTab.h --- a/src/DetailsTabs/ChangelogTab.h +++ b/src/DetailsTabs/ChangelogTab.h @@ -45,6 +45,7 @@ public Q_SLOTS: void setPackage(QApt::Package *package); + void refresh() override; void clear(); private Q_SLOTS: diff --git a/src/DetailsTabs/ChangelogTab.cpp b/src/DetailsTabs/ChangelogTab.cpp --- a/src/DetailsTabs/ChangelogTab.cpp +++ b/src/DetailsTabs/ChangelogTab.cpp @@ -57,6 +57,10 @@ void ChangelogTab::setPackage(QApt::Package *package) { m_package = package; +} + +void ChangelogTab::refresh() +{ fetchChangelog(); } diff --git a/src/DetailsTabs/DetailsTab.cpp b/src/DetailsTabs/DetailsTab.cpp --- a/src/DetailsTabs/DetailsTab.cpp +++ b/src/DetailsTabs/DetailsTab.cpp @@ -51,7 +51,6 @@ void DetailsTab::setPackage(QApt::Package *package) { m_package = package; - refresh(); } void DetailsTab::refresh() diff --git a/src/DetailsTabs/InstalledFilesTab.h b/src/DetailsTabs/InstalledFilesTab.h --- a/src/DetailsTabs/InstalledFilesTab.h +++ b/src/DetailsTabs/InstalledFilesTab.h @@ -38,6 +38,7 @@ public Q_SLOTS: void setPackage(QApt::Package *package); + void refresh() override; private Q_SLOTS: void populateFilesList(); diff --git a/src/DetailsTabs/InstalledFilesTab.cpp b/src/DetailsTabs/InstalledFilesTab.cpp --- a/src/DetailsTabs/InstalledFilesTab.cpp +++ b/src/DetailsTabs/InstalledFilesTab.cpp @@ -46,6 +46,10 @@ void InstalledFilesTab::setPackage(QApt::Package *package) { m_package = package; +} + +void InstalledFilesTab::refresh() +{ populateFilesList(); } diff --git a/src/DetailsTabs/VersionTab.h b/src/DetailsTabs/VersionTab.h --- a/src/DetailsTabs/VersionTab.h +++ b/src/DetailsTabs/VersionTab.h @@ -43,6 +43,7 @@ public Q_SLOTS: void setPackage(QApt::Package *package); + void refresh() override; private Q_SLOTS: void enableButton(); diff --git a/src/DetailsTabs/VersionTab.cpp b/src/DetailsTabs/VersionTab.cpp --- a/src/DetailsTabs/VersionTab.cpp +++ b/src/DetailsTabs/VersionTab.cpp @@ -92,6 +92,10 @@ void VersionTab::setPackage(QApt::Package *package) { m_package = package; +} + +void VersionTab::refresh() +{ m_versionModel->clear(); populateVersions(); } diff --git a/src/DetailsWidget.h b/src/DetailsWidget.h --- a/src/DetailsWidget.h +++ b/src/DetailsWidget.h @@ -48,7 +48,7 @@ public Q_SLOTS: void setBackend(QApt::Backend *backend); void setPackage(QApt::Package *package); - void refreshTabs(); + void refreshCurrentTab(); void clear(); void emitHideButtons(); diff --git a/src/DetailsWidget.cpp b/src/DetailsWidget.cpp --- a/src/DetailsWidget.cpp +++ b/src/DetailsWidget.cpp @@ -55,6 +55,10 @@ // Hide until a package is clicked hide(); + Q_FOREACH (DetailsTab *tab, m_detailsTabs) { + addTab(tab, tab->name()); + } + connect(mainTab, SIGNAL(setInstall(QApt::Package*)), this, SIGNAL(setInstall(QApt::Package*))); connect(mainTab, SIGNAL(setRemove(QApt::Package*)), @@ -69,6 +73,8 @@ this, SIGNAL(setPurge(QApt::Package*))); connect(this, SIGNAL(emitHideButtonsSignal()), mainTab, SLOT(hideButtons())); + connect(this, &DetailsWidget::currentChanged, + this, &DetailsWidget::refreshCurrentTab); } DetailsWidget::~DetailsWidget() @@ -84,17 +90,18 @@ void DetailsWidget::setPackage(QApt::Package *package) { + bool tabChanged = false; Q_FOREACH (DetailsTab *tab, m_detailsTabs) { tab->setPackage(package); - if (tab->shouldShow()) { - addTab(tab, tab->name()); - } else { - if (currentIndex() == indexOf(tab)) { - setCurrentIndex(0); - } - removeTab(indexOf(tab)); + if (currentIndex() == indexOf(tab) && !tab->shouldShow()) { + setCurrentIndex(0); + tabChanged = true; } + setTabEnabled(indexOf(tab), tab->shouldShow()); + } + if (!tabChanged) { + refreshCurrentTab(); } show(); @@ -105,9 +112,10 @@ emit emitHideButtonsSignal(); } -void DetailsWidget::refreshTabs() +void DetailsWidget::refreshCurrentTab() { - Q_FOREACH (DetailsTab *tab, m_detailsTabs) { + DetailsTab *tab = qobject_cast(currentWidget()); + if (tab) { tab->refresh(); } } diff --git a/src/PackageModel/PackageWidget.cpp b/src/PackageModel/PackageWidget.cpp --- a/src/PackageModel/PackageWidget.cpp +++ b/src/PackageModel/PackageWidget.cpp @@ -249,7 +249,7 @@ void PackageWidget::setBackend(QApt::Backend *backend) { m_backend = backend; - connect(m_backend, SIGNAL(packageChanged()), m_detailsWidget, SLOT(refreshTabs())); + connect(m_backend, SIGNAL(packageChanged()), m_detailsWidget, SLOT(refreshCurrentTab())); connect(m_backend, SIGNAL(packageChanged()), m_model, SLOT(externalDataChanged())); connect(m_backend, SIGNAL(cacheReloadStarted()), this, SLOT(cacheReloadStarted())); connect(m_backend, SIGNAL(cacheReloadFinished()), this, SLOT(cacheReloadFinished()));