summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2012-10-11 21:25:08 -0400
committerCosimo Cecchi <cosimoc@gnome.org>2012-10-11 21:48:43 -0400
commitc6510979aae628789dbddbc0d633acee64f88100 (patch)
tree6511e2ab79bb5900f9ab6a825a113a968d232673
parentd1f53906bbb7cf1e901d2fef6577179594a6b0f7 (diff)
downloadnautilus-c6510979aae628789dbddbc0d633acee64f88100.tar.gz
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.
-rw-r--r--libnautilus-private/nautilus-query.c14
-rw-r--r--libnautilus-private/nautilus-query.h3
-rw-r--r--libnautilus-private/nautilus-search-engine-simple.c7
-rw-r--r--src/nautilus-shell-search-provider.c1
4 files changed, 24 insertions, 1 deletions
diff --git a/libnautilus-private/nautilus-query.c b/libnautilus-private/nautilus-query.c
index 59d94f4b9..6f457d824 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 9507cdbe5..4c2e52bca 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 7ee4917da..0a52dac03 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 cf1cced10..649ea159a 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);