┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views/versioncontrol/versioncontrolobserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/views/versioncontrol/versioncontrolobserver.cpp')
-rw-r--r--src/views/versioncontrol/versioncontrolobserver.cpp28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp
index fc74390a9..2d801686e 100644
--- a/src/views/versioncontrol/versioncontrolobserver.cpp
+++ b/src/views/versioncontrol/versioncontrolobserver.cpp
@@ -69,7 +69,7 @@ void VersionControlObserver::setModel(KFileItemModel* model)
disconnect(m_model, &KFileItemModel::itemsInserted,
this, &VersionControlObserver::delayedDirectoryVerification);
disconnect(m_model, &KFileItemModel::itemsChanged,
- this, &VersionControlObserver::delayedDirectoryVerification);
+ this, &VersionControlObserver::slotItemsChanged);
}
m_model = model;
@@ -78,7 +78,7 @@ void VersionControlObserver::setModel(KFileItemModel* model)
connect(m_model, &KFileItemModel::itemsInserted,
this, &VersionControlObserver::delayedDirectoryVerification);
connect(m_model, &KFileItemModel::itemsChanged,
- this, &VersionControlObserver::delayedDirectoryVerification);
+ this, &VersionControlObserver::slotItemsChanged);
}
}
@@ -137,6 +137,18 @@ void VersionControlObserver::silentDirectoryVerification()
m_dirVerificationTimer->start();
}
+void VersionControlObserver::slotItemsChanged(const KItemRangeList& itemRanges, const QSet<QByteArray>& roles)
+{
+ Q_UNUSED(itemRanges)
+
+ // Because "version" role is emitted 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();
+ }
+}
+
void VersionControlObserver::verifyDirectory()
{
if (!m_model) {
@@ -291,7 +303,7 @@ KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& director
if (enabledPlugins.contains((*it)->name())) {
KVersionControlPlugin* plugin = (*it)->createInstance<KVersionControlPlugin>(this);
if (plugin) {
- m_plugins.append(plugin);
+ m_plugins.append( qMakePair(plugin, plugin->fileName()) );
}
}
}
@@ -311,12 +323,12 @@ KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& director
// Verify whether the current directory contains revision information
// like .svn, .git, ...
- foreach (KVersionControlPlugin* plugin, m_plugins) {
- const QString fileName = directory.path() + '/' + plugin->fileName();
+ for (const auto &it : qAsConst(m_plugins)) {
+ const QString fileName = directory.path() + '/' + it.second;
if (QFile::exists(fileName)) {
// The score of this plugin is 0 (best), so we can just return this plugin,
// instead of going through the plugin scoring procedure, we can't find a better one ;)
- return plugin;
+ return it.first;
}
// Version control systems like Git provide the version information
@@ -330,10 +342,10 @@ KVersionControlPlugin* VersionControlObserver::searchPlugin(const QUrl& director
QUrl upUrl = KIO::upUrl(dirUrl);
int upUrlCounter = 1;
while ((upUrlCounter < bestScore) && (upUrl != dirUrl)) {
- const QString fileName = dirUrl.path() + '/' + plugin->fileName();
+ const QString fileName = dirUrl.path() + '/' + it.second;
if (QFile::exists(fileName)) {
if (upUrlCounter < bestScore) {
- bestPlugin = plugin;
+ bestPlugin = it.first;
bestScore = upUrlCounter;
}
break;