diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp index 0ad3228d7aa8eaf81e7eacbc9d5b72e239fc0f43..70315932a1b14171031ea85e2ce6d892c1b30361 100644 --- a/src/plugins/clearcase/clearcaseplugin.cpp +++ b/src/plugins/clearcase/clearcaseplugin.cpp @@ -1253,12 +1253,12 @@ void ClearCasePlugin::annotateCurrentFile() vcsAnnotate(state.currentFileTopLevel(), state.relativeCurrentFile()); } -void ClearCasePlugin::annotateVersion(const QString &file, - const QString &revision, - int lineNr) +void ClearCasePlugin::annotateVersion(const QString &workingDirectory, + const QString &file, + const QString &revision, + int lineNr) { - const QFileInfo fi(file); - vcsAnnotate(fi.absolutePath(), fi.fileName(), revision, lineNr); + vcsAnnotate(workingDirectory, file, revision, lineNr); } void ClearCasePlugin::vcsAnnotate(const QString &workingDir, const QString &file, @@ -1402,8 +1402,8 @@ IEditor *ClearCasePlugin::showOutputInEditor(const QString& title, const QString << "Size= " << output.size() << " Type=" << editorType << debugCodec(codec); QString s = title; IEditor *editor = EditorManager::openEditorWithContents(id, &s, output.toUtf8()); - connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,int)), - this, SLOT(annotateVersion(QString,QString,int))); + connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)), + this, SLOT(annotateVersion(QString,QString,QString,int))); ClearCaseEditor *e = qobject_cast<ClearCaseEditor*>(editor->widget()); if (!e) return 0; diff --git a/src/plugins/clearcase/clearcaseplugin.h b/src/plugins/clearcase/clearcaseplugin.h index fb011182da2c8a0d196851123c625fead17d9caa..6d62e2e5e88fe6a9b720841351ebb427ddb75998 100644 --- a/src/plugins/clearcase/clearcaseplugin.h +++ b/src/plugins/clearcase/clearcaseplugin.h @@ -185,7 +185,7 @@ private slots: void startCheckInCurrentFile(); void historyCurrentFile(); void annotateCurrentFile(); - void annotateVersion(const QString &file, const QString &revision, int lineNumber); + void annotateVersion(const QString &workingDirectory, const QString &file, const QString &revision, int lineNumber); void describe(const QString &source, const QString &changeNr); void viewStatus(); void checkInSelected(); diff --git a/src/plugins/cvs/cvscontrol.cpp b/src/plugins/cvs/cvscontrol.cpp index e4ddcfd3804d5f8f357cd3bb73ad6c4f1106b9e0..87fdc2cf242bdb794b51b0795de8b988612d6edb 100644 --- a/src/plugins/cvs/cvscontrol.cpp +++ b/src/plugins/cvs/cvscontrol.cpp @@ -148,7 +148,8 @@ bool CvsControl::vcsRemoveSnapshot(const QString &, const QString &) bool CvsControl::vcsAnnotate(const QString &file, int line) { - m_plugin->vcsAnnotate(file, QString(), line); + const QFileInfo fi(file); + m_plugin->vcsAnnotate(fi.absolutePath(), fi.fileName(), QString(), line); return true; } diff --git a/src/plugins/cvs/cvsplugin.cpp b/src/plugins/cvs/cvsplugin.cpp index fdbd7ea1c3670fd193d62b04854ffb68756b0624..646bc6b08717312971fad1bf3f84fea203767072 100644 --- a/src/plugins/cvs/cvsplugin.cpp +++ b/src/plugins/cvs/cvsplugin.cpp @@ -923,10 +923,10 @@ void CvsPlugin::annotateCurrentFile() annotate(state.currentFileTopLevel(), state.relativeCurrentFile()); } -void CvsPlugin::vcsAnnotate(const QString &file, const QString &revision, int lineNumber) +void CvsPlugin::vcsAnnotate(const QString &workingDirectory, const QString &file, + const QString &revision, int lineNumber) { - const QFileInfo fi(file); - annotate(fi.absolutePath(), fi.fileName(), revision, lineNumber); + annotate(workingDirectory, file, revision, lineNumber); } bool CvsPlugin::edit(const QString &topLevel, const QStringList &files) @@ -1274,8 +1274,8 @@ IEditor *CvsPlugin::showOutputInEditor(const QString& title, const QString &outp << "source=" << source << "Size= " << output.size() << " Type=" << editorType << debugCodec(codec); QString s = title; IEditor *editor = EditorManager::openEditorWithContents(id, &s, output.toUtf8()); - connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,int)), - this, SLOT(vcsAnnotate(QString,QString,int))); + connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)), + this, SLOT(vcsAnnotate(QString,QString,QString,int))); CvsEditor *e = qobject_cast<CvsEditor*>(editor->widget()); if (!e) return 0; diff --git a/src/plugins/cvs/cvsplugin.h b/src/plugins/cvs/cvsplugin.h index 9608cd2e1bdc6af8653d24af916e34714989a90f..ba5aad89b8ff6d1fb79ecf9b6a0ec26d0feb94d7 100644 --- a/src/plugins/cvs/cvsplugin.h +++ b/src/plugins/cvs/cvsplugin.h @@ -96,7 +96,8 @@ public: static CvsPlugin *instance(); public slots: - void vcsAnnotate(const QString &file, const QString &revision /* = QString() */, int lineNumber); + void vcsAnnotate(const QString &workingDirectory, const QString &file, + const QString &revision, int lineNumber); private slots: void addCurrentFile(); diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index 87fb48d6f3c588a8c201d606860ae67d6213e3ec..bd6327ec92cbf555dc7c10dad169c7ee5df4956a 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -1038,8 +1038,8 @@ VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor( m_msgWait.toUtf8()); outputEditor->document()->setProperty(registerDynamicProperty, dynamicPropertyValue); rc = VcsBase::VcsBaseEditorWidget::getVcsBaseEditor(outputEditor); - connect(rc, SIGNAL(annotateRevisionRequested(QString,QString,int)), - this, SLOT(slotBlameRevisionRequested(QString,QString,int))); + connect(rc, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)), + this, SLOT(slotBlameRevisionRequested(QString,QString,QString,int))); QTC_ASSERT(rc, return 0); rc->setSource(source); if (codecType == CodecSource) { @@ -1461,15 +1461,15 @@ void GitClient::saveSettings() settings()->writeSettings(Core::ICore::settings()); } -void GitClient::slotBlameRevisionRequested(const QString &source, QString change, int lineNumber) +void GitClient::slotBlameRevisionRequested(const QString &workingDirectory, const QString &file, + QString change, int lineNumber) { // This might be invoked with a verbose revision description // "SHA1 author subject" from the annotation context menu. Strip the rest. const int blankPos = change.indexOf(QLatin1Char(' ')); if (blankPos != -1) change.truncate(blankPos); - const QFileInfo fi(source); - blame(fi.absolutePath(), QStringList(), fi.fileName(), change, lineNumber); + blame(workingDirectory, QStringList(), file, change, lineNumber); } QTextCodec *GitClient::getSourceCodec(const QString &file) const diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h index 610a08498edbd2ddee7c96097f90b80d9f6a46cc..7517f2629a58c2a5a5458ded42e2bec65ed70e7c 100644 --- a/src/plugins/git/gitclient.h +++ b/src/plugins/git/gitclient.h @@ -335,7 +335,8 @@ public slots: void saveSettings(); private slots: - void slotBlameRevisionRequested(const QString &source, QString change, int lineNumber); + void slotBlameRevisionRequested(const QString &workingDirectory, const QString &file, + QString change, int lineNumber); void finishSubmoduleUpdate(); void fetchFinished(const QVariant &cookie); diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index a4e42e28bdd551293bc221bcfb4617e41b020e7e..ec8e13e5eea63e2659244272f71af68c60c21bfc 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -692,10 +692,10 @@ void PerforcePlugin::annotate() } } -void PerforcePlugin::vcsAnnotate(const QString &file, const QString &revision, int lineNumber) +void PerforcePlugin::vcsAnnotate(const QString &workingDirectory, const QString &file, + const QString &revision, int lineNumber) { - const QFileInfo fi(file); - annotate(fi.absolutePath(), fi.fileName(), revision, lineNumber); + annotate(workingDirectory, file, revision, lineNumber); } void PerforcePlugin::annotate(const QString &workingDir, @@ -1166,8 +1166,8 @@ Core::IEditor *PerforcePlugin::showOutputInEditor(const QString &title, const QS << "Size= " << output.size() << " Type=" << editorType << debugCodec(codec); QString s = title; Core::IEditor *editor = Core::EditorManager::openEditorWithContents(id, &s, output.toUtf8()); - connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,int)), - this, SLOT(vcsAnnotate(QString,QString,int))); + connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)), + this, SLOT(vcsAnnotate(QString,QString,QString,int))); PerforceEditor *e = qobject_cast<PerforceEditor*>(editor->widget()); if (!e) return 0; diff --git a/src/plugins/perforce/perforceplugin.h b/src/plugins/perforce/perforceplugin.h index 33d8f4737b0e93cde1252c144f51b13644ad85db..71e0a6e39d7ff2c87a2403a481fa87ef1bf89b30 100644 --- a/src/plugins/perforce/perforceplugin.h +++ b/src/plugins/perforce/perforceplugin.h @@ -105,7 +105,8 @@ public: public slots: void describe(const QString &source, const QString &n); - void vcsAnnotate(const QString &file, const QString &revision /* = QString() */, int lineNumber); + void vcsAnnotate(const QString &workingDirectory, const QString &file, + const QString &revision, int lineNumber); void p4Diff(const Perforce::Internal::PerforceDiffParameters &p); private slots: diff --git a/src/plugins/perforce/perforceversioncontrol.cpp b/src/plugins/perforce/perforceversioncontrol.cpp index 19303a66fa843f8ea1fa643e2c4c4547aa5b3c29..a6477335916f7b92c2d491b39a8fdd57c0326738 100644 --- a/src/plugins/perforce/perforceversioncontrol.cpp +++ b/src/plugins/perforce/perforceversioncontrol.cpp @@ -147,7 +147,8 @@ bool PerforceVersionControl::vcsRemoveSnapshot(const QString &, const QString &) bool PerforceVersionControl::vcsAnnotate(const QString &file, int line) { - m_plugin->vcsAnnotate(file, QString(), line); + const QFileInfo fi(file); + m_plugin->vcsAnnotate(fi.absolutePath(), fi.fileName(), QString(), line); return true; } diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp index d41c1b24286adfdb3760667a917fdea59b2d0882..5f060a2081a3c034eae5b95c30ba846da553b876 100644 --- a/src/plugins/subversion/subversionplugin.cpp +++ b/src/plugins/subversion/subversionplugin.cpp @@ -940,12 +940,12 @@ void SubversionPlugin::annotateCurrentFile() vcsAnnotate(state.currentFileTopLevel(), state.relativeCurrentFile()); } -void SubversionPlugin::annotateVersion(const QString &file, +void SubversionPlugin::annotateVersion(const QString &workingDirectory, + const QString &file, const QString &revision, int lineNr) { - const QFileInfo fi(file); - vcsAnnotate(fi.absolutePath(), fi.fileName(), revision, lineNr); + vcsAnnotate(workingDirectory, file, revision, lineNr); } void SubversionPlugin::vcsAnnotate(const QString &workingDir, const QString &file, @@ -1177,8 +1177,8 @@ Core::IEditor *SubversionPlugin::showOutputInEditor(const QString &title, const << "Size= " << output.size() << " Type=" << editorType << debugCodec(codec); QString s = title; Core::IEditor *editor = Core::EditorManager::openEditorWithContents(id, &s, output.toUtf8()); - connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,int)), - this, SLOT(annotateVersion(QString,QString,int))); + connect(editor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)), + this, SLOT(annotateVersion(QString,QString,QString,int))); SubversionEditor *e = qobject_cast<SubversionEditor*>(editor->widget()); if (!e) return 0; diff --git a/src/plugins/subversion/subversionplugin.h b/src/plugins/subversion/subversionplugin.h index f0664cc5c62130e3fb20932b2a983bc23cda64c7..81a89b668eaa1d5a32b423a21eeb57346f5cf4b7 100644 --- a/src/plugins/subversion/subversionplugin.h +++ b/src/plugins/subversion/subversionplugin.h @@ -131,7 +131,7 @@ private slots: void revertAll(); void filelogCurrentFile(); void annotateCurrentFile(); - void annotateVersion(const QString &file, const QString &revision, int lineNumber); + void annotateVersion(const QString &workingDirectory, const QString &file, const QString &revision, int lineNumber); void projectStatus(); void describe(const QString &source, const QString &changeNr); void slotDescribe(); diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index feb4c5588bc78e53973af97f5ac965971102b611..e68ae7c15992933d7886d2deb4856c0a34a23420 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -90,7 +90,8 @@ public: VcsBaseClientPrivate(VcsBaseClient *client, VcsBaseClientSettings *settings); void statusParser(const QString &text); - void annotateRevision(QString source, QString change, int lineNumber); + void annotateRevision(const QString &workingDirectory, const QString &file, + QString change, int lineNumber); void saveSettings(); void bindCommandToEditor(Command *cmd, VcsBaseEditorWidget *editor); @@ -125,15 +126,15 @@ void VcsBaseClientPrivate::statusParser(const QString &text) emit m_client->parsedStatus(lineInfoList); } -void VcsBaseClientPrivate::annotateRevision(QString source, QString change, int lineNumber) +void VcsBaseClientPrivate::annotateRevision(const QString &workingDirectory, const QString &file, + QString change, int lineNumber) { // This might be invoked with a verbose revision description // "SHA1 author subject" from the annotation context menu. Strip the rest. const int blankPos = change.indexOf(QLatin1Char(' ')); if (blankPos != -1) change.truncate(blankPos); - const QFileInfo fi(source); - m_client->annotate(fi.absolutePath(), fi.fileName(), change, lineNumber); + m_client->annotate(workingDirectory, file, change, lineNumber); } void VcsBaseClientPrivate::saveSettings() @@ -574,8 +575,8 @@ VcsBase::VcsBaseEditorWidget *VcsBaseClient::createVcsEditor(Core::Id kind, QStr outputEditor = Core::EditorManager::openEditorWithContents(kind, &title, progressMsg.toUtf8()); outputEditor->document()->setProperty(registerDynamicProperty, dynamicPropertyValue); baseEditor = VcsBase::VcsBaseEditorWidget::getVcsBaseEditor(outputEditor); - connect(baseEditor, SIGNAL(annotateRevisionRequested(QString,QString,int)), - this, SLOT(annotateRevision(QString,QString,int))); + connect(baseEditor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)), + this, SLOT(annotateRevision(QString,QString,QString,int))); QTC_ASSERT(baseEditor, return 0); baseEditor->setSource(source); if (setSourceCodec) diff --git a/src/plugins/vcsbase/vcsbaseclient.h b/src/plugins/vcsbase/vcsbaseclient.h index f4c9bf957f35ed45bb37ddceec6df4d58a4aa37d..2d3ff336a03252ab40e080c7abcc777983deef20 100644 --- a/src/plugins/vcsbase/vcsbaseclient.h +++ b/src/plugins/vcsbase/vcsbaseclient.h @@ -194,7 +194,7 @@ private: VcsBaseClientPrivate *d; Q_PRIVATE_SLOT(d, void statusParser(QString)) - Q_PRIVATE_SLOT(d, void annotateRevision(QString, QString, int)) + Q_PRIVATE_SLOT(d, void annotateRevision(QString, QString, QString, int)) Q_PRIVATE_SLOT(d, void saveSettings()) Q_PRIVATE_SLOT(d, void commandFinishedGotoLine(QWidget *)) }; diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index 0c415cf8ebe7dff6f7695f043dd29c19148e500f..766c02a6d57b3acdc137fe858508a39275267891 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -158,7 +158,8 @@ public: signals: void describeRequested(const QString &source, const QString &change); - void annotateRevisionRequested(const QString &source, const QString &change, int line); + void annotateRevisionRequested(const QString &workingDirectory, const QString &file, + const QString &change, int line); private: Core::Id m_id; @@ -818,8 +819,8 @@ TextEditor::BaseTextEditor *VcsBaseEditorWidget::createEditor() // Pass on signals. connect(this, SIGNAL(describeRequested(QString,QString)), editor, SIGNAL(describeRequested(QString,QString))); - connect(this, SIGNAL(annotateRevisionRequested(QString,QString,int)), - editor, SIGNAL(annotateRevisionRequested(QString,QString,int))); + connect(this, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)), + editor, SIGNAL(annotateRevisionRequested(QString,QString,QString,int))); return editor; } @@ -1412,9 +1413,11 @@ void VcsBaseEditorWidget::addDiffActions(QMenu *, const DiffChunk &) void VcsBaseEditorWidget::slotAnnotateRevision() { - if (const QAction *a = qobject_cast<const QAction *>(sender())) - emit annotateRevisionRequested(source(), a->data().toString(), - editor()->currentLine()); + if (const QAction *a = qobject_cast<const QAction *>(sender())) { + QFileInfo fi(source()); + emit annotateRevisionRequested(fi.absolutePath(), fi.fileName(), + a->data().toString(), currentLine); + } } QStringList VcsBaseEditorWidget::annotationPreviousVersions(const QString &) const diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h index ae2587c88a91cbbc1bd24257bd5d806ecbc470dd..ccc0ee97f14fb708494dc60dd420def06d9c89b3 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.h +++ b/src/plugins/vcsbase/vcsbaseeditor.h @@ -202,7 +202,8 @@ signals: // handled by the editor manager for convenience. They are emitted // for LogOutput/AnnotateOutput content types. void describeRequested(const QString &source, const QString &change); - void annotateRevisionRequested(const QString &source, const QString &change, int lineNumber); + void annotateRevisionRequested(const QString &workingDirectory, const QString &file, + const QString &change, int lineNumber); void diffChunkApplied(const VcsBase::DiffChunk &dc); void diffChunkReverted(const VcsBase::DiffChunk &dc);