diff options
-rw-r--r-- | src/corelib/itemmodels/qsortfilterproxymodel.cpp | 7 | ||||
-rw-r--r-- | tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp | 21 |
2 files changed, 26 insertions, 2 deletions
diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp index 4f5593e0a0..bd4c7e93c5 100644 --- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp +++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp @@ -236,7 +236,7 @@ public: case ExpressionType::RegularExpression: { QRegularExpression::PatternOptions options = m_regularExpression.patternOptions(); - options.setFlag(QRegularExpression::CaseInsensitiveOption, cs == Qt::CaseSensitive); + options.setFlag(QRegularExpression::CaseInsensitiveOption, cs == Qt::CaseInsensitive); m_regularExpression.setPatternOptions(options); } break; @@ -2793,7 +2793,10 @@ void QSortFilterProxyModel::setFilterRegularExpression(const QString &pattern) { Q_D(QSortFilterProxyModel); d->filter_about_to_be_changed(); - QRegularExpression rx(pattern); + QRegularExpression rx(pattern, + d->filter_data.caseSensitivity() + ? QRegularExpression::NoPatternOption + : QRegularExpression::CaseInsensitiveOption); d->filter_data.setRegularExpression(rx); d->filter_changed(); } 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" |