Git: Fix diff/show/blame editors coming to the foreground

Make sure all the proper arguments are applied when bringing a git
diff/show/blame editor to the foreground.

Task-number: QTCREATORBUG-5176
Change-Id: I4ca603311335ac4e591ba38a690f1f3a27725e8f
Reviewed-on: http://codereview.qt-project.org/5157
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
This commit is contained in:
Tobias Hunger
2011-09-19 16:03:35 +02:00
committed by Tobias Hunger
parent 6ef01600f3
commit a323c0d9fb

View File

@@ -512,19 +512,20 @@ void GitClient::diff(const QString &workingDirectory,
const QString editorId = QLatin1String(Git::Constants::GIT_DIFF_EDITOR_ID); const QString editorId = QLatin1String(Git::Constants::GIT_DIFF_EDITOR_ID);
const QString title = tr("Git Diff"); const QString title = tr("Git Diff");
QStringList userDiffArgs = diffArgs;
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("originalFileName", workingDirectory); VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("originalFileName", workingDirectory);
if (!editor) { if (!editor) {
GitCommitDiffArgumentsWidget *argWidget = GitCommitDiffArgumentsWidget *argWidget =
new GitCommitDiffArgumentsWidget(&m_settings, this, workingDirectory, diffArgs, new GitCommitDiffArgumentsWidget(&m_settings, this, workingDirectory, diffArgs,
unstagedFileNames, stagedFileNames); unstagedFileNames, stagedFileNames);
userDiffArgs = argWidget->arguments();
editor = createVCSEditor(editorId, title, editor = createVCSEditor(editorId, title,
workingDirectory, true, "originalFileName", workingDirectory, argWidget); workingDirectory, true, "originalFileName", workingDirectory, argWidget);
connect(editor, SIGNAL(diffChunkReverted(VCSBase::DiffChunk)), argWidget, SLOT(redoCommand())); connect(editor, SIGNAL(diffChunkReverted(VCSBase::DiffChunk)), argWidget, SLOT(redoCommand()));
editor->setRevertDiffChunkEnabled(true); editor->setRevertDiffChunkEnabled(true);
} }
GitCommitDiffArgumentsWidget *argWidget = qobject_cast<GitCommitDiffArgumentsWidget *>(editor->configurationWidget());
QStringList userDiffArgs = argWidget->arguments();
editor->setDiffBaseDirectory(workingDirectory); editor->setDiffBaseDirectory(workingDirectory);
// Create a batch of 2 commands to be run after each other in case // Create a batch of 2 commands to be run after each other in case
@@ -569,19 +570,20 @@ void GitClient::diff(const QString &workingDirectory,
const QString title = tr("Git Diff \"%1\"").arg(fileName); const QString title = tr("Git Diff \"%1\"").arg(fileName);
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, fileName); const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, fileName);
QStringList userDiffArgs = diffArgs;
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("originalFileName", sourceFile); VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("originalFileName", sourceFile);
if (!editor) { if (!editor) {
GitFileDiffArgumentsWidget *argWidget = GitFileDiffArgumentsWidget *argWidget =
new GitFileDiffArgumentsWidget(&m_settings, this, workingDirectory, new GitFileDiffArgumentsWidget(&m_settings, this, workingDirectory,
diffArgs, fileName); diffArgs, fileName);
userDiffArgs = argWidget->arguments();
editor = createVCSEditor(editorId, title, sourceFile, true, "originalFileName", sourceFile, argWidget); editor = createVCSEditor(editorId, title, sourceFile, true, "originalFileName", sourceFile, argWidget);
connect(editor, SIGNAL(diffChunkReverted(VCSBase::DiffChunk)), argWidget, SLOT(redoCommand())); connect(editor, SIGNAL(diffChunkReverted(VCSBase::DiffChunk)), argWidget, SLOT(redoCommand()));
editor->setRevertDiffChunkEnabled(true); editor->setRevertDiffChunkEnabled(true);
} }
GitFileDiffArgumentsWidget *argWidget = qobject_cast<GitFileDiffArgumentsWidget *>(editor->configurationWidget());
QStringList userDiffArgs = argWidget->arguments();
QStringList cmdArgs; QStringList cmdArgs;
cmdArgs << QLatin1String("diff") << QLatin1String(noColorOption) cmdArgs << QLatin1String("diff") << QLatin1String(noColorOption)
<< userDiffArgs; << userDiffArgs;
@@ -602,20 +604,18 @@ void GitClient::diffBranch(const QString &workingDirectory,
const QString title = tr("Git Diff Branch \"%1\"").arg(branchName); const QString title = tr("Git Diff Branch \"%1\"").arg(branchName);
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, QStringList()); const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, QStringList());
QStringList userDiffArgs = diffArgs;
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("BranchName", branchName); VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("BranchName", branchName);
if (!editor) { if (!editor)
GitBranchDiffArgumentsWidget *argWidget = editor = createVCSEditor(editorId, title, sourceFile, true, "BranchName", branchName,
new GitBranchDiffArgumentsWidget(&m_settings, this, workingDirectory, new GitBranchDiffArgumentsWidget(&m_settings, this, workingDirectory,
diffArgs, branchName); diffArgs, branchName));
userDiffArgs = argWidget->arguments();
editor = createVCSEditor(editorId, title, sourceFile, true, "BranchName", branchName, argWidget); GitBranchDiffArgumentsWidget *argWidget = qobject_cast<GitBranchDiffArgumentsWidget *>(editor->configurationWidget());
} QStringList userDiffArgs = argWidget->arguments();
QStringList cmdArgs; QStringList cmdArgs;
cmdArgs << QLatin1String("diff") << QLatin1String(noColorOption) cmdArgs << QLatin1String("diff") << QLatin1String(noColorOption)
<< diffArgs << branchName; << userDiffArgs << branchName;
executeGit(workingDirectory, cmdArgs, editor); executeGit(workingDirectory, cmdArgs, editor);
} }
@@ -713,17 +713,15 @@ void GitClient::show(const QString &source, const QString &id, const QStringList
return; return;
} }
QStringList userArgs = args;
const QString title = tr("Git Show \"%1\"").arg(id); const QString title = tr("Git Show \"%1\"").arg(id);
const QString editorId = QLatin1String(Git::Constants::GIT_DIFF_EDITOR_ID); const QString editorId = QLatin1String(Git::Constants::GIT_DIFF_EDITOR_ID);
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("show", id); VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("show", id);
if (!editor) { if (!editor)
GitShowArgumentsWidget *argWidget = editor = createVCSEditor(editorId, title, source, true, "show", id,
new GitShowArgumentsWidget(&m_settings, this, source, new GitShowArgumentsWidget(&m_settings, this, source, args, id));
QStringList(), id);
userArgs = argWidget->arguments(); GitShowArgumentsWidget *argWidget = qobject_cast<GitShowArgumentsWidget *>(editor->configurationWidget());
editor = createVCSEditor(editorId, title, source, true, "show", id, argWidget); QStringList userArgs = argWidget->arguments();
}
QStringList arguments; QStringList arguments;
arguments << QLatin1String("show") << QLatin1String(noColorOption); arguments << QLatin1String("show") << QLatin1String(noColorOption);
@@ -760,18 +758,18 @@ void GitClient::blame(const QString &workingDirectory,
const QString title = tr("Git Blame \"%1\"").arg(id); const QString title = tr("Git Blame \"%1\"").arg(id);
const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, fileName); const QString sourceFile = VCSBase::VCSBaseEditorWidget::getSource(workingDirectory, fileName);
QStringList userBlameArgs = args;
VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("blameFileName", id); VCSBase::VCSBaseEditorWidget *editor = findExistingVCSEditor("blameFileName", id);
if (!editor) { if (!editor) {
GitBlameArgumentsWidget *argWidget = GitBlameArgumentsWidget *argWidget =
new GitBlameArgumentsWidget(&m_settings, this, workingDirectory, userBlameArgs, new GitBlameArgumentsWidget(&m_settings, this, workingDirectory, args,
revision, fileName); revision, fileName);
editor = createVCSEditor(editorId, title, sourceFile, true, "blameFileName", id, argWidget); editor = createVCSEditor(editorId, title, sourceFile, true, "blameFileName", id, argWidget);
argWidget->setEditor(editor); argWidget->setEditor(editor);
userBlameArgs = argWidget->arguments();
} }
GitBlameArgumentsWidget *argWidget = qobject_cast<GitBlameArgumentsWidget *>(editor->configurationWidget());
QStringList userBlameArgs = argWidget->arguments();
QStringList arguments(QLatin1String("blame")); QStringList arguments(QLatin1String("blame"));
arguments << QLatin1String("--root"); arguments << QLatin1String("--root");
arguments.append(userBlameArgs); arguments.append(userBlameArgs);