/***************************************************************************
- * Copyright (C) 2005-2018 by the Quassel Project *
+ * Copyright (C) 2005-2020 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
QModelIndex newParent = currentIndex.sibling(currentIndex.row() - 1, 0);
if (currentIndex.row() == 0)
newParent = lastNetIndex;
- if (model()->hasChildren(newParent))
- resultingIndex = newParent.child(model()->rowCount(newParent) - 1, 0);
+ if (model()->hasChildren(newParent)) {
+ // Treat an invalid QAbstractItemModel as an invalid QModelIndex
+ resultingIndex = (newParent.model() ? newParent.model()->index(model()->rowCount(newParent) - 1, 0, newParent) : QModelIndex());
+ }
else
resultingIndex = newParent;
}
else {
- if (model()->hasChildren(currentIndex))
- resultingIndex = currentIndex.child(0, 0);
+ if (model()->hasChildren(currentIndex)) {
+ // Treat an invalid QAbstractItemModel as an invalid QModelIndex
+ resultingIndex = (currentIndex.model() ? currentIndex.model()->index(0, 0, currentIndex) : QModelIndex());
+ }
else
resultingIndex = currentIndex.sibling(currentIndex.row() + 1, 0);
}
if (!resultingIndex.isValid()) {
if (direction == Forward)
resultingIndex = model()->index(0, 0, QModelIndex());
- else
- resultingIndex = lastNetIndex.child(model()->rowCount(lastNetIndex) - 1, 0);
+ else {
+ // Assume model is valid
+ resultingIndex = lastNetIndex.model()->index(model()->rowCount(lastNetIndex) - 1, 0, lastNetIndex);
+ }
}
selectionModel()->setCurrentIndex(resultingIndex, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);
on_configChanged(); // make sure collapsation is correct
}
-QSize BufferView::sizeHint() const
-{
- return TreeViewTouch::sizeHint();
-
- if (!model())
- return TreeViewTouch::sizeHint();
-
- if (model()->rowCount() == 0)
- return {120, 50};
-
- int columnSize = 0;
- for (int i = 0; i < model()->columnCount(); i++) {
- if (!isColumnHidden(i))
- columnSize += sizeHintForColumn(i);
- }
- return {columnSize, 50};
-}
-
void BufferView::changeHighlight(BufferView::Direction direction)
{
// If for some weird reason we get a new delegate