Text search: normalize input text

So that Unicode NFC normalization can combine diacritics
entered via our keyboard with their base into their
canonical form (we can expect books text to be normalized).
reviewable/pr10648/r1
poire-z 11 months ago
parent 6decb71521
commit dffc2404ca

@ -6,6 +6,7 @@ local InfoMessage = require("ui/widget/infomessage")
local InputDialog = require("ui/widget/inputdialog") local InputDialog = require("ui/widget/inputdialog")
local Notification = require("ui/widget/notification") local Notification = require("ui/widget/notification")
local UIManager = require("ui/uimanager") local UIManager = require("ui/uimanager")
local Utf8Proc = require("ffi/utf8proc")
local WidgetContainer = require("ui/widget/container/widgetcontainer") local WidgetContainer = require("ui/widget/container/widgetcontainer")
local logger = require("logger") local logger = require("logger")
local _ = require("gettext") local _ = require("gettext")
@ -83,7 +84,11 @@ end
function ReaderSearch:searchCallback(reverse) function ReaderSearch:searchCallback(reverse)
local search_text = self.input_dialog:getInputText() local search_text = self.input_dialog:getInputText()
if search_text == "" then return end if search_text == "" then return end
self.last_search_text = search_text -- search_text comes from our keyboard, and may contain multiple diacritics ordered
-- in any order: we'd rather have them normalized, and expect the book content to
-- be proper and normalized text.
self.last_search_text = search_text -- if shown again, show it as it has been inputted
search_text = Utf8Proc.normalize_NFC(search_text)
self.use_regex = self.check_button_regex.checked self.use_regex = self.check_button_regex.checked
self.case_insensitive = not self.check_button_case.checked self.case_insensitive = not self.check_button_case.checked
local regex_error = self.use_regex and self.ui.document:checkRegex(search_text) local regex_error = self.use_regex and self.ui.document:checkRegex(search_text)

Loading…
Cancel
Save