Raise existing submit window if there is one when Submit is invoked.

Introduce convenience to VCSBaseSubmitEditor.
Task-number: 254644
This commit is contained in:
Friedemann Kleint
2009-05-27 16:17:24 +02:00
parent 192afe0825
commit e5c6a29fc4
5 changed files with 31 additions and 2 deletions

View File

@@ -588,6 +588,8 @@ void GitPlugin::revertFile()
void GitPlugin::startCommit() void GitPlugin::startCommit()
{ {
if (VCSBase::VCSBaseSubmitEditor::raiseSubmitEditor())
return;
if (m_changeTmpFile) { if (m_changeTmpFile) {
m_outputWindow->append(tr("Another submit is currently beeing executed.")); m_outputWindow->append(tr("Another submit is currently beeing executed."));
m_outputWindow->popup(false); m_outputWindow->popup(false);

View File

@@ -485,6 +485,9 @@ void PerforcePlugin::printOpenedFileList()
void PerforcePlugin::submit() void PerforcePlugin::submit()
{ {
if (VCSBase::VCSBaseSubmitEditor::raiseSubmitEditor())
return;
if (!checkP4Command()) { if (!checkP4Command()) {
showOutput(tr("No p4 executable specified!"), true); showOutput(tr("No p4 executable specified!"), true);
return; return;

View File

@@ -712,7 +712,8 @@ void SubversionPlugin::startCommit(const QStringList &files)
{ {
if (files.empty()) if (files.empty())
return; return;
if (VCSBase::VCSBaseSubmitEditor::raiseSubmitEditor())
return;
if (m_changeTmpFile) { if (m_changeTmpFile) {
showOutput(tr("Another commit is currently being executed.")); showOutput(tr("Another commit is currently being executed."));
return; return;

View File

@@ -36,6 +36,7 @@
#include <aggregation/aggregate.h> #include <aggregation/aggregate.h>
#include <coreplugin/ifile.h> #include <coreplugin/ifile.h>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/uniqueidmanager.h> #include <coreplugin/uniqueidmanager.h>
#include <coreplugin/actionmanager/actionmanager.h> #include <coreplugin/actionmanager/actionmanager.h>
#include <utils/submiteditorwidget.h> #include <utils/submiteditorwidget.h>
@@ -592,4 +593,23 @@ QStringList VCSBaseSubmitEditor::currentProjectFiles(bool nativeSeparators, QStr
} }
return files; 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 } // namespace VCSBase

View File

@@ -159,7 +159,10 @@ public:
// be restricted to them // be restricted to them
static QStringList currentProjectFiles(bool nativeSeparators, QString *name = 0); 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: signals:
void diffSelectedFiles(const QStringList &files); void diffSelectedFiles(const QStringList &files);