@@ -56,6 +56,8 @@ class QgsGrassToolsTreeFilterProxyModel : public QSortFilterProxyModel
5656 : QSortFilterProxyModel( parent ), mModel ( 0 )
5757 {
5858 setDynamicSortFilter ( true );
59+ mRegExp .setPatternSyntax ( QRegExp::Wildcard );
60+ mRegExp .setCaseSensitivity ( Qt::CaseInsensitive );
5961 }
6062
6163 void setSourceModel ( QAbstractItemModel * sourceModel ) override
@@ -68,19 +70,24 @@ class QgsGrassToolsTreeFilterProxyModel : public QSortFilterProxyModel
6870 {
6971 QgsDebugMsg ( QString ( " filter = %1" ).arg ( filter ) );
7072 if ( mFilter == filter )
73+ {
7174 return ;
75+ }
7276 mFilter = filter;
77+ mRegExp .setPattern ( mFilter );
78+
7379 invalidateFilter ();
7480 }
7581
7682 protected:
7783
7884 QAbstractItemModel* mModel ;
79- QString mFilter ; // filter string provided
85+ QString mFilter ; // filter string provided
86+ QRegExp mRegExp ; // regular expression constructed from filter string
8087
8188 bool filterAcceptsString ( const QString & value ) const
8289 {
83- return value.contains ( mFilter , Qt::CaseInsensitive );
90+ return value.contains ( mRegExp );
8491 }
8592
8693 // It would be better to apply the filer only to expanded (visible) items, but using mapFromSource() + view here was causing strange errors
@@ -628,7 +635,9 @@ void QgsGrassTools::on_mFilterInput_textChanged( QString theText )
628635 mTreeView ->expandAll ();
629636 }
630637
631- QRegExp::PatternSyntax mySyntax = QRegExp::PatternSyntax ( QRegExp::RegExp );
638+ // using simple wildcard filter which is probably what users is expecting, at least until
639+ // there is a filter type switch in UI
640+ QRegExp::PatternSyntax mySyntax = QRegExp::PatternSyntax ( QRegExp::Wildcard );
632641 Qt::CaseSensitivity myCaseSensitivity = Qt::CaseInsensitive;
633642 QRegExp myRegExp ( theText, myCaseSensitivity, mySyntax );
634643 mModelProxy ->setFilterRegExp ( myRegExp );
0 commit comments