/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel Project *
+ * Copyright (C) 2005-09 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
if(childRow == -1)
return;
+ // since we are called asynchronously we have to recheck if the item in question still has no childs
+ if(removeEvent->child()->childCount())
+ return;
+
removeChild(childRow);
}
if(Quassel::isOptionSet("debugmodel")) {
connect(this, SIGNAL(rowsAboutToBeInserted(const QModelIndex &, int, int)),
- this, SLOT(debug_rowsAboutToBeInserted(const QModelIndex &, int, int)));
+ this, SLOT(debug_rowsAboutToBeInserted(const QModelIndex &, int, int)));
connect(this, SIGNAL(rowsAboutToBeRemoved(const QModelIndex &, int, int)),
- this, SLOT(debug_rowsAboutToBeRemoved(const QModelIndex &, int, int)));
+ this, SLOT(debug_rowsAboutToBeRemoved(const QModelIndex &, int, int)));
connect(this, SIGNAL(rowsInserted(const QModelIndex &, int, int)),
- this, SLOT(debug_rowsInserted(const QModelIndex &, int, int)));
+ this, SLOT(debug_rowsInserted(const QModelIndex &, int, int)));
connect(this, SIGNAL(rowsRemoved(const QModelIndex &, int, int)),
- this, SLOT(debug_rowsRemoved(const QModelIndex &, int, int)));
+ this, SLOT(debug_rowsRemoved(const QModelIndex &, int, int)));
connect(this, SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
- this, SLOT(debug_dataChanged(const QModelIndex &, const QModelIndex &)));
+ this, SLOT(debug_dataChanged(const QModelIndex &, const QModelIndex &)));
}
}
}
QModelIndex TreeModel::index(int row, int column, const QModelIndex &parent) const {
- if(!hasIndex(row, column, parent))
+ if(row < 0 || row >= rowCount(parent) || column < 0 || column >= columnCount(parent))
return QModelIndex();
AbstractTreeItem *parentItem;
QModelIndex TreeModel::parent(const QModelIndex &index) const {
if(!index.isValid()) {
- qWarning() << "TreeModel::parent(): has been asked for the rootItems Parent!";
+ // ModelTest does this
+ // qWarning() << "TreeModel::parent(): has been asked for the rootItems Parent!";
return QModelIndex();
}
void TreeModel::connectItem(AbstractTreeItem *item) {
connect(item, SIGNAL(dataChanged(int)),
- this, SLOT(itemDataChanged(int)));
+ this, SLOT(itemDataChanged(int)));
connect(item, SIGNAL(beginAppendChilds(int, int)),
- this, SLOT(beginAppendChilds(int, int)));
+ this, SLOT(beginAppendChilds(int, int)));
connect(item, SIGNAL(endAppendChilds()),
- this, SLOT(endAppendChilds()));
+ this, SLOT(endAppendChilds()));
connect(item, SIGNAL(beginRemoveChilds(int, int)),
- this, SLOT(beginRemoveChilds(int, int)));
+ this, SLOT(beginRemoveChilds(int, int)));
connect(item, SIGNAL(endRemoveChilds()),
- this, SLOT(endRemoveChilds()));
+ this, SLOT(endRemoveChilds()));
}
void TreeModel::beginAppendChilds(int firstRow, int lastRow) {
AbstractTreeItem *parentItem = qobject_cast<AbstractTreeItem *>(sender());
if(!parentItem) {
- qWarning() << "TreeModel::beginAppendChilds(): cannot append Childs to unknown parent";
+ qWarning() << "TreeModel::beginAppendChilds(): cannot append Children to unknown parent";
return;
}
void TreeModel::endAppendChilds() {
AbstractTreeItem *parentItem = qobject_cast<AbstractTreeItem *>(sender());
if(!parentItem) {
- qWarning() << "TreeModel::endAppendChilds(): cannot append Childs to unknown parent";
+ qWarning() << "TreeModel::endAppendChilds(): cannot append Children to unknown parent";
return;
}
Q_ASSERT(_aboutToRemoveOrInsert);
void TreeModel::beginRemoveChilds(int firstRow, int lastRow) {
AbstractTreeItem *parentItem = qobject_cast<AbstractTreeItem *>(sender());
if(!parentItem) {
- qWarning() << "TreeModel::beginRemoveChilds(): cannot append Childs to unknown parent";
+ qWarning() << "TreeModel::beginRemoveChilds(): cannot append Children to unknown parent";
return;
}
void TreeModel::endRemoveChilds() {
AbstractTreeItem *parentItem = qobject_cast<AbstractTreeItem *>(sender());
if(!parentItem) {
- qWarning() << "TreeModel::endRemoveChilds(): cannot remove Childs from unknown parent";
+ qWarning() << "TreeModel::endRemoveChilds(): cannot remove Children from unknown parent";
return;
}