summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libnautilus-private/nautilus-search-engine-model.c17
-rw-r--r--libnautilus-private/nautilus-search-engine-simple.c25
-rw-r--r--libnautilus-private/nautilus-ui-utilities.c12
-rw-r--r--libnautilus-private/nautilus-ui-utilities.h2
-rw-r--r--src/nautilus-shell-search-provider.c17
5 files changed, 31 insertions, 42 deletions
diff --git a/libnautilus-private/nautilus-search-engine-model.c b/libnautilus-private/nautilus-search-engine-model.c
index 7f44ecbfd..73fc6292b 100644
--- a/libnautilus-private/nautilus-search-engine-model.c
+++ b/libnautilus-private/nautilus-search-engine-model.c
@@ -28,6 +28,7 @@
#include "nautilus-directory.h"
#include "nautilus-directory-private.h"
#include "nautilus-file.h"
+#include "nautilus-ui-utilities.h"
#include <string.h>
#include <glib.h>
@@ -88,24 +89,12 @@ emit_finished_idle_cb (gpointer user_data)
}
static gchar *
-prepare_string_for_compare (const gchar *string)
-{
- gchar *normalized, *res;
-
- normalized = g_utf8_normalize (string, -1, G_NORMALIZE_NFD);
- res = g_utf8_strdown (normalized, -1);
- g_free (normalized);
-
- return res;
-}
-
-static gchar *
prepare_pattern_for_comparison (NautilusSearchEngineModel *model)
{
gchar *text, *prepared, *pattern;
text = nautilus_query_get_text (model->details->query);
- prepared = prepare_string_for_compare (text);
+ prepared = nautilus_search_prepare_string_for_compare (text);
pattern = g_strdup_printf ("*%s*", prepared);
g_free (prepared);
@@ -132,7 +121,7 @@ model_directory_ready_cb (NautilusDirectory *directory,
for (l = files; l != NULL; l = l->next) {
file = l->data;
display_name = nautilus_file_get_display_name (file);
- prepared = prepare_string_for_compare (display_name);
+ prepared = nautilus_search_prepare_string_for_compare (display_name);
if (g_pattern_match_simple (pattern, prepared)) {
uri = nautilus_file_get_uri (file);
diff --git a/libnautilus-private/nautilus-search-engine-simple.c b/libnautilus-private/nautilus-search-engine-simple.c
index 5571a02cf..8629a8a40 100644
--- a/libnautilus-private/nautilus-search-engine-simple.c
+++ b/libnautilus-private/nautilus-search-engine-simple.c
@@ -25,6 +25,7 @@
#include "nautilus-search-hit.h"
#include "nautilus-search-provider.h"
#include "nautilus-search-engine-simple.h"
+#include "nautilus-ui-utilities.h"
#include <string.h>
#include <glib.h>
@@ -94,7 +95,7 @@ search_thread_data_new (NautilusSearchEngineSimple *engine,
NautilusQuery *query)
{
SearchThreadData *data;
- char *text, *lower, *normalized, *uri;
+ char *text, *prepared, *uri;
GFile *location;
data = g_new0 (SearchThreadData, 1);
@@ -114,12 +115,10 @@ search_thread_data_new (NautilusSearchEngineSimple *engine,
g_queue_push_tail (data->directories, location);
text = nautilus_query_get_text (query);
- normalized = g_utf8_normalize (text, -1, G_NORMALIZE_NFD);
- lower = g_utf8_strdown (normalized, -1);
- data->words = g_strsplit (lower, " ", -1);
+ prepared = nautilus_search_prepare_string_for_compare (text);
+ data->words = g_strsplit (prepared, " ", -1);
g_free (text);
- g_free (lower);
- g_free (normalized);
+ g_free (prepared);
data->mime_types = nautilus_query_get_mime_types (query);
@@ -214,7 +213,7 @@ visit_directory (GFile *dir, SearchThreadData *data)
GFileInfo *info;
GFile *child;
const char *mime_type, *display_name;
- char *lower_name, *normalized;
+ char *prepared;
gboolean found;
int i;
GList *l;
@@ -239,19 +238,17 @@ visit_directory (GFile *dir, SearchThreadData *data)
if (display_name == NULL) {
goto next;
}
-
- normalized = g_utf8_normalize (display_name, -1, G_NORMALIZE_NFD);
- lower_name = g_utf8_strdown (normalized, -1);
- g_free (normalized);
-
+
+ prepared = nautilus_search_prepare_string_for_compare (display_name);
+
found = TRUE;
for (i = 0; data->words[i] != NULL; i++) {
- if (strstr (lower_name, data->words[i]) == NULL) {
+ if (strstr (prepared, data->words[i]) == NULL) {
found = FALSE;
break;
}
}
- g_free (lower_name);
+ g_free (prepared);
if (found && data->mime_types) {
mime_type = g_file_info_get_content_type (info);
diff --git a/libnautilus-private/nautilus-ui-utilities.c b/libnautilus-private/nautilus-ui-utilities.c
index 539ddca70..b70a01f87 100644
--- a/libnautilus-private/nautilus-ui-utilities.c
+++ b/libnautilus-private/nautilus-ui-utilities.c
@@ -61,6 +61,18 @@ nautilus_ui_prepare_merge_ui (GtkUIManager *ui_manager,
g_object_unref (*action_group); /* owned by ui manager */
}
+gchar *
+nautilus_search_prepare_string_for_compare (const gchar *string)
+{
+ gchar *normalized, *res;
+
+ normalized = g_utf8_normalize (string, -1, G_NORMALIZE_NFD);
+ res = g_utf8_strdown (normalized, -1);
+ g_free (normalized);
+
+ return res;
+}
+
static void
extension_action_callback (GtkAction *action,
gpointer callback_data)
diff --git a/libnautilus-private/nautilus-ui-utilities.h b/libnautilus-private/nautilus-ui-utilities.h
index 12e2e5e5a..9020a1251 100644
--- a/libnautilus-private/nautilus-ui-utilities.h
+++ b/libnautilus-private/nautilus-ui-utilities.h
@@ -36,6 +36,8 @@ void nautilus_ui_prepare_merge_ui (GtkUIManager *ui_manage
GtkActionGroup **action_group);
GtkAction * nautilus_action_from_menu_item (NautilusMenuItem *item);
+gchar * nautilus_search_prepare_string_for_compare (const gchar *string);
+
GdkPixbuf * nautilus_ui_get_menu_icon (const char *icon_name);
char * nautilus_escape_action_name (const char *action_name,
diff --git a/src/nautilus-shell-search-provider.c b/src/nautilus-shell-search-provider.c
index 5ee3441bd..08dc09664 100644
--- a/src/nautilus-shell-search-provider.c
+++ b/src/nautilus-shell-search-provider.c
@@ -32,6 +32,7 @@
#include <libnautilus-private/nautilus-file-utilities.h>
#include <libnautilus-private/nautilus-search-engine.h>
#include <libnautilus-private/nautilus-search-provider.h>
+#include <libnautilus-private/nautilus-ui-utilities.h>
#include "nautilus-bookmark-list.h"
#include "nautilus-shell-search-provider-generated.h"
@@ -129,18 +130,6 @@ get_gicon (NautilusShellSearchProviderApp *self,
return nautilus_file_get_gicon (file, 0);
}
-static gchar *
-prepare_string_for_compare (const gchar *string)
-{
- gchar *normalized, *res;
-
- normalized = g_utf8_normalize (string, -1, G_NORMALIZE_NFD);
- res = g_utf8_strdown (normalized, -1);
- g_free (normalized);
-
- return res;
-}
-
static void
pending_search_free (PendingSearch *search)
{
@@ -308,7 +297,7 @@ search_hit_candidate_new (const gchar *uri,
SearchHitCandidate *candidate = g_slice_new0 (SearchHitCandidate);
candidate->uri = g_strdup (uri);
- candidate->string_for_compare = prepare_string_for_compare (name);
+ candidate->string_for_compare = nautilus_search_prepare_string_for_compare (name);
return candidate;
}
@@ -332,7 +321,7 @@ search_add_volumes_and_bookmarks (NautilusShellSearchProviderApp *self)
candidates = NULL;
query_text = nautilus_query_get_text (self->current_search->query);
- string = prepare_string_for_compare (query_text);
+ string = nautilus_search_prepare_string_for_compare (query_text);
terms = g_strsplit (string, " ", -1);
g_free (string);