summaryrefslogtreecommitdiff
path: root/src/datatab.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/datatab.cpp')
-rw-r--r--src/datatab.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/datatab.cpp b/src/datatab.cpp
index 21c205e5..165ee26a 100644
--- a/src/datatab.cpp
+++ b/src/datatab.cpp
@@ -20,9 +20,9 @@ DataTab::DataTab(
QWidget* parent, Ui::MainWindow* mwui) :
m_core(core), m_pluginContainer(pc), m_parent(parent),
ui{
- mwui->dataTabRefresh, mwui->dataTree,
+ mwui->tabWidget, mwui->dataTab, mwui->dataTabRefresh, mwui->dataTree,
mwui->dataTabShowOnlyConflicts, mwui->dataTabShowFromArchives},
- m_firstActivation(true)
+ m_needUpdate(true)
{
m_filetree.reset(new FileTree(core, m_pluginContainer, ui.tree));
m_filter.setUseSourceSort(true);
@@ -85,12 +85,16 @@ void DataTab::restoreState(const Settings& s)
void DataTab::activated()
{
- if (m_firstActivation) {
- m_firstActivation = false;
+ if (m_needUpdate) {
updateTree();
}
}
+bool DataTab::isActive() const
+{
+ return ui.tabs->currentWidget() == ui.tab;
+}
+
void DataTab::onRefresh()
{
if (QGuiApplication::keyboardModifiers() & Qt::ShiftModifier) {
@@ -103,6 +107,16 @@ void DataTab::onRefresh()
void DataTab::updateTree()
{
+ if (isActive()) {
+ doUpdateTree();
+ }
+ else {
+ m_needUpdate = true;
+ }
+}
+
+void DataTab::doUpdateTree()
+{
m_filetree->model()->setEnabled(true);
m_filetree->refresh();
@@ -113,6 +127,8 @@ void DataTab::updateTree()
m->invalidate();
}
}
+
+ m_needUpdate = true;
}
void DataTab::ensureFullyLoaded()