X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fbufferview.cpp;h=f5db3e29c25b4ee8777fd4c5a333d02cae9bf3d3;hb=082cb8c8eb6db90cbb2166a0098874e76d5c6ad9;hp=f603bf587e66ed7c5d2e897722ee71bb8dcaf461;hpb=a453c963cf1872e14c83adf1d40a31821c166805;p=quassel.git diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index f603bf58..f5db3e29 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2019 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 * @@ -493,14 +493,18 @@ void BufferView::changeBuffer(Direction direction) QModelIndex newParent = currentIndex.sibling(currentIndex.row() - 1, 0); if (currentIndex.row() == 0) newParent = lastNetIndex; - if (model()->hasChildren(newParent)) - resultingIndex = newParent.model()->index(model()->rowCount(newParent) - 1, 0, newParent); + 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.model()->index(0, 0, currentIndex); + 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); } @@ -509,8 +513,10 @@ void BufferView::changeBuffer(Direction direction) if (!resultingIndex.isValid()) { if (direction == Forward) resultingIndex = model()->index(0, 0, QModelIndex()); - else + else { + // Assume model is valid resultingIndex = lastNetIndex.model()->index(model()->rowCount(lastNetIndex) - 1, 0, lastNetIndex); + } } selectionModel()->setCurrentIndex(resultingIndex, QItemSelectionModel::ClearAndSelect | QItemSelectionModel::Rows);