summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/dependenciespanel.cpp
diff options
context:
space:
mode:
authordt <qtc-committer@nokia.com>2009-04-28 17:23:33 +0200
committerdt <qtc-committer@nokia.com>2009-04-28 17:23:33 +0200
commitdfd0c9f91a45dfc1850f6e19f8a638d99b9bf4f3 (patch)
treeac2a448b438f52020027c797978435fd6d05b0b4 /src/plugins/projectexplorer/dependenciespanel.cpp
parenteae597f5b7b54359940ace05521f50c10b30c554 (diff)
downloadqt-creator-dfd0c9f91a45dfc1850f6e19f8a638d99b9bf4f3.tar.gz
Crash found by ErikV in the Dependencies Model with unloading projects
We didn't update the dependencies model in case a project gets loaded or unloaded. (Or the session switched.) In that case we do a rather drastic reset() now.
Diffstat (limited to 'src/plugins/projectexplorer/dependenciespanel.cpp')
-rw-r--r--src/plugins/projectexplorer/dependenciespanel.cpp41
1 files changed, 20 insertions, 21 deletions
diff --git a/src/plugins/projectexplorer/dependenciespanel.cpp b/src/plugins/projectexplorer/dependenciespanel.cpp
index 78598c4f3a..83dacae6bb 100644
--- a/src/plugins/projectexplorer/dependenciespanel.cpp
+++ b/src/plugins/projectexplorer/dependenciespanel.cpp
@@ -44,27 +44,6 @@
namespace ProjectExplorer {
namespace Internal {
-//
-// DependenciesModel
-//
-
-class DependenciesModel : public QAbstractListModel
-{
-public:
- DependenciesModel(SessionManager *session, Project *project, QObject *parent = 0);
-
- int rowCount(const QModelIndex &index) const;
- int columnCount(const QModelIndex &index) const;
- QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
- bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
- Qt::ItemFlags flags(const QModelIndex &index) const;
-
-private:
- SessionManager *m_session;
- Project *m_project;
- QList<Project *> m_projects;
-};
-
DependenciesModel::DependenciesModel(SessionManager *session,
Project *project,
QObject *parent)
@@ -75,6 +54,26 @@ DependenciesModel::DependenciesModel(SessionManager *session,
{
// We can't select ourselves as a dependency
m_projects.removeAll(m_project);
+ connect(session, SIGNAL(projectRemoved(ProjectExplorer::Project*)),
+ this, SLOT(resetModel()));
+ connect(session, SIGNAL(projectAdded(ProjectExplorer::Project*)),
+ this, SLOT(resetModel()));
+ connect(session, SIGNAL(sessionLoaded()),
+ this, SLOT(resetModel()));
+// qDebug()<<"Dependencies Model"<<this<<"for project"<<project<<"("<<project->file()->fileName()<<")";
+}
+
+DependenciesModel::~DependenciesModel()
+{
+// qDebug()<<"~DependenciesModel"<<this;
+}
+
+void DependenciesModel::resetModel()
+{
+ qDebug()<<"Resetting";
+ m_projects = m_session->projects();
+ m_projects.removeAll(m_project);
+ reset();
}
int DependenciesModel::rowCount(const QModelIndex &index) const