summaryrefslogtreecommitdiff
path: root/src/modinfodialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modinfodialog.cpp')
-rw-r--r--src/modinfodialog.cpp34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index c6cdb961..f11fa6f3 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -157,6 +157,8 @@ ModInfoDialog::ModInfoDialog(
update();
});
}
+
+ connect(ui->tabWidget, &QTabWidget::currentChanged, [&]{ onTabChanged(); });
}
ModInfoDialog::~ModInfoDialog() = default;
@@ -196,6 +198,10 @@ int ModInfoDialog::exec()
void ModInfoDialog::setMod(ModInfo::Ptr mod)
{
m_mod = mod;
+
+ for (auto& tabInfo : m_tabs) {
+ tabInfo.tab->resetFirstActivation();
+ }
}
void ModInfoDialog::setMod(const QString& name)
@@ -225,8 +231,25 @@ void ModInfoDialog::setTab(ETabs id)
switchToTab(id);
}
+ModInfoDialog::TabInfo* ModInfoDialog::currentTab()
+{
+ const auto index = ui->tabWidget->currentIndex();
+ if (index < 0) {
+ return nullptr;
+ }
+
+ const auto i = static_cast<std::size_t>(index);
+ if (i >= m_tabs.size()) {
+ return nullptr;
+ }
+
+ return &m_tabs[i];
+}
+
void ModInfoDialog::update(bool firstTime)
{
+ const int oldTab = ui->tabWidget->currentIndex();
+
setWindowTitle(m_mod->name());
setTabsVisibility(firstTime);
@@ -236,6 +259,12 @@ void ModInfoDialog::update(bool firstTime)
switchToTab(m_initialTab);
m_initialTab = ETabs(-1);
}
+
+ if (ui->tabWidget->currentIndex() == oldTab) {
+ if (auto* tabInfo=currentTab()) {
+ tabInfo->tab->activated();
+ }
+ }
}
void ModInfoDialog::setTabsVisibility(bool firstTime)
@@ -533,8 +562,11 @@ void ModInfoDialog::on_closeButton_clicked()
close();
}
-void ModInfoDialog::on_tabWidget_currentChanged(int index)
+void ModInfoDialog::onTabChanged()
{
+ if (auto* tabInfo=currentTab()) {
+ tabInfo->tab->activated();
+ }
}
void ModInfoDialog::on_nextButton_clicked()