From 738ef0b121a74ee50085114bb37283380d8e1e66 Mon Sep 17 00:00:00 2001 From: dt Date: Tue, 31 Mar 2009 15:02:09 +0200 Subject: [PATCH 1/3] Make CMake Open Project Wizards output text read only. --- src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.cpp index 842536f3ccd..4c70858bcc1 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); } From 27a241749a4724fb319540111d1b6f796f083a1e Mon Sep 17 00:00:00 2001 From: dt Date: Tue, 31 Mar 2009 15:05:52 +0200 Subject: [PATCH 2/3] Fix currentNode beeing invalid. The ProjecTreeWidget takes care of that. --- .../projectexplorer/projecttreewidget.cpp | 30 +++++++++++++++++++ .../projectexplorer/projecttreewidget.h | 5 ++++ 2 files changed, 35 insertions(+) diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index b88ef2175cf..32b6ca9edfb 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 &)), + this, SLOT(foldersAboutToBeRemoved(FolderNode *, const QList &))); + connect(watcher, SIGNAL(filesAboutToBeRemoved(FolderNode *, const QList &)), + this, SLOT(filesAboutToBeRemoved(FolderNode *, const QList &))); 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 &list) +{ + Node *n = m_explorer->currentNode(); + while(n) { + if (FolderNode *fn = qobject_cast(n)) { + if (list.contains(fn)) { + m_explorer->setCurrentNode(n->projectNode()); + break; + } + } + n = n->parentFolderNode(); + } +} + +void ProjectTreeWidget::filesAboutToBeRemoved(FolderNode *, const QList &list) +{ + if (FileNode *fileNode = qobject_cast(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 f723bfaff65..4b536f1cff1 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 &); + void filesAboutToBeRemoved(FolderNode *, const QList &); + private: ProjectExplorerPlugin *m_explorer; QTreeView *m_view; From 94280509102e282cfdd50389a3da1fd52f2ee2ab Mon Sep 17 00:00:00 2001 From: dt Date: Tue, 31 Mar 2009 15:07:05 +0200 Subject: [PATCH 3/3] Remove work around for broken currentNode from generic project manager Hopefully it was the same bug. --- src/plugins/genericprojectmanager/genericprojectnodes.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp index 64a73f6f0f8..2a3351206d5 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,