summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/itemmodels/qsortfilterproxymodel.cpp7
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp21
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"