From 49ca4692c2ba592fb9e867b3eee36a64a15a4105 Mon Sep 17 00:00:00 2001 From: =?utf8?q?M=C3=A9ven=20Car?= Date: Fri, 31 Jan 2025 18:34:27 +0100 Subject: [PATCH 1/1] VersionControlObserver: start scanning earlier And avoid scanning directory that don't need it. Stops the working thread upon model change. --- .../versioncontrol/versioncontrolobserver.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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 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(); } -- 2.47.3