diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
index 842536f3ccde31d94dc7ca3be831b0d6c3ed4457..4c70858bcc18767d33247ee0d355ac3f24e44972 100644
--- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp
@@ -248,6 +248,7 @@ void CMakeRunPage::initWidgets()
     fl->addWidget(m_runCMake);
 
     m_output = new QPlainTextEdit(this);
+    m_output->setReadOnly(true);
     fl->addRow(m_output);
 }
 
diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp
index 64a73f6f0f8d6d92858f5a23c10e7c2db227549d..2a3351206d5d82a84ddee3af75ac432029275b39 100644
--- a/src/plugins/genericprojectmanager/genericprojectnodes.cpp
+++ b/src/plugins/genericprojectmanager/genericprojectnodes.cpp
@@ -63,7 +63,7 @@ void GenericProjectNode::refresh()
     removeFileNodes(fileNodes(), this);
     removeFolderNodes(subFolderNodes(), this);
 
-    ProjectExplorerPlugin::instance()->setCurrentNode(0); // ### remove me
+    //ProjectExplorerPlugin::instance()->setCurrentNode(0); // ### remove me
 
     FileNode *projectFilesNode = new FileNode(m_project->filesFileName(),
                                               ProjectFileType,
diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp
index b88ef2175cf9068853f890ee0c1d8036bdffa8fe..32b6ca9edfb3cc11834c2aa2eb175dcc715394ee 100644
--- a/src/plugins/projectexplorer/projecttreewidget.cpp
+++ b/src/plugins/projectexplorer/projecttreewidget.cpp
@@ -119,6 +119,13 @@ ProjectTreeWidget::ProjectTreeWidget(QWidget *parent)
           m_autoSync(false)
 {
     m_model = new FlatModel(m_explorer->session()->sessionNode(), this);
+    NodesWatcher *watcher = new NodesWatcher(this);
+    m_explorer->session()->sessionNode()->registerWatcher(watcher);
+
+    connect(watcher, SIGNAL(foldersAboutToBeRemoved(FolderNode *, const QList<FolderNode*> &)),
+            this, SLOT(foldersAboutToBeRemoved(FolderNode *, const QList<FolderNode*> &)));
+    connect(watcher, SIGNAL(filesAboutToBeRemoved(FolderNode *, const QList<FileNode*> &)),
+            this, SLOT(filesAboutToBeRemoved(FolderNode *, const QList<FileNode*> &)));
 
     m_view = new ProjectTreeView;
     m_view->setModel(m_model);
@@ -165,6 +172,29 @@ ProjectTreeWidget::ProjectTreeWidget(QWidget *parent)
     setAutoSynchronization(true);
 }
 
+void ProjectTreeWidget::foldersAboutToBeRemoved(FolderNode *, const QList<FolderNode*> &list)
+{
+    Node *n = m_explorer->currentNode();
+    while(n) {
+        if (FolderNode *fn = qobject_cast<FolderNode *>(n)) {
+            if (list.contains(fn)) {
+                m_explorer->setCurrentNode(n->projectNode());
+                break;
+            }
+        }
+        n = n->parentFolderNode();
+    }
+}
+
+void ProjectTreeWidget::filesAboutToBeRemoved(FolderNode *, const QList<FileNode*> &list)
+{
+    if (FileNode *fileNode = qobject_cast<FileNode *>(m_explorer->currentNode())) {
+        if (list.contains(fileNode)) {
+            m_explorer->setCurrentNode(fileNode->projectNode());
+        }
+    }
+}
+
 QToolButton *ProjectTreeWidget::toggleSync()
 {
     return m_toggleSync;
diff --git a/src/plugins/projectexplorer/projecttreewidget.h b/src/plugins/projectexplorer/projecttreewidget.h
index f723bfaff65d834efd4c78aaf4aa6e3f225a662f..4b536f1cff1506e7c0c827f4c686e9d95362f21a 100644
--- a/src/plugins/projectexplorer/projecttreewidget.h
+++ b/src/plugins/projectexplorer/projecttreewidget.h
@@ -40,6 +40,8 @@ namespace ProjectExplorer {
 class ProjectExplorerPlugin;
 class Project;
 class Node;
+class FolderNode;
+class FileNode;
 
 namespace Internal {
 
@@ -73,6 +75,9 @@ private slots:
     void startupProjectChanged(ProjectExplorer::Project *project);
     void initView();
 
+    void foldersAboutToBeRemoved(FolderNode *, const QList<FolderNode*> &);
+    void filesAboutToBeRemoved(FolderNode *, const QList<FileNode*> &);
+
 private:
     ProjectExplorerPlugin *m_explorer;
     QTreeView *m_view;