forked from qt-creator/qt-creator
		
	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>
This commit is contained in:
		
				
					committed by
					
						
						Orgad Shaneh
					
				
			
			
				
	
			
			
			
						parent
						
							8e90640edb
						
					
				
				
					commit
					003e25d488
				
			@@ -2467,8 +2467,11 @@ VcsBase::Command *GitClient::createCommand(const QString &workingDirectory,
 | 
			
		||||
    VcsBase::Command *command = new VcsBase::Command(gitBinaryPath(), workingDirectory, processEnvironment());
 | 
			
		||||
    command->setCodec(getSourceCodec(currentDocumentPath()));
 | 
			
		||||
    command->setCookie(QVariant(editorLineNumber));
 | 
			
		||||
    if (editor)
 | 
			
		||||
        connect(command, SIGNAL(finished(bool,int,QVariant)), editor, SLOT(commandFinishedGotoLine(bool,int,QVariant)));
 | 
			
		||||
    if (editor) {
 | 
			
		||||
        editor->setCommand(command);
 | 
			
		||||
        connect(command, SIGNAL(finished(bool,int,QVariant)),
 | 
			
		||||
                editor, SLOT(commandFinishedGotoLine(bool,int,QVariant)));
 | 
			
		||||
    }
 | 
			
		||||
    if (useOutputToWindow) {
 | 
			
		||||
        command->addFlags(VcsBasePlugin::ShowStdOutInLogWindow);
 | 
			
		||||
        command->addFlags(VcsBasePlugin::ShowSuccessMessage);
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
@@ -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). */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user