diff options
-rw-r--r-- | src/corelib/itemmodels/qsortfilterproxymodel.cpp | 4 | ||||
-rw-r--r-- | tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp | 19 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp index 2583d08502..d669a0bd2c 100644 --- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp +++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp @@ -2523,9 +2523,13 @@ QRegularExpression QSortFilterProxyModel::filterRegularExpression() const void QSortFilterProxyModel::setFilterRegularExpression(const QRegularExpression ®ularExpression) { Q_D(QSortFilterProxyModel); + const Qt::CaseSensitivity cs = filterCaseSensitivity(); d->filter_about_to_be_changed(); d->filter_regularexpression = regularExpression; d->filter_changed(QSortFilterProxyModelPrivate::Direction::Rows); + const Qt::CaseSensitivity updatedCs = filterCaseSensitivity(); + if (cs != updatedCs) + emit filterCaseSensitivityChanged(updatedCs); } /*! 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 9d7ba3ca84..8411d40a72 100644 --- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp +++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_regularexpression/tst_qsortfilterproxymodel_regularexpression.cpp @@ -27,6 +27,7 @@ ****************************************************************************/ #include <QTest> +#include <QSignalSpy> #include <QStringListModel> #include "tst_qsortfilterproxymodel.h" @@ -41,6 +42,7 @@ private slots: void tst_caseSensitivity(); void tst_keepCaseSensitivity_QTBUG_92260(); void tst_keepPatternOptions_QTBUG_92260(); + void tst_regexCaseSensitivityNotification(); }; tst_QSortFilterProxyModelRegularExpression::tst_QSortFilterProxyModelRegularExpression() : @@ -140,5 +142,22 @@ void tst_QSortFilterProxyModelRegularExpression::tst_keepPatternOptions_QTBUG_92 QRegularExpression::MultilineOption); } +/*! + This test ensures that if the case sensitivity is changed during a call to + setFilterRegularExpression, the notification signal will be emitted +*/ +void tst_QSortFilterProxyModelRegularExpression::tst_regexCaseSensitivityNotification() +{ + QSortFilterProxyModel proxy; + QSignalSpy spy(&proxy, &QSortFilterProxyModel::filterCaseSensitivityChanged); + proxy.setFilterCaseSensitivity(Qt::CaseInsensitive); + QCOMPARE(spy.count(), 1); + QRegularExpression re("regex"); + QVERIFY(!re.patternOptions().testFlag(QRegularExpression::CaseInsensitiveOption)); + proxy.setFilterRegularExpression(re); + QCOMPARE(proxy.filterCaseSensitivity(), Qt::CaseSensitive); + QCOMPARE(spy.count(), 2); +} + QTEST_MAIN(tst_QSortFilterProxyModelRegularExpression) #include "tst_qsortfilterproxymodel_regularexpression.moc" |