searchenginemodel: finalize search results
authorPierre Ossman <ossman@cendio.se>
Mon, 4 Oct 2021 07:23:39 +0000 (09:23 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 31 Oct 2021 21:52:04 +0000 (17:52 -0400)
It is necessary to signal the search engine that we are finished and
that we found something for it to reliably show the results. It would
sometimes work anyway since it is sufficient if any backend signals
completion. However if GtkSearchEngineModel was the only backend
returning results then things would break.

gtk/gtksearchenginemodel.c

index af85e56c51d024c91b3ee5c253c8bc88006612d4..6832659ccb582a6f70798a80caca7f186f7ee397 100644 (file)
@@ -81,6 +81,7 @@ do_search (gpointer data)
   GtkSearchEngineModel *model = data;
   GtkTreeIter iter;
   GList *hits = NULL;
+  gboolean got_results = FALSE;
 
   if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (model->model), &iter))
     {
@@ -107,11 +108,14 @@ do_search (gpointer data)
         {
           _gtk_search_engine_hits_added (GTK_SEARCH_ENGINE (model), hits);
           g_list_free_full (hits, (GDestroyNotify)_gtk_search_hit_free);
+          got_results = TRUE;
         }
     }
 
   model->idle = 0;
 
+  _gtk_search_engine_finished (GTK_SEARCH_ENGINE (model), got_results);
+
   return G_SOURCE_REMOVE;
 }