diff --git a/gitplusplus.cpp b/gitplusplus.cpp index 8fddcb5..338a3d6 100644 --- a/gitplusplus.cpp +++ b/gitplusplus.cpp @@ -545,6 +545,12 @@ GitPlusPlusView::GitPlusPlusView(GitPlusPlusPlugin *plugin, KTextEditor::MainWin } }); + // Connect to project plugin for project-switch detection + QObject *projectPluginView = m_mainWindow->pluginView(QStringLiteral("kateprojectplugin")); + if (projectPluginView) { + connect(projectPluginView, SIGNAL(projectChanged()), this, SLOT(onProjectChanged())); + } + // Refresh everything when the active view changes (project might have changed) connect(m_mainWindow, &KTextEditor::MainWindow::viewChanged, this, [this]() { QString newDir = projectBaseDir(); @@ -1045,6 +1051,17 @@ void GitPlusPlusView::runRemoteGit(const QStringList &args, const QString &opNam // Git operations // ============================================================================ +void GitPlusPlusView::onProjectChanged() +{ + QString newDir = projectBaseDir(); + if (newDir != m_gitDir) { + m_gitDir = newDir; + detectWorkspace(); + setupFileWatcher(); + refreshAll(); + } +} + void GitPlusPlusView::updateStatus() { m_gitDir = projectBaseDir(); diff --git a/gitplusplus.h b/gitplusplus.h index 283924d..3602a6c 100644 --- a/gitplusplus.h +++ b/gitplusplus.h @@ -63,6 +63,7 @@ public: private Q_SLOTS: // Status void updateStatus(); + void onProjectChanged(); void onStatusFinished(int exitCode, QProcess::ExitStatus exitStatus); // Stage/commit