Index: src/views/versioncontrol/versioncontrolobserver.cpp =================================================================== --- src/views/versioncontrol/versioncontrolobserver.cpp +++ src/views/versioncontrol/versioncontrolobserver.cpp @@ -69,7 +69,7 @@ disconnect(m_model, &KFileItemModel::itemsInserted, this, &VersionControlObserver::delayedDirectoryVerification); disconnect(m_model, &KFileItemModel::itemsChanged, - this, &VersionControlObserver::delayedDirectoryVerification); + this, nullptr); } m_model = model; @@ -77,8 +77,15 @@ if (model) { connect(m_model, &KFileItemModel::itemsInserted, this, &VersionControlObserver::delayedDirectoryVerification); - connect(m_model, &KFileItemModel::itemsChanged, - this, &VersionControlObserver::delayedDirectoryVerification); + + connect(m_model, &KFileItemModel::itemsChanged, [this] (const KItemRangeList&, const QSet& roles) { + // Because "version" role is emmited by VCS plugin (ourselfs) we don't need to + // analyze it and update directory item states information. So lets check if + // there is only "version". + if ( !(roles.count() == 1 && roles.contains("version")) ) { + delayedDirectoryVerification(); + } + } ); } }