[evince] djvu: casefold search text in case insensitive search



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]