┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMéven Car <[email protected]>2025-01-31 18:34:27 +0100
committerMéven Car <[email protected]>2025-02-08 13:02:12 +0100
commit49ca4692c2ba592fb9e867b3eee36a64a15a4105 (patch)
treea61bc68e45734ab55787658d887dc328fb3d5d96 /src
parent3ff3b35e963269f31cdf572257b25ea17c6b6958 (diff)
VersionControlObserver: start scanning earlier
And avoid scanning directory that don't need it. Stops the working thread upon model change.
Diffstat (limited to 'src')
-rw-r--r--src/views/versioncontrol/versioncontrolobserver.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp
index 3101c7727..521ff8b90 100644
--- a/src/views/versioncontrol/versioncontrolobserver.cpp
+++ b/src/views/versioncontrol/versioncontrolobserver.cpp
@@ -61,8 +61,16 @@ VersionControlObserver::~VersionControlObserver()
void VersionControlObserver::setModel(KFileItemModel *model)
{
if (m_model) {
+ if (m_currentPlugin) {
+ delete m_currentPlugin;
+ m_currentPlugin = nullptr;
+ }
+ if (m_updateItemStatesThread) {
+ m_updateItemStatesThread->requestInterruption();
+ }
disconnect(m_model, &KFileItemModel::itemsInserted, this, &VersionControlObserver::delayedDirectoryVerification);
disconnect(m_model, &KFileItemModel::itemsChanged, this, &VersionControlObserver::slotItemsChanged);
+ disconnect(m_model, &KFileItemModel::directoryLoadingCompleted, this, &VersionControlObserver::verifyDirectory);
}
m_model = model;
@@ -70,6 +78,7 @@ void VersionControlObserver::setModel(KFileItemModel *model)
if (model) {
connect(m_model, &KFileItemModel::itemsInserted, this, &VersionControlObserver::delayedDirectoryVerification);
connect(m_model, &KFileItemModel::itemsChanged, this, &VersionControlObserver::slotItemsChanged);
+ connect(m_model, &KFileItemModel::directoryLoadingCompleted, this, &VersionControlObserver::verifyDirectory);
}
}
@@ -124,12 +133,22 @@ QList<QAction *> VersionControlObserver::actions(const KFileItemList &items) con
void VersionControlObserver::delayedDirectoryVerification()
{
+ if (!isVersionControlled()) {
+ m_dirVerificationTimer->stop();
+ return;
+ }
+
m_silentUpdate = false;
m_dirVerificationTimer->start();
}
void VersionControlObserver::silentDirectoryVerification()
{
+ if (!isVersionControlled()) {
+ m_dirVerificationTimer->stop();
+ return;
+ }
+
m_silentUpdate = true;
m_dirVerificationTimer->start();
}