[nautilus] shell-provider: make the shell search provider follow show-hidden



commit c6510979aae628789dbddbc0d633acee64f88100
Author: Cosimo Cecchi <cosimoc gnome org>
Date:   Thu Oct 11 21:25:08 2012 -0400

    shell-provider: make the shell search provider follow show-hidden
    
    Add a query property we can set to false from the shell provider, and
    use it in the simple search engine to exclude hidden files. Note that by
    default the query sets it to TRUE, so the behavior in Nautilus is
    unchanged.

 libnautilus-private/nautilus-query.c               |   14 ++++++++++++++
 libnautilus-private/nautilus-query.h               |    3 +++
 .../nautilus-search-engine-simple.c                |    7 ++++++-
 src/nautilus-shell-search-provider.c               |    1 +
 4 files changed, 24 insertions(+), 1 deletions(-)
---
diff --git a/libnautilus-private/nautilus-query.c b/libnautilus-private/nautilus-query.c
index 59d94f4..6f457d8 100644
--- a/libnautilus-private/nautilus-query.c
+++ b/libnautilus-private/nautilus-query.c
@@ -33,6 +33,7 @@ struct NautilusQueryDetails {
 	char *text;
 	char *location_uri;
 	GList *mime_types;
+	gboolean show_hidden;
 };
 
 static void  nautilus_query_class_init       (NautilusQueryClass *class);
@@ -68,6 +69,7 @@ nautilus_query_init (NautilusQuery *query)
 {
 	query->details = G_TYPE_INSTANCE_GET_PRIVATE (query, NAUTILUS_TYPE_QUERY,
 						      NautilusQueryDetails);
+	query->details->show_hidden = TRUE;
 }
 
 NautilusQuery *
@@ -123,6 +125,18 @@ nautilus_query_add_mime_type (NautilusQuery *query, const char *mime_type)
 						    g_strdup (mime_type));
 }
 
+gboolean
+nautilus_query_get_show_hidden_files (NautilusQuery *query)
+{
+	return query->details->show_hidden;
+}
+
+void
+nautilus_query_set_show_hidden_files (NautilusQuery *query, gboolean show_hidden)
+{
+	query->details->show_hidden = show_hidden;
+}
+
 char *
 nautilus_query_to_readable_string (NautilusQuery *query)
 {
diff --git a/libnautilus-private/nautilus-query.h b/libnautilus-private/nautilus-query.h
index 9507cdb..4c2e52b 100644
--- a/libnautilus-private/nautilus-query.h
+++ b/libnautilus-private/nautilus-query.h
@@ -51,6 +51,9 @@ NautilusQuery* nautilus_query_new      (void);
 char *         nautilus_query_get_text           (NautilusQuery *query);
 void           nautilus_query_set_text           (NautilusQuery *query, const char *text);
 
+gboolean       nautilus_query_get_show_hidden_files (NautilusQuery *query);
+void           nautilus_query_set_show_hidden_files (NautilusQuery *query, gboolean show_hidden);
+
 char *         nautilus_query_get_location       (NautilusQuery *query);
 void           nautilus_query_set_location       (NautilusQuery *query, const char *uri);
 
diff --git a/libnautilus-private/nautilus-search-engine-simple.c b/libnautilus-private/nautilus-search-engine-simple.c
index 7ee4917..0a52dac 100644
--- a/libnautilus-private/nautilus-search-engine-simple.c
+++ b/libnautilus-private/nautilus-search-engine-simple.c
@@ -210,7 +210,7 @@ visit_directory (GFile *dir, SearchThreadData *data)
 	GFile *child;
 	const char *mime_type, *display_name;
 	char *prepared;
-	gboolean found;
+	gboolean found, is_hidden;
 	int i;
 	GList *l;
 	const char *id;
@@ -235,6 +235,11 @@ visit_directory (GFile *dir, SearchThreadData *data)
 			goto next;
 		}
 
+		is_hidden = g_file_info_get_is_hidden (info) || g_file_info_get_is_backup (info);
+		if (is_hidden && !nautilus_query_get_show_hidden_files (data->engine->details->query)) {
+			goto next;
+		}
+
 		prepared = nautilus_search_prepare_string_for_compare (display_name);
 
 		found = TRUE;
diff --git a/src/nautilus-shell-search-provider.c b/src/nautilus-shell-search-provider.c
index cf1cced..649ea15 100644
--- a/src/nautilus-shell-search-provider.c
+++ b/src/nautilus-shell-search-provider.c
@@ -474,6 +474,7 @@ execute_search (NautilusShellSearchProviderApp *self,
   home_uri = nautilus_get_home_directory_uri ();
 
   query = nautilus_query_new ();
+  nautilus_query_set_show_hidden_files (query, FALSE);
   nautilus_query_set_text (query, terms_joined);
   nautilus_query_set_location (query, home_uri);
 



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