From 6062ff2e8f2c4a76625d69848d86f9394d94a50a Mon Sep 17 00:00:00 2001
From: con <qtc-committer@nokia.com>
Date: Wed, 3 Feb 2010 16:45:55 +0100
Subject: [PATCH] Fixes: "Save as" does not update window title

---
 src/plugins/projectexplorer/session.cpp | 17 +++++++++++++++--
 src/plugins/projectexplorer/session.h   |  3 +++
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp
index f7051cae8ad..9033363b297 100644
--- a/src/plugins/projectexplorer/session.cpp
+++ b/src/plugins/projectexplorer/session.cpp
@@ -368,7 +368,8 @@ SessionManager::SessionManager(QObject *parent)
   : QObject(parent),
     m_core(Core::ICore::instance()),
     m_file(new SessionFile),
-    m_sessionNode(new Internal::SessionNodeImpl(this))
+    m_sessionNode(new Internal::SessionNodeImpl(this)),
+    m_currentEditor(0)
 {
     // Create qtcreator dir if it doesn't yet exist
     QString configDir = QFileInfo(m_core->settings()->fileName()).path();
@@ -394,7 +395,7 @@ SessionManager::SessionManager(QObject *parent)
     connect(ProjectExplorerPlugin::instance(), SIGNAL(currentProjectChanged(ProjectExplorer::Project *)),
             this, SLOT(updateWindowTitle()));
     connect(m_core->editorManager(), SIGNAL(currentEditorChanged(Core::IEditor*)),
-            this, SLOT(updateWindowTitle()));
+            this, SLOT(handleCurrentEditorChange(Core::IEditor*)));
 }
 
 SessionManager::~SessionManager()
@@ -876,6 +877,18 @@ Core::IFile *SessionManager::file() const
     return m_file;
 }
 
+void SessionManager::handleCurrentEditorChange(Core::IEditor *editor)
+{
+    if (editor != m_currentEditor) {
+        if (m_currentEditor)
+            disconnect(m_currentEditor, SIGNAL(changed()), this, SLOT(updateWindowTitle()));
+        if (editor)
+            connect(editor, SIGNAL(changed()), this, SLOT(updateWindowTitle()));
+        m_currentEditor = editor;
+    }
+    updateWindowTitle();
+}
+
 void SessionManager::updateWindowTitle()
 {
     QString windowTitle = tr("Qt Creator");
diff --git a/src/plugins/projectexplorer/session.h b/src/plugins/projectexplorer/session.h
index eb9f027b368..f158a04e3a8 100644
--- a/src/plugins/projectexplorer/session.h
+++ b/src/plugins/projectexplorer/session.h
@@ -37,6 +37,7 @@
 #include <QtCore/QList>
 #include <QtCore/QString>
 #include <QtCore/QStringList>
+#include <QtCore/QPointer>
 
 QT_BEGIN_NAMESPACE
 class QAbstractItemModel;
@@ -169,6 +170,7 @@ private slots:
     void saveActiveMode(Core::IMode *mode);
     void clearProjectFileCache();
     void setEditorCodec(Core::IEditor *editor, const QString &fileName);
+    void handleCurrentEditorChange(Core::IEditor *editor);
     void updateWindowTitle();
 
 private:
@@ -188,6 +190,7 @@ private:
 
     Internal::SessionFile *m_file;
     Internal::SessionNodeImpl *m_sessionNode;
+    QPointer<Core::IEditor> m_currentEditor;
     QString m_displayName;
     QString m_sessionName;
 
-- 
GitLab