From 98ce9a6309932c7cf3ec12c18b5fa1493cc4f420 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 29 Jan 2015 12:17:44 +0100 Subject: QFileSystemModel: reimplement sibling for same-row Since QFSM, like most models, uses QModelIndex::internalPointer() as an indicator of the row, getting a sibling in the same row is as easy as copying the internalPointer() of the incoming index and just creating a new index with the column adjusted. For rows, the situation is quite a bit more complicated, so we currently continue to call the generic implementation. Change-Id: I36921e3f9c01c458a75aa439018f21c4c657e1cf Reviewed-by: David Faure --- src/widgets/dialogs/qfilesystemmodel.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/widgets/dialogs/qfilesystemmodel.cpp') diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp index fd49246e9f..52c06dbaba 100644 --- a/src/widgets/dialogs/qfilesystemmodel.cpp +++ b/src/widgets/dialogs/qfilesystemmodel.cpp @@ -250,6 +250,21 @@ QModelIndex QFileSystemModel::index(int row, int column, const QModelIndex &pare return createIndex(row, column, const_cast(indexNode)); } +/*! + \reimp +*/ +QModelIndex QFileSystemModel::sibling(int row, int column, const QModelIndex &idx) const +{ + if (row == idx.row() && column < QFileSystemModelPrivate::NumColumns) { + // cheap sibling operation: just adjust the column: + return createIndex(row, column, idx.internalPointer()); + } else { + // for anything else: call the default implementation + // (this could probably be optimized, too): + return QAbstractItemModel::sibling(row, column, idx); + } +} + /*! \overload -- cgit v1.2.3