diff --git a/src/views/versioncontrol/versioncontrolobserver.cpp b/src/views/versioncontrol/versioncontrolobserver.cpp --- a/src/views/versioncontrol/versioncontrolobserver.cpp +++ b/src/views/versioncontrol/versioncontrolobserver.cpp @@ -168,8 +168,9 @@ return; } - if (m_plugin) { - m_plugin->disconnect(this); + // Disconnect everything and connect needed after. + for (const auto &i : qAsConst(m_plugins)) { + i.first->disconnect(this); } m_plugin = searchPlugin(rootItem.url()); @@ -191,13 +192,26 @@ m_dirVerificationTimer->setInterval(100); } updateItemStates(); - } else if (m_versionedDirectory) { - m_versionedDirectory = false; + } else { + if (m_versionedDirectory) { + m_versionedDirectory = false; - // The directory is not versioned. Reset the verification timer to a higher - // value, so that browsing through non-versioned directories is not slown down - // by an immediate verification. - m_dirVerificationTimer->setInterval(500); + // The directory is not versioned. Reset the verification timer to a higher + // value, so that browsing through non-versioned directories is not slown down + // by an immediate verification. + m_dirVerificationTimer->setInterval(500); + } + + // Connect everything: the directory is not versioned so every plugin can do + // KVersionControlPlugin::outOfVersionControlActions() with appropriate messages. + for (const auto &i : qAsConst(m_plugins)) { + connect(i.first, &KVersionControlPlugin::infoMessage, + this, &VersionControlObserver::infoMessage); + connect(i.first, &KVersionControlPlugin::errorMessage, + this, &VersionControlObserver::errorMessage); + connect(i.first, &KVersionControlPlugin::operationCompletedMessage, + this, &VersionControlObserver::operationCompletedMessage); + } } }