diff options
author | Orgad Shaneh <[email protected]> | 2017-06-11 17:44:32 +0300 |
---|---|---|
committer | Orgad Shaneh <[email protected]> | 2017-06-19 08:08:02 +0000 |
commit | a36536813f9aa00944fd8fcab2e2689a385d5387 (patch) | |
tree | 10b4fb9abe4b0221f9f9b503b92a549a337ceeea /src/plugins/vcsbase/vcsbaseclient.cpp | |
parent | 771d9f222c6af0aa5f3622b51baf78d645770b0d (diff) |
VCS: Set user choices on editor reload
Broke by 2c6adc1e74.
Change-Id: Iba435899c7b0da4b270f4ef8ece84c1839bf6b72
Reviewed-by: André Hartmann <[email protected]>
Reviewed-by: Tobias Hunger <[email protected]>
Diffstat (limited to 'src/plugins/vcsbase/vcsbaseclient.cpp')
-rw-r--r-- | src/plugins/vcsbase/vcsbaseclient.cpp | 43 |
1 files changed, 26 insertions, 17 deletions
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); } |