@@ -56,6 +56,8 @@ class QgsGrassToolsTreeFilterProxyModel : public QSortFilterProxyModel
56
56
: QSortFilterProxyModel( parent ), mModel ( 0 )
57
57
{
58
58
setDynamicSortFilter ( true );
59
+ mRegExp .setPatternSyntax ( QRegExp::Wildcard );
60
+ mRegExp .setCaseSensitivity ( Qt::CaseInsensitive );
59
61
}
60
62
61
63
void setSourceModel ( QAbstractItemModel * sourceModel ) override
@@ -68,19 +70,24 @@ class QgsGrassToolsTreeFilterProxyModel : public QSortFilterProxyModel
68
70
{
69
71
QgsDebugMsg ( QString ( " filter = %1" ).arg ( filter ) );
70
72
if ( mFilter == filter )
73
+ {
71
74
return ;
75
+ }
72
76
mFilter = filter;
77
+ mRegExp .setPattern ( mFilter );
78
+
73
79
invalidateFilter ();
74
80
}
75
81
76
82
protected:
77
83
78
84
QAbstractItemModel* mModel ;
79
- QString mFilter ; // filter string provided
85
+ QString mFilter ; // filter string provided
86
+ QRegExp mRegExp ; // regular expression constructed from filter string
80
87
81
88
bool filterAcceptsString ( const QString & value ) const
82
89
{
83
- return value.contains ( mFilter , Qt::CaseInsensitive );
90
+ return value.contains ( mRegExp );
84
91
}
85
92
86
93
// 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 )
628
635
mTreeView ->expandAll ();
629
636
}
630
637
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 );
632
641
Qt::CaseSensitivity myCaseSensitivity = Qt::CaseInsensitive;
633
642
QRegExp myRegExp ( theText, myCaseSensitivity, mySyntax );
634
643
mModelProxy ->setFilterRegExp ( myRegExp );
0 commit comments