Fix CaseSensitivity handling for QRegularExpression in QSortFilterProxyModel
setFilterRegExp retains the caseSensitivity() while setFilterRegularExpression did not. Change setFilterRegularExpression to also retain the case sensitivity. Fixes: QTBUG-83313 Pick-to: 5.15 Change-Id: I46f494d320aee99d50612f01f63558c693276989 Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch> Reviewed-by: David Faure <david.faure@kdab.com>bb10
parent
d9d813b6d1
commit
9a921d78e8
|
|
@ -2653,7 +2653,8 @@ void QSortFilterProxyModel::setFilterRegularExpression(const QString &pattern)
|
|||
{
|
||||
Q_D(QSortFilterProxyModel);
|
||||
d->filter_about_to_be_changed();
|
||||
QRegularExpression rx(pattern);
|
||||
QRegularExpression rx(pattern,
|
||||
d->filter_data.patternOptions() & QRegularExpression::CaseInsensitiveOption);
|
||||
d->filter_data.setPattern(pattern);
|
||||
d->filter_changed(QSortFilterProxyModelPrivate::Direction::Rows);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ public:
|
|||
tst_QSortFilterProxyModelRegularExpression();
|
||||
private slots:
|
||||
void tst_invalid();
|
||||
void tst_caseSensitivity();
|
||||
};
|
||||
|
||||
tst_QSortFilterProxyModelRegularExpression::tst_QSortFilterProxyModelRegularExpression() :
|
||||
|
|
@ -52,5 +53,25 @@ void tst_QSortFilterProxyModelRegularExpression::tst_invalid()
|
|||
QCOMPARE(model.filterRegularExpression(), QRegularExpression(pattern));
|
||||
}
|
||||
|
||||
void tst_QSortFilterProxyModelRegularExpression::tst_caseSensitivity()
|
||||
{
|
||||
const QLatin1String pattern("test");
|
||||
QStringListModel model({ "test", "TesT" });
|
||||
QSortFilterProxyModel proxyModel;
|
||||
proxyModel.setSourceModel(&model);
|
||||
|
||||
proxyModel.setFilterCaseSensitivity(Qt::CaseInsensitive);
|
||||
proxyModel.setFilterRegularExpression(pattern);
|
||||
QCOMPARE(proxyModel.filterCaseSensitivity(), Qt::CaseInsensitive);
|
||||
QCOMPARE(proxyModel.rowCount(), 2);
|
||||
|
||||
proxyModel.setFilterCaseSensitivity(Qt::CaseSensitive);
|
||||
QCOMPARE(proxyModel.filterCaseSensitivity(), Qt::CaseSensitive);
|
||||
QCOMPARE(proxyModel.rowCount(), 1);
|
||||
proxyModel.setFilterCaseSensitivity(Qt::CaseInsensitive);
|
||||
QCOMPARE(proxyModel.filterCaseSensitivity(), Qt::CaseInsensitive);
|
||||
QCOMPARE(proxyModel.rowCount(), 2);
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QSortFilterProxyModelRegularExpression)
|
||||
#include "tst_qsortfilterproxymodel_regularexpression.moc"
|
||||
|
|
|
|||
Loading…
Reference in New Issue