summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/git/gitclient.cpp6
-rw-r--r--src/plugins/git/gitclient.h1
-rw-r--r--src/plugins/vcsbase/vcsbaseeditor.cpp27
-rw-r--r--src/plugins/vcsbase/vcsbaseeditor.h2
4 files changed, 30 insertions, 6 deletions
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 55d54cb0b0..68284a03b8 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -727,7 +727,6 @@ const char *GitClient::stashNamePrefix = "stash@{";
GitClient::GitClient(GitSettings *settings) :
m_cachedGitVersion(0),
- m_msgWait(tr("Waiting for data...")),
m_settings(settings),
m_disableEditor(false)
{
@@ -797,7 +796,7 @@ VcsBaseEditorWidget *GitClient::findExistingVCSEditor(const char *registerDynami
// Exists already
EditorManager::activateEditor(outputEditor);
- outputEditor->document()->setContents(m_msgWait.toUtf8());
+ outputEditor->document()->setContents(QByteArray()); // clear
rc = VcsBaseEditor::getVcsBaseEditor(outputEditor);
return rc;
@@ -926,8 +925,7 @@ VcsBaseEditorWidget *GitClient::createVcsEditor(
QTC_CHECK(!findExistingVCSEditor(registerDynamicProperty, dynamicPropertyValue));
// Create new, set wait message, set up with source and codec
- IEditor *outputEditor = EditorManager::openEditorWithContents(id, &title,
- m_msgWait.toUtf8());
+ IEditor *outputEditor = EditorManager::openEditorWithContents(id, &title);
outputEditor->document()->setProperty(registerDynamicProperty, dynamicPropertyValue);
rc = VcsBaseEditor::getVcsBaseEditor(outputEditor);
connect(rc, SIGNAL(annotateRevisionRequested(QString,QString,QString,int)),
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index 1abfea5fb6..ba06039fef 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -435,7 +435,6 @@ private:
mutable Utils::FileName m_gitVersionForBinary;
mutable unsigned m_cachedGitVersion;
- const QString m_msgWait;
GitSettings *m_settings;
QString m_gitQtcEditor;
QMap<QString, StashInfo> m_stashInfo;
diff --git a/src/plugins/vcsbase/vcsbaseeditor.cpp b/src/plugins/vcsbase/vcsbaseeditor.cpp
index 8755a4c091..09dce77020 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.cpp
+++ b/src/plugins/vcsbase/vcsbaseeditor.cpp
@@ -46,6 +46,7 @@
#include <projectexplorer/session.h>
#include <texteditor/textdocument.h>
#include <texteditor/textdocumentlayout.h>
+#include <utils/progressindicator.h>
#include <utils/qtcassert.h>
#include <QDebug>
@@ -573,6 +574,7 @@ public:
QPointer<VcsCommand> m_command;
QObject *m_describeReceiver;
const char *m_describeSlot;
+ Utils::ProgressIndicator *m_progressIndicator;
private:
QComboBox *m_entriesComboBox;
@@ -589,6 +591,7 @@ VcsBaseEditorWidgetPrivate::VcsBaseEditorWidgetPrivate(VcsBaseEditorWidget *edit
m_mouseDragging(false),
m_describeReceiver(0),
m_describeSlot(0),
+ m_progressIndicator(0),
m_entriesComboBox(0)
{
m_textCursorHandlers.append(new ChangeTextCursorHandler(editorWidget));
@@ -1352,9 +1355,18 @@ VcsBaseEditorParameterWidget *VcsBaseEditorWidget::configurationWidget() const
void VcsBaseEditorWidget::setCommand(VcsCommand *command)
{
- if (d->m_command)
+ if (d->m_command) {
d->m_command->abort();
+ hideProgressIndicator();
+ }
d->m_command = command;
+ if (d->m_command) {
+ d->m_progressIndicator = new Utils::ProgressIndicator(Utils::ProgressIndicator::Large);
+ d->m_progressIndicator->attachToWidget(this);
+ connect(d->m_command, &VcsCommand::finished,
+ this, &VcsBaseEditorWidget::hideProgressIndicator);
+ QTimer::singleShot(100, this, SLOT(showProgressIndicator()));
+ }
}
// Find the complete file from a diff relative specification.
@@ -1439,6 +1451,19 @@ void VcsBaseEditorWidget::slotPaste()
}
}
+void VcsBaseEditorWidget::showProgressIndicator()
+{
+ if (!d->m_progressIndicator) // already stopped and deleted
+ return;
+ d->m_progressIndicator->show();
+}
+
+void VcsBaseEditorWidget::hideProgressIndicator()
+{
+ delete d->m_progressIndicator;
+ d->m_progressIndicator = 0;
+}
+
bool VcsBaseEditorWidget::canApplyDiffChunk(const DiffChunk &dc) const
{
if (!dc.isValid())
diff --git a/src/plugins/vcsbase/vcsbaseeditor.h b/src/plugins/vcsbase/vcsbaseeditor.h
index e71fcaf09c..ef29f012a5 100644
--- a/src/plugins/vcsbase/vcsbaseeditor.h
+++ b/src/plugins/vcsbase/vcsbaseeditor.h
@@ -242,6 +242,8 @@ private slots:
void slotAnnotateRevision();
void slotApplyDiffChunk();
void slotPaste();
+ void showProgressIndicator();
+ void hideProgressIndicator();
protected:
/* A helper that can be used to locate a file in a diff in case it