diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2017-06-11 17:44:32 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2017-06-19 08:08:02 +0000 |
commit | a36536813f9aa00944fd8fcab2e2689a385d5387 (patch) | |
tree | 10b4fb9abe4b0221f9f9b503b92a549a337ceeea /src | |
parent | 771d9f222c6af0aa5f3622b51baf78d645770b0d (diff) |
VCS: Set user choices on editor reload
Broke by 2c6adc1e74.
Change-Id: Iba435899c7b0da4b270f4ef8ece84c1839bf6b72
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/git/gitclient.cpp | 26 | ||||
-rw-r--r-- | src/plugins/perforce/perforceplugin.cpp | 2 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseclient.cpp | 43 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseeditor.cpp | 10 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseeditor.h | 4 |
5 files changed, 46 insertions, 39 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index baf1e4edcce..e80ea0f2266 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -839,14 +839,13 @@ void GitClient::log(const QString &workingDirectory, const QString &fileName, const QString sourceFile = VcsBaseEditor::getSource(workingDir, fileName); VcsBaseEditorWidget *editor = createVcsEditor(editorId, title, sourceFile, codecFor(CodecLogOutput), "logTitle", msgArg); - QStringList effectiveArgs = args; - if (!editor->configurationAdded()) { - auto *argWidget = new GitLogArgumentsWidget(settings(), editor->toolBar()); + VcsBaseEditorConfig *argWidget = editor->editorConfig(); + if (!argWidget) { + argWidget = new GitLogArgumentsWidget(settings(), editor->toolBar()); argWidget->setBaseArguments(args); connect(argWidget, &VcsBaseEditorConfig::commandExecutionRequested, - [=]() { this->log(workingDir, fileName, enableAnnotationContextMenu, argWidget->arguments()); }); - effectiveArgs = argWidget->arguments(); - editor->setConfigurationAdded(); + [=]() { this->log(workingDir, fileName, enableAnnotationContextMenu, args); }); + editor->setEditorConfig(argWidget); } editor->setFileLogAnnotateEnabled(enableAnnotationContextMenu); editor->setWorkingDirectory(workingDir); @@ -856,7 +855,7 @@ void GitClient::log(const QString &workingDirectory, const QString &fileName, if (logCount > 0) arguments << "-n" << QString::number(logCount); - arguments.append(effectiveArgs); + arguments << argWidget->arguments(); if (!fileName.isEmpty()) arguments << "--follow" << "--" << fileName; @@ -926,22 +925,21 @@ VcsBaseEditorWidget *GitClient::annotate( VcsBaseEditorWidget *editor = createVcsEditor(editorId, title, sourceFile, codecFor(CodecSource, sourceFile), "blameFileName", id); - QStringList effectiveArgs = extraOptions; - if (!editor->configurationAdded()) { - auto *argWidget = new GitBlameArgumentsWidget(settings(), editor->toolBar()); + VcsBaseEditorConfig *argWidget = editor->editorConfig(); + if (!argWidget) { + argWidget = new GitBlameArgumentsWidget(settings(), editor->toolBar()); argWidget->setBaseArguments(extraOptions); connect(argWidget, &VcsBaseEditorConfig::commandExecutionRequested, [=] { const int line = VcsBaseEditor::lineNumberOfCurrentEditor(); - annotate(workingDir, file, revision, line, argWidget->arguments()); + annotate(workingDir, file, revision, line, extraOptions); } ); - effectiveArgs = argWidget->arguments(); - editor->setConfigurationAdded(); + editor->setEditorConfig(argWidget); } editor->setWorkingDirectory(workingDir); QStringList arguments = {"blame", "--root"}; - arguments << effectiveArgs << "--" << file; + arguments << argWidget->arguments() << "--" << file; if (!revision.isEmpty()) arguments << revision; vcsExec(workingDir, arguments, editor, false, 0, lineNumber); diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp index 7bae8aa2c10..ba5ed219c71 100644 --- a/src/plugins/perforce/perforceplugin.cpp +++ b/src/plugins/perforce/perforceplugin.cpp @@ -1275,7 +1275,7 @@ void PerforcePlugin::p4Diff(const PerforceDiffParameters &p) this, [this](const PerforceDiffParameters &p) { p4Diff(p); }); connect(diffEditorWidget, &VcsBaseEditorWidget::diffChunkReverted, pw, &PerforceDiffConfig::triggerReRun); - diffEditorWidget->setConfigurationAdded(); + diffEditorWidget->setEditorConfig(pw); } void PerforcePlugin::describe(const QString & source, const QString &n) diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index aa0204cc757..7060294a971 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -433,21 +433,26 @@ void VcsBaseClient::diff(const QString &workingDir, const QStringList &files, vcsCmdString.toLatin1().constData(), id); editor->setWorkingDirectory(workingDir); - QStringList effectiveArgs = extraOptions; - if (!editor->configurationAdded()) { - if (VcsBaseEditorConfig *paramWidget = d->createDiffEditor(editor)) { + VcsBaseEditorConfig *paramWidget = editor->editorConfig(); + if (!paramWidget) { + paramWidget = d->createDiffEditor(editor); + if (paramWidget) { + paramWidget->setBaseArguments(extraOptions); // editor has been just created, createVcsEditor() didn't set a configuration widget yet connect(editor, &VcsBaseEditorWidget::diffChunkReverted, paramWidget, &VcsBaseEditorConfig::executeCommand); connect(paramWidget, &VcsBaseEditorConfig::commandExecutionRequested, - [=] { diff(workingDir, files, extraOptions + paramWidget->arguments()); } ); - effectiveArgs = paramWidget->arguments(); - editor->setConfigurationAdded(); + [=] { diff(workingDir, files, extraOptions); } ); + editor->setEditorConfig(paramWidget); } } - QStringList args; - args << vcsCmdString << effectiveArgs << files; + QStringList args = {vcsCmdString}; + if (paramWidget) + args << paramWidget->arguments(); + else + args << extraOptions; + args << files; QTextCodec *codec = source.isEmpty() ? static_cast<QTextCodec *>(0) : VcsBaseEditor::getCodec(source); VcsCommand *command = createCommand(workingDir, editor); command->setCodec(codec); @@ -468,20 +473,24 @@ void VcsBaseClient::log(const QString &workingDir, const QStringList &files, vcsCmdString.toLatin1().constData(), id); editor->setFileLogAnnotateEnabled(enableAnnotationContextMenu); - QStringList effectiveArgs = extraOptions; - if (!editor->configurationAdded()) { - if (VcsBaseEditorConfig *paramWidget = d->createLogEditor(editor)) { + VcsBaseEditorConfig *paramWidget = editor->editorConfig(); + if (!paramWidget) { + paramWidget = d->createLogEditor(editor); + if (paramWidget) { + paramWidget->setBaseArguments(extraOptions); // editor has been just created, createVcsEditor() didn't set a configuration widget yet connect(paramWidget, &VcsBaseEditorConfig::commandExecutionRequested, - [=]() { this->log(workingDir, files, extraOptions + paramWidget->arguments(), - enableAnnotationContextMenu); } ); - effectiveArgs = paramWidget->arguments(); - editor->setConfigurationAdded(); + [=] { this->log(workingDir, files, extraOptions, enableAnnotationContextMenu); } ); + editor->setEditorConfig(paramWidget); } } - QStringList args; - args << vcsCmdString << effectiveArgs << files; + QStringList args = {vcsCmdString}; + if (paramWidget) + args << paramWidget->arguments(); + else + args << extraOptions; + args << files; enqueueJob(createCommand(workingDir, editor), args); } diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp index c42154ce4c5..063d2695d7b 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.cpp +++ b/src/plugins/vcsbase/vcsbaseeditor.cpp @@ -559,7 +559,7 @@ public: QString m_annotateRevisionTextFormat; QString m_annotatePreviousRevisionTextFormat; QString m_copyRevisionTextFormat; - bool m_configurationAdded = false; + VcsBaseEditorConfig *m_config = nullptr; QList<AbstractTextCursorHandler *> m_textCursorHandlers; QPointer<VcsCommand> m_command; VcsBaseEditorWidget::DescribeFunc m_describeFunc = nullptr; @@ -1380,14 +1380,14 @@ QString VcsBaseEditor::getTitleId(const QString &workingDirectory, return rc; } -void VcsBaseEditorWidget::setConfigurationAdded() +void VcsBaseEditorWidget::setEditorConfig(VcsBaseEditorConfig *config) { - d->m_configurationAdded = true; + d->m_config = config; } -bool VcsBaseEditorWidget::configurationAdded() const +VcsBaseEditorConfig *VcsBaseEditorWidget::editorConfig() const { - return d->m_configurationAdded; + return d->m_config; } void VcsBaseEditorWidget::setCommand(VcsCommand *command) diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h index 74d34f6d4c9..c76c99cecfe 100644 --- a/src/plugins/vcsbase/vcsbaseeditor.h +++ b/src/plugins/vcsbase/vcsbaseeditor.h @@ -207,8 +207,8 @@ public: EditorContentType contentType() const; - void setConfigurationAdded(); - bool configurationAdded() const; + void setEditorConfig(VcsBaseEditorConfig *config); + VcsBaseEditorConfig *editorConfig() const; void setCommand(VcsCommand *command); |