summaryrefslogtreecommitdiff
path: root/src/plugins/vcsbase
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2013-09-29 22:57:21 +0300
committerOrgad Shaneh <orgads@gmail.com>2013-09-30 16:36:00 +0200
commit003e25d488ef8b4ac9b797cc26c667b84f246f09 (patch)
tree40c744e0d4ac067d16b104656ef8f76493a67aaf /src/plugins/vcsbase
parent8e90640edb43a7192153575e81def2c84d5415c8 (diff)
downloadqt-creator-003e25d488ef8b4ac9b797cc26c667b84f246f09.tar.gz
VCS: Abort previous command for the same editor
It is very common to have output from a previous (longer) command appear instead of the newly created one. For example: Open a log. Check "Show Diff" and immediately uncheck it. If this is done fast enough (or with a high Log Count limit) the output with the diff will appear instead of the normal log. Change-Id: Ie64cc4a383a261f5328a4d0486eec93f73766679 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src/plugins/vcsbase')
-rw-r--r--src/plugins/vcsbase/vcsbaseclient.cpp1
-rw-r--r--src/plugins/vcsbase/vcsbaseeditor.cpp9
-rw-r--r--src/plugins/vcsbase/vcsbaseeditor.h2
3 files changed, 12 insertions, 0 deletions
diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp
index 1d83c0ef8b..feb4c5588b 100644
--- a/src/plugins/vcsbase/vcsbaseclient.cpp
+++ b/src/plugins/vcsbase/vcsbaseclient.cpp
@@ -143,6 +143,7 @@ void VcsBaseClientPrivate::saveSettings()
void VcsBaseClientPrivate::bindCommandToEditor(Command *cmd, VcsBaseEditorWidget *editor)
{
+ editor->setCommand(cmd);
QObject::connect(cmd, SIGNAL(finished(bool,int,QVariant)), m_cmdFinishedMapper, SLOT(map()));
m_cmdFinishedMapper->setMapping(cmd, editor);
}
diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp
index 9141a4b620..0c415cf8eb 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.cpp
+++ b/src/plugins/vcsbase/vcsbaseeditor.cpp
@@ -32,6 +32,7 @@
#include "baseannotationhighlighter.h"
#include "vcsbaseplugin.h"
#include "vcsbaseeditorparameterwidget.h"
+#include "command.h"
#include <coreplugin/icore.h>
#include <coreplugin/vcsmanager.h>
@@ -575,6 +576,7 @@ public:
VcsBaseEditorParameterWidget *m_configurationWidget;
bool m_mouseDragging;
QList<AbstractTextCursorHandler *> m_textCursorHandlers;
+ QPointer<Command> m_command;
private:
QComboBox *m_entriesComboBox;
@@ -1350,6 +1352,13 @@ VcsBaseEditorParameterWidget *VcsBaseEditorWidget::configurationWidget() const
return d->m_configurationWidget;
}
+void VcsBaseEditorWidget::setCommand(Command *command)
+{
+ if (d->m_command)
+ d->m_command->abort();
+ d->m_command = command;
+}
+
// Find the complete file from a diff relative specification.
QString VcsBaseEditorWidget::findDiffFile(const QString &f) const
{
diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h
index b2fd845d9e..ae2587c88a 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.h
+++ b/src/plugins/vcsbase/vcsbaseeditor.h
@@ -55,6 +55,7 @@ class VcsBaseEditorWidgetPrivate;
class DiffHighlighter;
class BaseAnnotationHighlighter;
class VcsBaseEditorParameterWidget;
+class Command;
// Documentation inside
enum EditorContentType
@@ -188,6 +189,7 @@ public:
bool setConfigurationWidget(VcsBaseEditorParameterWidget *w);
VcsBaseEditorParameterWidget *configurationWidget() const;
+ void setCommand(Command *command);
/* 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
* the editor, they get a 'tag' containing type and parameters (dynamic property string). */