Skip to content

Commit 6755ed9

Browse files
committed
Fix ordering of relation editor's children list not respecting project configuration
1 parent 18c9d96 commit 6755ed9

2 files changed

Lines changed: 18 additions & 0 deletions

File tree

src/core/referencingfeaturelistmodel.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,3 +635,8 @@ void ReferencingFeatureListModel::setSortOrder( Qt::SortOrder sortOrder )
635635

636636
sort( 0, mSortOrder );
637637
}
638+
639+
bool ReferencingFeatureListModel::lessThan( const QModelIndex &left, const QModelIndex &right ) const
640+
{
641+
return Qt::AscendingOrder ? left.row() > right.row() : left.row() < right.row();
642+
}

src/core/referencingfeaturelistmodel.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,9 @@ class ReferencingFeatureListModel : public QSortFilterProxyModel
427427
*/
428428
void setSortOrder( Qt::SortOrder sortOrder );
429429

430+
protected:
431+
bool lessThan( const QModelIndex &left, const QModelIndex &right ) const override;
432+
430433
signals:
431434
void attributeFormModelChanged();
432435
void featureChanged();
@@ -470,7 +473,17 @@ class FeatureGatherer : public QThread
470473
}
471474
}
472475
}
476+
473477
mRequest = relation.getRelatedFeaturesRequest( feature );
478+
QgsAttributeTableConfig config = relation.referencingLayer()->attributeTableConfig();
479+
if ( !config.sortExpression().isEmpty() )
480+
{
481+
mRequest.addOrderBy( config.sortExpression(), config.sortOrder() == Qt::AscendingOrder );
482+
}
483+
else if ( !relation.referencingLayer()->displayExpression().isEmpty() )
484+
{
485+
mRequest.addOrderBy( relation.referencingLayer()->displayExpression() );
486+
}
474487

475488
mContext = relation.referencingLayer()->createExpressionContext();
476489
mDisplayExpression = relation.referencingLayer()->displayExpression();

0 commit comments

Comments
 (0)