diff options
author | dt <qtc-committer@nokia.com> | 2009-04-28 17:23:33 +0200 |
---|---|---|
committer | dt <qtc-committer@nokia.com> | 2009-04-28 17:23:33 +0200 |
commit | dfd0c9f91a45dfc1850f6e19f8a638d99b9bf4f3 (patch) | |
tree | ac2a448b438f52020027c797978435fd6d05b0b4 /src/plugins/projectexplorer/dependenciespanel.cpp | |
parent | eae597f5b7b54359940ace05521f50c10b30c554 (diff) | |
download | qt-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.cpp | 41 |
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 |