summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2016-05-04 14:23:17 +0200
committerMatthias Clasen <mclasen@redhat.com>2016-05-05 15:04:02 -0400
commitc509a104b72c2682ebde1f79ccecf49747318881 (patch)
tree3ef82cfbef70cee95c7ee7c33bab940b23dad57a
parent08e508889fd31845c676d915a57684cf1563929e (diff)
downloadgtk+-c509a104b72c2682ebde1f79ccecf49747318881.tar.gz
searchenginetracker: Quote fts match so it's seen as a single phrase
FTS5 has a complex enough syntax that it makes not much sense to wrap in simple search boxes. https://bugzilla.gnome.org/show_bug.cgi?id=765981
-rw-r--r--gtk/gtksearchenginetracker.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/gtk/gtksearchenginetracker.c b/gtk/gtksearchenginetracker.c
index 26ee103319..0d38d5aebd 100644
--- a/gtk/gtksearchenginetracker.c
+++ b/gtk/gtksearchenginetracker.c
@@ -228,19 +228,24 @@ static void
sparql_append_string_literal (GString *sparql,
const gchar *str,
gboolean glob,
- gboolean is_dir_uri)
+ gboolean is_dir_uri,
+ gboolean quoted)
{
gchar *s;
s = sparql_escape_string (str);
g_string_append_c (sparql, '"');
+ if (quoted)
+ g_string_append (sparql, "\\\"");
g_string_append (sparql, s);
if (is_dir_uri)
g_string_append_c (sparql, '/');
if (glob)
g_string_append_c (sparql, '*');
+ if (quoted)
+ g_string_append (sparql, "\\\"");
g_string_append_c (sparql, '"');
g_free (s);
@@ -253,7 +258,7 @@ sparql_append_string_literal_lower_case (GString *sparql,
gchar *s;
s = g_utf8_strdown (str, -1);
- sparql_append_string_literal (sparql, s, FALSE, FALSE);
+ sparql_append_string_literal (sparql, s, FALSE, FALSE, FALSE);
g_free (s);
}
@@ -355,7 +360,7 @@ gtk_search_engine_tracker_start (GtkSearchEngine *engine)
#ifdef FTS_MATCHING
/* Using FTS: */
g_string_append (sparql, "fts:match ");
- sparql_append_string_literal (sparql, search_text, TRUE, FALSE);
+ sparql_append_string_literal (sparql, search_text, TRUE, FALSE, TRUE);
#endif
g_string_append (sparql, ". FILTER (BOUND(nie:url(?urn)) && ");
@@ -371,13 +376,13 @@ gtk_search_engine_tracker_start (GtkSearchEngine *engine)
if (recursive)
{
g_string_append (sparql, "fn:starts-with(nie:url(?urn),");
- sparql_append_string_literal (sparql, location_uri, FALSE, TRUE);
+ sparql_append_string_literal (sparql, location_uri, FALSE, TRUE, FALSE);
g_string_append (sparql, ")");
}
else
{
g_string_append (sparql, "nie:url(?parent) = ");
- sparql_append_string_literal (sparql, location_uri, FALSE, FALSE);
+ sparql_append_string_literal (sparql, location_uri, FALSE, FALSE, FALSE);
}
g_free (location_uri);
}