aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorFriedemann Kleint <[email protected]>2009-05-27 16:17:24 +0200
committerFriedemann Kleint <[email protected]>2009-05-27 16:17:24 +0200
commite5c6a29fc4231b22ab418c9621e91f4c59b75adc (patch)
tree9564ff0e392818959cfb1ce899a338edaa9f85d8 /src/plugins
parent192afe08258cc374d2f47cc3f7663dee349709d5 (diff)
Raise existing submit window if there is one when Submit is invoked.
Introduce convenience to VCSBaseSubmitEditor. Task-number: 254644
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/git/gitplugin.cpp2
-rw-r--r--src/plugins/perforce/perforceplugin.cpp3
-rw-r--r--src/plugins/subversion/subversionplugin.cpp3
-rw-r--r--src/plugins/vcsbase/vcsbasesubmiteditor.cpp20
-rw-r--r--src/plugins/vcsbase/vcsbasesubmiteditor.h5
5 files changed, 31 insertions, 2 deletions
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 702f2aa770c..4f240a21fe8 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -588,6 +588,8 @@ void GitPlugin::revertFile()
void GitPlugin::startCommit()
{
+ if (VCSBase::VCSBaseSubmitEditor::raiseSubmitEditor())
+ return;
if (m_changeTmpFile) {
m_outputWindow->append(tr("Another submit is currently beeing executed."));
m_outputWindow->popup(false);
diff --git a/src/plugins/perforce/perforceplugin.cpp b/src/plugins/perforce/perforceplugin.cpp
index 4c4c3190755..2bbbb705aef 100644
--- a/src/plugins/perforce/perforceplugin.cpp
+++ b/src/plugins/perforce/perforceplugin.cpp
@@ -485,6 +485,9 @@ void PerforcePlugin::printOpenedFileList()
void PerforcePlugin::submit()
{
+ if (VCSBase::VCSBaseSubmitEditor::raiseSubmitEditor())
+ return;
+
if (!checkP4Command()) {
showOutput(tr("No p4 executable specified!"), true);
return;
diff --git a/src/plugins/subversion/subversionplugin.cpp b/src/plugins/subversion/subversionplugin.cpp
index 2cb82e13f89..532beecdf45 100644
--- a/src/plugins/subversion/subversionplugin.cpp
+++ b/src/plugins/subversion/subversionplugin.cpp
@@ -712,7 +712,8 @@ void SubversionPlugin::startCommit(const QStringList &files)
{
if (files.empty())
return;
-
+ if (VCSBase::VCSBaseSubmitEditor::raiseSubmitEditor())
+ return;
if (m_changeTmpFile) {
showOutput(tr("Another commit is currently being executed."));
return;
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
index 204c8257939..a77455f44fc 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.cpp
@@ -36,6 +36,7 @@
#include <aggregation/aggregate.h>
#include <coreplugin/ifile.h>
#include <coreplugin/icore.h>
+#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/uniqueidmanager.h>
#include <coreplugin/actionmanager/actionmanager.h>
#include <utils/submiteditorwidget.h>
@@ -592,4 +593,23 @@ QStringList VCSBaseSubmitEditor::currentProjectFiles(bool nativeSeparators, QStr
}
return files;
}
+
+// Helper to raise an already open submit editor to prevent opening twice.
+bool VCSBaseSubmitEditor::raiseSubmitEditor()
+{
+ Core::EditorManager *em = Core::EditorManager::instance();
+ // Nothing to do?
+ if (Core::IEditor *ce = em->currentEditor())
+ if (qobject_cast<VCSBaseSubmitEditor*>(ce))
+ return true;
+ // Try to activate a hidden one
+ foreach (Core::IEditor *e, em->openedEditors()) {
+ if (qobject_cast<VCSBaseSubmitEditor*>(e)) {
+ em->activateEditor(e, Core::EditorManager::IgnoreNavigationHistory);
+ return true;
+ }
+ }
+ return false;
+}
+
} // namespace VCSBase
diff --git a/src/plugins/vcsbase/vcsbasesubmiteditor.h b/src/plugins/vcsbase/vcsbasesubmiteditor.h
index 6b0138df396..f949177aade 100644
--- a/src/plugins/vcsbase/vcsbasesubmiteditor.h
+++ b/src/plugins/vcsbase/vcsbasesubmiteditor.h
@@ -159,7 +159,10 @@ public:
// be restricted to them
static QStringList currentProjectFiles(bool nativeSeparators, QString *name = 0);
- bool temporaryEditor() const { return true; }
+ virtual bool temporaryEditor() const { return true; }
+
+ // Helper to raise an already open submit editor to prevent opening twice.
+ static bool raiseSubmitEditor();
signals:
void diffSelectedFiles(const QStringList &files);