diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2015-01-29 12:17:44 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2015-09-13 12:22:10 +0000 |
commit | 98ce9a6309932c7cf3ec12c18b5fa1493cc4f420 (patch) | |
tree | cdfcd694580862ceda585019552244806225f019 /src/widgets/dialogs/qfilesystemmodel.cpp | |
parent | f43885f8d14e045e5ec47857d62a140d99d16cfa (diff) |
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 <david.faure@kdab.com>
Diffstat (limited to 'src/widgets/dialogs/qfilesystemmodel.cpp')
-rw-r--r-- | src/widgets/dialogs/qfilesystemmodel.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
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 @@ -251,6 +251,21 @@ QModelIndex QFileSystemModel::index(int row, int column, const QModelIndex &pare } /*! + \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 Returns the model item index for the given \a path and \a column. |