| 54 | } |
| 55 | |
| 56 | ModelIndex SortingProxyModel::mapToSource( const ModelIndex& proxyIndex ) const { |
| 57 | if ( !proxyIndex.isValid() ) |
| 58 | return {}; |
| 59 | |
| 60 | eeASSERT( proxyIndex.model() == this ); |
| 61 | eeASSERT( proxyIndex.internalData() ); |
| 62 | |
| 63 | auto& indexMapping = *static_cast<Mapping*>( proxyIndex.internalData() ); |
| 64 | auto it = mMappings.find( indexMapping.sourceParent ); |
| 65 | eeASSERT( it != mMappings.end() ); |
| 66 | |
| 67 | auto& mapping = *it->second; |
| 68 | if ( static_cast<size_t>( proxyIndex.row() ) >= mapping.sourceRows.size() || |
| 69 | proxyIndex.column() >= (Int64)columnCount() ) |
| 70 | return {}; |
| 71 | int sourceRow = mapping.sourceRows[proxyIndex.row()]; |
| 72 | int sourceColumn = proxyIndex.column(); |
| 73 | return source().index( sourceRow, sourceColumn, it->first ); |
| 74 | } |
| 75 | |
| 76 | SortingProxyModel::InternalMapIterator |
| 77 | SortingProxyModel::buildMapping( const ModelIndex& sourceParent ) { |
no test coverage detected