]> cloud.milkyroute.net Git - dolphin.git/commitdiff
VersionControlObserver: start scanning earlier
authorMéven Car <meven@kde.org>
Fri, 31 Jan 2025 17:34:27 +0000 (18:34 +0100)
committerMéven Car <meven@kde.org>
Sat, 8 Feb 2025 12:02:12 +0000 (13:02 +0100)
And avoid scanning directory that don't need it.
Stops the working thread upon model change.

src/views/versioncontrol/versioncontrolobserver.cpp

index 3101c772793958178eace04248e58a9b54fa74e8..521ff8b900ab74044a8e302a294b47d8a2c0ee62 100644 (file)
@@ -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();
 }