diff options
-rw-r--r-- | src/plugins/git/gitclient.cpp | 6 | ||||
-rw-r--r-- | src/plugins/git/gitclient.h | 1 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseeditor.cpp | 27 | ||||
-rw-r--r-- | src/plugins/vcsbase/vcsbaseeditor.h | 2 |
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 |