aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/vcsbase/vcsbaseclient.cpp
diff options
context:
space:
mode:
authorJarek Kobus <[email protected]>2015-08-24 13:39:40 +0200
committerOrgad Shaneh <[email protected]>2016-10-24 16:23:33 +0000
commit2c6adc1e747575af5198cc7ea2277b9a70366d3c (patch)
tree67cb25bd5fa7ff603fa1daf10bf29a7c4af01b9c /src/plugins/vcsbase/vcsbaseclient.cpp
parent6cd68d5401d05187ec3c1eef4e2b9d7846fbfa75 (diff)
VCS: Replace QToolButtons in VCS toolbar with QActions
Change VcsBaseEditorParameterWidget to add actions/widgets to an existing toolbar, instead of being a widget itself. The class is renamed in a follow-up commit. Task-number: QTCREATORBUG-14934 Change-Id: I473a439d12a096f4cbb64f06faa0598ee72000de Reviewed-by: Tobias Hunger <[email protected]> Reviewed-by: Jarek Kobus <[email protected]>
Diffstat (limited to 'src/plugins/vcsbase/vcsbaseclient.cpp')
-rw-r--r--src/plugins/vcsbase/vcsbaseclient.cpp53
1 files changed, 29 insertions, 24 deletions
diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp
index aded32bdc4a..a21d39b48d7 100644
--- a/src/plugins/vcsbase/vcsbaseclient.cpp
+++ b/src/plugins/vcsbase/vcsbaseclient.cpp
@@ -270,21 +270,21 @@ void VcsBaseClientImpl::saveSettings()
class VcsBaseClientPrivate
{
public:
- VcsBaseEditorParameterWidget *createDiffEditor();
- VcsBaseEditorParameterWidget *createLogEditor();
+ VcsBaseEditorParameterWidget *createDiffEditor(VcsBaseEditorWidget *editor);
+ VcsBaseEditorParameterWidget *createLogEditor(VcsBaseEditorWidget *editor);
VcsBaseClient::ParameterWidgetCreator m_diffParamWidgetCreator;
VcsBaseClient::ParameterWidgetCreator m_logParamWidgetCreator;
};
-VcsBaseEditorParameterWidget *VcsBaseClientPrivate::createDiffEditor()
+VcsBaseEditorParameterWidget *VcsBaseClientPrivate::createDiffEditor(VcsBaseEditorWidget *editor)
{
- return m_diffParamWidgetCreator ? m_diffParamWidgetCreator() : 0;
+ return m_diffParamWidgetCreator ? m_diffParamWidgetCreator(editor->toolBar()) : 0;
}
-VcsBaseEditorParameterWidget *VcsBaseClientPrivate::createLogEditor()
+VcsBaseEditorParameterWidget *VcsBaseClientPrivate::createLogEditor(VcsBaseEditorWidget *editor)
{
- return m_logParamWidgetCreator ? m_logParamWidgetCreator() : 0;
+ return m_logParamWidgetCreator ? m_logParamWidgetCreator(editor->toolBar()) : 0;
}
VcsBaseClient::StatusItem::StatusItem(const QString &s, const QString &f) :
@@ -425,19 +425,21 @@ void VcsBaseClient::diff(const QString &workingDir, const QStringList &files,
vcsCmdString.toLatin1().constData(), id);
editor->setWorkingDirectory(workingDir);
- VcsBaseEditorParameterWidget *paramWidget = editor->configurationWidget();
- if (!paramWidget && (paramWidget = d->createDiffEditor())) {
- // editor has been just created, createVcsEditor() didn't set a configuration widget yet
- connect(editor, &VcsBaseEditorWidget::diffChunkReverted,
- paramWidget, &VcsBaseEditorParameterWidget::executeCommand);
- connect(paramWidget, &VcsBaseEditorParameterWidget::commandExecutionRequested,
- [=] { diff(workingDir, files, extraOptions); } );
- editor->setConfigurationWidget(paramWidget);
+ QStringList effectiveArgs = extraOptions;
+ if (!editor->configurationAdded()) {
+ if (VcsBaseEditorParameterWidget *paramWidget = d->createDiffEditor(editor)) {
+ // editor has been just created, createVcsEditor() didn't set a configuration widget yet
+ connect(editor, &VcsBaseEditorWidget::diffChunkReverted,
+ paramWidget, &VcsBaseEditorParameterWidget::executeCommand);
+ connect(paramWidget, &VcsBaseEditorParameterWidget::commandExecutionRequested,
+ [=] { diff(workingDir, files, extraOptions + paramWidget->arguments()); } );
+ effectiveArgs = paramWidget->arguments();
+ editor->setConfigurationAdded();
+ }
}
QStringList args;
- const QStringList paramArgs = paramWidget != 0 ? paramWidget->arguments() : QStringList();
- args << vcsCmdString << extraOptions << paramArgs << files;
+ args << vcsCmdString << effectiveArgs << files;
QTextCodec *codec = source.isEmpty() ? static_cast<QTextCodec *>(0) : VcsBaseEditor::getCodec(source);
VcsCommand *command = createCommand(workingDir, editor);
command->setCodec(codec);
@@ -458,17 +460,20 @@ void VcsBaseClient::log(const QString &workingDir, const QStringList &files,
vcsCmdString.toLatin1().constData(), id);
editor->setFileLogAnnotateEnabled(enableAnnotationContextMenu);
- VcsBaseEditorParameterWidget *paramWidget = editor->configurationWidget();
- if (!paramWidget && (paramWidget = d->createLogEditor())) {
- // editor has been just created, createVcsEditor() didn't set a configuration widget yet
- connect(paramWidget, &VcsBaseEditorParameterWidget::commandExecutionRequested,
- [=]() { this->log(workingDir, files, extraOptions, enableAnnotationContextMenu); } );
- editor->setConfigurationWidget(paramWidget);
+ QStringList effectiveArgs = extraOptions;
+ if (!editor->configurationAdded()) {
+ if (VcsBaseEditorParameterWidget *paramWidget = d->createLogEditor(editor)) {
+ // editor has been just created, createVcsEditor() didn't set a configuration widget yet
+ connect(paramWidget, &VcsBaseEditorParameterWidget::commandExecutionRequested,
+ [=]() { this->log(workingDir, files, extraOptions + paramWidget->arguments(),
+ enableAnnotationContextMenu); } );
+ effectiveArgs = paramWidget->arguments();
+ editor->setConfigurationAdded();
+ }
}
QStringList args;
- const QStringList paramArgs = paramWidget != 0 ? paramWidget->arguments() : QStringList();
- args << vcsCmdString << extraOptions << paramArgs << files;
+ args << vcsCmdString << effectiveArgs << files;
enqueueJob(createCommand(workingDir, editor), args);
}