diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2012-11-12 16:12:27 -0500 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2012-11-12 16:19:37 -0500 |
commit | 21be3b4039de684e34dd4f5ed0b192a6ca3ac2cd (patch) | |
tree | a8fd35be40361aed5c6940539eba2428d3f59318 | |
parent | b74ae85ffe962ef5754e528e10656a930ad8bcbc (diff) | |
download | nautilus-21be3b4039de684e34dd4f5ed0b192a6ca3ac2cd.tar.gz |
search-engine-model: apply mimetype filters
Or we'll get extra results when applying a mimetype filter when the
model engine is used.
-rw-r--r-- | libnautilus-private/nautilus-search-engine-model.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/libnautilus-private/nautilus-search-engine-model.c b/libnautilus-private/nautilus-search-engine-model.c index 8b75cbc6f..754584d37 100644 --- a/libnautilus-private/nautilus-search-engine-model.c +++ b/libnautilus-private/nautilus-search-engine-model.c @@ -109,20 +109,35 @@ model_directory_ready_cb (NautilusDirectory *directory, { NautilusSearchEngineModel *model = user_data; gchar *uri, *display_name; - GList *files, *l, *hits; + GList *files, *hits, *mime_types, *l, *m; NautilusFile *file; gdouble match; + gboolean found; NautilusSearchHit *hit; files = nautilus_directory_get_file_list (directory); + mime_types = nautilus_query_get_mime_types (model->details->query); hits = NULL; for (l = files; l != NULL; l = l->next) { file = l->data; + display_name = nautilus_file_get_display_name (file); match = nautilus_query_matches_string (model->details->query, display_name); + found = (match > -1); + + if (found && mime_types) { + found = FALSE; + + for (m = mime_types; m != NULL; m = m->next) { + if (nautilus_file_is_mime_type (file, m->data)) { + found = TRUE; + break; + } + } + } - if (match > -1) { + if (found) { uri = nautilus_file_get_uri (file); hit = nautilus_search_hit_new (uri); nautilus_search_hit_set_fts_rank (hit, match); @@ -133,6 +148,7 @@ model_directory_ready_cb (NautilusDirectory *directory, g_free (display_name); } + g_list_free_full (mime_types, g_free); nautilus_file_list_free (files); model->details->hits = hits; |