[gnome-builder] libide/search: implement default refiltering



commit 408596b80e2d7bf69681df471e7171cc08eccc74
Author: Christian Hergert <chergert redhat com>
Date:   Fri Jul 15 17:11:48 2022 -0700

    libide/search: implement default refiltering
    
    This is to help us avoid requerying all providers when typing additional
    words in the search box.

 src/libide/search/ide-search-result.c | 20 ++++++++++++++++++++
 src/libide/search/meson.build         |  2 ++
 2 files changed, 22 insertions(+)
---
diff --git a/src/libide/search/ide-search-result.c b/src/libide/search/ide-search-result.c
index 206809c6a..80867f359 100644
--- a/src/libide/search/ide-search-result.c
+++ b/src/libide/search/ide-search-result.c
@@ -22,6 +22,8 @@
 
 #include "config.h"
 
+#include <gtksourceview/gtksource.h>
+
 #include "ide-search-result.h"
 
 typedef struct
@@ -49,6 +51,22 @@ G_DEFINE_TYPE_WITH_PRIVATE (IdeSearchResult, ide_search_result, G_TYPE_OBJECT)
 
 static GParamSpec *properties [N_PROPS];
 
+static gboolean
+ide_search_result_real_matches (IdeSearchResult *self,
+                                const char      *query)
+{
+  IdeSearchResultPrivate *priv = ide_search_result_get_instance_private (self);
+  guint prio;
+
+  if (priv->title != NULL && gtk_source_completion_fuzzy_match (priv->title, query, &prio))
+    return TRUE;
+
+  if (priv->subtitle != NULL && gtk_source_completion_fuzzy_match (priv->subtitle, query, &prio))
+    return TRUE;
+
+  return FALSE;
+}
+
 static void
 ide_search_result_finalize (GObject *object)
 {
@@ -150,6 +168,8 @@ ide_search_result_class_init (IdeSearchResultClass *klass)
   object_class->get_property = ide_search_result_get_property;
   object_class->set_property = ide_search_result_set_property;
 
+  klass->matches = ide_search_result_real_matches;
+
   properties [PROP_PAINTABLE] =
     g_param_spec_object ("paintable",
                          "Paintable",
diff --git a/src/libide/search/meson.build b/src/libide/search/meson.build
index de7ee7f56..49df38919 100644
--- a/src/libide/search/meson.build
+++ b/src/libide/search/meson.build
@@ -64,7 +64,9 @@ libide_search_sources += libide_search_resources
 
 libide_search_deps = [
   libgio_dep,
+  libgtksource_dep,
   libpeas_dep,
+
   libide_core_dep,
   libide_threading_dep,
   libide_plugins_dep


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]