From ddeec1b07edc0f1f225f8dc52efefc2ff63049be Mon Sep 17 00:00:00 2001 From: David Faure Date: Tue, 2 Oct 2018 02:39:21 +0200 Subject: [PATCH] QSFPM: don't let setFilterRegExp(QString) overwrite CaseSensitivity This is a regression from commit 346c15102b, which creates a new QRegExp in setFilterRegExp, losing previously set case sensitivity property (i.e. when the code does proxy->setFilterCaseSensitivity(Qt::CaseInsensitive) before setFilterRegExp). Interestingly that commit ensured that setFilterFixedString would still preserve CaseSensitivity, but not setFilterRegExp(QString). Change-Id: I3d37d001ce6e86dd90e7e07431440a42607172f9 Reviewed-by: Samuel Gaist Reviewed-by: Christian Ehrlicher Reviewed-by: Luca Beldi --- src/corelib/itemmodels/qsortfilterproxymodel.cpp | 1 + .../tst_qsortfilterproxymodel_regexp.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp index 31b9bbc990..21fbf83382 100644 --- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp +++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp @@ -2731,6 +2731,7 @@ void QSortFilterProxyModel::setFilterRegExp(const QString &pattern) Q_D(QSortFilterProxyModel); d->filter_about_to_be_changed(); QRegExp rx(pattern); + rx.setCaseSensitivity(d->filter_data.caseSensitivity()); d->filter_data.setRegExp(rx); d->filter_changed(); } diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regexp/tst_qsortfilterproxymodel_regexp.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regexp/tst_qsortfilterproxymodel_regexp.cpp index e83738661e..38607f1378 100644 --- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regexp/tst_qsortfilterproxymodel_regexp.cpp +++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regexp/tst_qsortfilterproxymodel_regexp.cpp @@ -37,6 +37,7 @@ public: tst_QSortFilterProxyModelRegExp(); private slots: void tst_invalid(); + void tst_caseSensitivity(); }; tst_QSortFilterProxyModelRegExp::tst_QSortFilterProxyModelRegExp() : @@ -55,5 +56,14 @@ void tst_QSortFilterProxyModelRegExp::tst_invalid() QCOMPARE(model.filterRegExp(), QRegExp()); } +void tst_QSortFilterProxyModelRegExp::tst_caseSensitivity() +{ + const QLatin1String pattern("test"); + QSortFilterProxyModel model; + model.setFilterCaseSensitivity(Qt::CaseInsensitive); + model.setFilterRegExp(pattern); + QCOMPARE(model.filterCaseSensitivity(), Qt::CaseInsensitive); +} + QTEST_MAIN(tst_QSortFilterProxyModelRegExp) #include "tst_qsortfilterproxymodel_regexp.moc"