From a2d5cb353440d80c464c2531be8a4c2211113d03 Mon Sep 17 00:00:00 2001
From: Aurindam Jana <aurindam.jana@nokia.com>
Date: Wed, 21 Dec 2011 10:22:55 +0100
Subject: [PATCH] QmlEngine: Source Files

Check for open editors with same display name before creating
a new editor to show the internal sources.

Change-Id: I53b365fb6c29d33922936bb4eb4dfb9476d5978e
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
---
 src/plugins/debugger/qml/qmlengine.cpp | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp
index fa57b738107..929b16d889e 100644
--- a/src/plugins/debugger/qml/qmlengine.cpp
+++ b/src/plugins/debugger/qml/qmlengine.cpp
@@ -348,23 +348,27 @@ void QmlEngine::gotoLocation(const Location &location)
     // TODO: QUrl::isLocalFile() once we depend on Qt 4.8
     if (QUrl(fileName).scheme().compare(QLatin1String("file"), Qt::CaseInsensitive) == 0) {
         // internal file from source files -> show generated .js
-        QString fileName = location.fileName();
         QTC_ASSERT(d->m_sourceDocuments.contains(fileName), return);
         const QString jsSource = d->m_sourceDocuments.value(fileName)->toPlainText();
 
         Core::IEditor *editor = 0;
 
         Core::EditorManager *editorManager = Core::EditorManager::instance();
-        QList<Core::IEditor *> editors = editorManager->editorsForFileName(location.fileName());
-        if (editors.isEmpty()) {
-            QString titlePattern = tr("JS Source for %1").arg(fileName);
+        QString titlePattern = tr("JS Source for %1").arg(fileName);
+        //Check if there are open editors with the same title
+        QList<Core::IEditor *> editors = editorManager->openedEditors();
+        foreach (Core::IEditor *ed, editors) {
+            if (ed->displayName() == titlePattern) {
+                editor = ed;
+                break;
+            }
+        }
+        if (!editor) {
             editor = editorManager->openEditorWithContents(QmlJSEditor::Constants::C_QMLJSEDITOR_ID,
                                                            &titlePattern);
             if (editor) {
                 editor->setProperty(Constants::OPENED_BY_DEBUGGER, true);
             }
-        } else {
-            editor = editors.back();
         }
 
         TextEditor::ITextEditor *textEditor = qobject_cast<TextEditor::ITextEditor*>(editor);
-- 
GitLab