[evince] djvu: casefold search text in case insensitive search
- From: Jose Aliste <jaliste src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince] djvu: casefold search text in case insensitive search
- Date: Fri, 19 Jul 2019 12:28:07 +0000 (UTC)
commit 26f821370d832d66a03dfb84ae06c33d30695037
Author: Jason Crain <jcrain src gnome org>
Date: Thu Jul 18 18:49:51 2019 -0600
djvu: casefold search text in case insensitive search
In case-insensitive search, the DjVu backend fails to find any matches
if the search string contains capital letters. This is because the
backend 'casefolds' the document text, converting it to a form that can
be compared independent of case, and which is usually composed of lower
case letters, but doesn't casefold the search text.
Fix this by also casefolding the search text during case-insensitive
search.
Fixes #1212
backend/djvu/djvu-document.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
---
diff --git a/backend/djvu/djvu-document.c b/backend/djvu/djvu-document.c
index 6711f31f..45cf33d1 100644
--- a/backend/djvu/djvu-document.c
+++ b/backend/djvu/djvu-document.c
@@ -859,6 +859,7 @@ djvu_document_find_find_text (EvDocumentFind *document,
miniexp_t page_text;
gdouble width, height, dpi;
GList *matches = NULL, *l;
+ char *search_text = NULL;
g_return_val_if_fail (text != NULL, NULL);
@@ -872,7 +873,13 @@ djvu_document_find_find_text (EvDocumentFind *document,
djvu_text_page_index_text (tpage, case_sensitive);
if (tpage->links->len > 0) {
- djvu_text_page_search (tpage, text);
+ if (!case_sensitive) {
+ search_text = g_utf8_casefold (text, -1);
+ djvu_text_page_search (tpage, search_text);
+ g_free (search_text);
+ } else {
+ djvu_text_page_search (tpage, text);
+ }
matches = tpage->results;
}
djvu_text_page_free (tpage);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]