From aae2512c85ff014eeca3c2ae82826dba31f4c259 Mon Sep 17 00:00:00 2001 From: Marcel Krems Date: Sun, 5 Apr 2020 16:47:31 +0200 Subject: Fix CaseSensitivity handling for QRegularExpression in QSortFilterProxyModel setFilterRegExp retains the caseSensitivity() while setFilterRegularExpression did not. Change setFilterRegularExpression to also retain the case sensitivity. Also fix the inverted logic in setFilterCaseSensitivity. Fixes: QTBUG-83313 Change-Id: I46f494d320aee99d50612f01f63558c693276989 Reviewed-by: Samuel Gaist Reviewed-by: David Faure (cherry picked from commit 9a921d78e87452962043721669f3027f7566eef4) --- .../tst_qsortfilterproxymodel_regularexpression.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'tests') diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp index 821e199bcb..ebcc4053c5 100644 --- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp +++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp @@ -37,6 +37,7 @@ public: tst_QSortFilterProxyModelRegularExpression(); private slots: void tst_invalid(); + void tst_caseSensitivity(); }; tst_QSortFilterProxyModelRegularExpression::tst_QSortFilterProxyModelRegularExpression() : @@ -55,5 +56,25 @@ void tst_QSortFilterProxyModelRegularExpression::tst_invalid() QCOMPARE(model.filterRegularExpression(), QRegularExpression()); } +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" -- cgit v1.2.3