[gnome-characters] searchProvider: Improve word boundary check
- From: Daiki Ueno <dueno src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-characters] searchProvider: Improve word boundary check
- Date: Wed, 6 Apr 2016 05:58:39 +0000 (UTC)
commit 507d549931126f7ab25b9808cff668bda41b6965
Author: Daiki Ueno <dueno src gnome org>
Date: Wed Apr 6 14:57:33 2016 +0900
searchProvider: Improve word boundary check
GC_SEARCH_FLAG_WORD now takes into account of multiple keywords.
https://bugzilla.gnome.org/show_bug.cgi?id=747061#c10
lib/gc.c | 25 ++++++++++++++++---------
1 files changed, 16 insertions(+), 9 deletions(-)
---
diff --git a/lib/gc.c b/lib/gc.c
index 9705ccc..d304e0d 100644
--- a/lib/gc.c
+++ b/lib/gc.c
@@ -442,20 +442,27 @@ filter_keywords (GcCharacterIter *iter, ucs4_t uc)
{
const gchar *keyword = *keywords++;
size_t length = strlen (keyword);
+ gchar *p;
if (length >= UNINAME_MAX)
return FALSE;
+ p = g_strstr_len (buffer, UNINAME_MAX, keyword);
+ if (!p)
+ return FALSE;
+
if (iter->flags & GC_SEARCH_FLAG_WORD)
- {
- if (strncmp (buffer, keyword, strlen (keyword)) != 0)
- return FALSE;
- }
- else
- {
- if (g_strstr_len (buffer, UNINAME_MAX, keyword) == NULL)
- return FALSE;
- }
+ {
+ while (p)
+ {
+ if (p == buffer || g_ascii_isspace (*(p - 1)))
+ break;
+ p = g_strstr_len (p + 1, UNINAME_MAX, keyword);
+ }
+
+ if (!p)
+ return FALSE;
+ }
}
return TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]