From 305085b58143c431d9abb7bd8dcb2f0954df725a Mon Sep 17 00:00:00 2001 From: Nikolai Krasheninnikov Date: Sun, 26 Jan 2020 17:06:40 +0100 Subject: Fixes multiple VCS plugin calls on single directory update. Summary: Fixes multiple VCS plugin beginRetrival()/endRetrival()/itemVersion() calls on single directory update. When VCS pluging finished gathering directory information VersionControlObserver::slotThreadFinished() calls KFileItemModel::setData() on each entry with appropriate item VCS information. This in turn emits KFileItemModel::itemsChanged() which is connected with VersionControlObserver::delayedDirectoryVerification() which is starting to gather VCS directory information again. This commits breaks the vicious circle. BUG: 415698 FIXED-IN: 20.04.0 Reviewers: #dolphin, meven, ngraham, elvisangelaccio Subscribers: kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D26721 --- src/views/versioncontrol/versioncontrolobserver.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/views/versioncontrol/versioncontrolobserver.h') diff --git a/src/views/versioncontrol/versioncontrolobserver.h b/src/views/versioncontrol/versioncontrolobserver.h index 08279dc86..7b269abec 100644 --- a/src/views/versioncontrol/versioncontrolobserver.h +++ b/src/views/versioncontrol/versioncontrolobserver.h @@ -33,6 +33,7 @@ class KFileItemList; class KFileItemModel; +class KItemRangeList; class QAction; class QTimer; class UpdateItemStatesThread; @@ -97,6 +98,12 @@ private slots: */ void silentDirectoryVerification(); + /** + * Invokes delayedDirectoryVerification() only if the itemsChanged() signal has not + * been triggered by the VCS plugin itself. + */ + void slotItemsChanged(const KItemRangeList& itemRanges, const QSet& roles); + void verifyDirectory(); /** -- cgit v1.3