summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2012-11-12 16:12:27 -0500
committerCosimo Cecchi <cosimoc@gnome.org>2012-11-12 16:19:37 -0500
commit21be3b4039de684e34dd4f5ed0b192a6ca3ac2cd (patch)
treea8fd35be40361aed5c6940539eba2428d3f59318
parentb74ae85ffe962ef5754e528e10656a930ad8bcbc (diff)
downloadnautilus-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.c20
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;