summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2013-09-11 22:20:30 +0300
committerOrgad Shaneh <orgads@gmail.com>2013-09-12 13:02:55 +0200
commit9df379e0dc72d2abb17040b17a505ece607b589f (patch)
tree3e8ad9f2b8786c4d65c46ae743bd7d43c5fbc9aa
parentf69b994896304126976848d474bdd6da589dc78d (diff)
downloadqt-creator-9df379e0dc72d2abb17040b17a505ece607b589f.tar.gz
Git: Fix crash on diff
Task-number: QTCREATORBUG-10138 Change-Id: I7c7f054e6253c677b52a3ea24d7ace562f1ad4af Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
-rw-r--r--src/plugins/git/gitclient.cpp40
-rw-r--r--src/plugins/git/gitclient.h3
-rw-r--r--src/plugins/vcsbase/vcsbaseeditor.cpp7
-rw-r--r--src/plugins/vcsbase/vcsbaseeditor.h5
4 files changed, 21 insertions, 34 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 7542354522..aeced497c2 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -1013,15 +1013,14 @@ DiffEditor::DiffEditor *GitClient::createDiffEditor(const char *registerDynamicP
* (using the file's codec). Makes use of a dynamic property to find an
* existing instance and to reuse it (in case, say, 'git diff foo' is
* already open). */
-VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(const Core::Id &id,
- QString title,
- // Source file or directory
- const QString &source,
- CodecType codecType,
- // Dynamic property and value to identify that editor
- const char *registerDynamicProperty,
- const QString &dynamicPropertyValue,
- QWidget *configWidget) const
+VcsBase::VcsBaseEditorWidget *GitClient::createVcsEditor(
+ const Core::Id &id,
+ QString title,
+ const QString &source, // Source file or directory
+ CodecType codecType,
+ const char *registerDynamicProperty, // Dynamic property and value to identify that editor
+ const QString &dynamicPropertyValue,
+ VcsBase::VcsBaseEditorParameterWidget *configWidget) const
{
VcsBase::VcsBaseEditorWidget *rc = 0;
QTC_CHECK(!findExistingVCSEditor(registerDynamicProperty, dynamicPropertyValue));
@@ -1219,14 +1218,10 @@ void GitClient::diff(const QString &workingDirectory,
}
vcsEditor->setDiffBaseDirectory(workingDirectory);
- GitFileDiffArgumentsWidget *argWidget = qobject_cast<GitFileDiffArgumentsWidget *>(
- vcsEditor->configurationWidget());
- QStringList userDiffArgs = argWidget->arguments();
-
QStringList cmdArgs;
cmdArgs << QLatin1String("diff")
<< QLatin1String(noColorOption)
- << userDiffArgs;
+ << vcsEditor->configurationWidget()->arguments();
if (!fileName.isEmpty())
cmdArgs << QLatin1String("--") << fileName;
@@ -1287,14 +1282,10 @@ void GitClient::diffBranch(const QString &workingDirectory,
}
vcsEditor->setDiffBaseDirectory(workingDirectory);
- GitBranchDiffArgumentsWidget *argWidget = qobject_cast<GitBranchDiffArgumentsWidget *>(
- vcsEditor->configurationWidget());
- QStringList userDiffArgs = argWidget->arguments();
-
QStringList cmdArgs;
cmdArgs << QLatin1String("diff")
<< QLatin1String(noColorOption)
- << userDiffArgs
+ << vcsEditor->configurationWidget()->arguments()
<< branchName;
executeGit(workingDirectory, cmdArgs, vcsEditor);
@@ -1450,15 +1441,11 @@ void GitClient::show(const QString &source, const QString &id,
newEditor = vcsEditor->editor();
}
- GitShowArgumentsWidget *argWidget = qobject_cast<GitShowArgumentsWidget *>(
- vcsEditor->configurationWidget());
- QStringList userArgs = argWidget->arguments();
-
QStringList arguments;
arguments << QLatin1String("show")
<< QLatin1String(noColorOption)
<< QLatin1String(decorateOption)
- << userArgs
+ << vcsEditor->configurationWidget()->arguments()
<< id;
vcsEditor->setDiffBaseDirectory(workingDirectory);
@@ -1520,12 +1507,9 @@ void GitClient::blame(const QString &workingDirectory,
argWidget->setEditor(editor);
}
- GitBlameArgumentsWidget *argWidget = qobject_cast<GitBlameArgumentsWidget *>(editor->configurationWidget());
- QStringList userBlameArgs = argWidget->arguments();
-
QStringList arguments(QLatin1String("blame"));
arguments << QLatin1String("--root");
- arguments.append(userBlameArgs);
+ arguments.append(editor->configurationWidget()->arguments());
arguments << QLatin1String("--") << fileName;
if (!revision.isEmpty())
arguments << revision;
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index b5ca2b083e..969f7983e5 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -54,6 +54,7 @@ namespace VcsBase {
class Command;
class SubmitFileModel;
class VcsBaseEditorWidget;
+ class VcsBaseEditorParameterWidget;
}
namespace Utils {
@@ -363,7 +364,7 @@ private:
CodecType codecType,
const char *registerDynamicProperty,
const QString &dynamicPropertyValue,
- QWidget *configWidget) const;
+ VcsBase::VcsBaseEditorParameterWidget *configWidget) const;
DiffEditor::DiffEditor *createDiffEditor(const char *registerDynamicProperty,
const QString &dynamicPropertyValue,
const QString &titlePattern,
diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp
index 62f862e881..5f62830981 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.cpp
+++ b/src/plugins/vcsbase/vcsbaseeditor.cpp
@@ -31,6 +31,7 @@
#include "diffhighlighter.h"
#include "baseannotationhighlighter.h"
#include "vcsbaseplugin.h"
+#include "vcsbaseeditorparameterwidget.h"
#include <coreplugin/icore.h>
#include <coreplugin/vcsmanager.h>
@@ -566,7 +567,7 @@ public:
QString m_copyRevisionTextFormat;
bool m_fileLogAnnotateEnabled;
TextEditor::BaseTextEditor *m_editor;
- QWidget *m_configurationWidget;
+ VcsBaseEditorParameterWidget *m_configurationWidget;
bool m_mouseDragging;
QList<AbstractTextCursorHandler *> m_textCursorHandlers;
@@ -1324,7 +1325,7 @@ QString VcsBaseEditorWidget::getTitleId(const QString &workingDirectory,
return rc;
}
-bool VcsBaseEditorWidget::setConfigurationWidget(QWidget *w)
+bool VcsBaseEditorWidget::setConfigurationWidget(VcsBaseEditorParameterWidget *w)
{
if (!d->m_editor || d->m_configurationWidget)
return false;
@@ -1335,7 +1336,7 @@ bool VcsBaseEditorWidget::setConfigurationWidget(QWidget *w)
return true;
}
-QWidget *VcsBaseEditorWidget::configurationWidget() const
+VcsBaseEditorParameterWidget *VcsBaseEditorWidget::configurationWidget() const
{
return d->m_configurationWidget;
}
diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h
index b438b93bbe..5bbd78b4d4 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.h
+++ b/src/plugins/vcsbase/vcsbaseeditor.h
@@ -54,6 +54,7 @@ class VcsBaseEditorWidgetPrivate;
class DiffHighlighter;
class BaseAnnotationHighlighter;
+class VcsBaseEditorParameterWidget;
// Documentation inside
enum EditorContentType
@@ -183,8 +184,8 @@ public:
const QStringList &fileNames,
const QString &revision = QString());
- bool setConfigurationWidget(QWidget *w);
- QWidget *configurationWidget() const;
+ bool setConfigurationWidget(VcsBaseEditorParameterWidget *w);
+ VcsBaseEditorParameterWidget *configurationWidget() const;
/* Tagging editors: Sometimes, an editor should be re-used, for example, when showing
* a diff of the same file with different diff-options. In order to be able to find