From 29b27da2b190def01aa17bf82ae2dc1cf2b21088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Fri, 30 Oct 2026 21:34:46 -0700 Subject: [PATCH] SearchView: try StringFilter --- src/SearchView.vala | 30 +++++++++--------------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/src/SearchView.vala b/src/SearchView.vala index 8dde924c..6cba30fe 100644 --- a/src/SearchView.vala +++ b/src/SearchView.vala @@ -26,16 +26,11 @@ public class Switchboard.SearchView : Granite.Bin { return _query; } set { - Gtk.FilterChange filter_change = DIFFERENT; - if (value.has_prefix (query)) { - filter_change = MORE_STRICT; - } - _query = value; - alert_view.title = _("No Results for ā€œ%sā€").printf (query); + alert_view.title = _("No Results for ā€œ%sā€").printf (value); - filter_model.filter.changed (filter_change); + ((Gtk.StringFilter) filter_model.filter).search = value; listbox.invalidate_sort (); listbox.select_row (null); } @@ -50,7 +45,13 @@ public class Switchboard.SearchView : Granite.Bin { construct { list_store = new ListStore (typeof (SearchRow)); - filter_model = new Gtk.FilterListModel (list_store, new Gtk.CustomFilter (filter_func)) { + filter_model = new Gtk.FilterListModel ( + list_store, + new Gtk.StringFilter (new Gtk.PropertyExpression (typeof (SearchRow), null, "last-item")) { + ignore_case = true, + match_mode = SUBSTRING + } + ) { incremental = true }; @@ -88,19 +89,6 @@ public class Switchboard.SearchView : Granite.Bin { listbox.get_row_at_y (0).activate (); } - private bool filter_func (Object object) { - if (query == "" || query == null) { - return true; - } - - bool valid = query.match_string (((SearchRow) object).last_item, true); - if (valid) { - ((SearchRow) object).pattern = query; - } - - return valid; - } - private int sort_func (Gtk.ListBoxRow row1, Gtk.ListBoxRow row2) { var search_text = query.down (); var row1_label = ((SearchRow) row1).last_item.down ();