diff --git a/frontend/ui/data/keyboardlayouts/ko_KR_keyboard.lua b/frontend/ui/data/keyboardlayouts/ko_KR_keyboard.lua index dc4458c0b..02a9e3571 100644 --- a/frontend/ui/data/keyboardlayouts/ko_KR_keyboard.lua +++ b/frontend/ui/data/keyboardlayouts/ko_KR_keyboard.lua @@ -26,9 +26,21 @@ local wrapInputBox = function(inputbox) if inputbox._wrapped == nil then inputbox._wrapped = true - -- helper function + -- helper functions + local copied_names = {} + local function restore_func_references(obj) + for __, name in ipairs(copied_names) do + local orig_name = "_" .. name + if obj[orig_name] then + obj[name] = obj[orig_name] + obj[orig_name] = nil + end + end + end + local function copy_func_reference(obj, name) obj["_" .. name] = obj[name] + table.insert(copied_names, name) end -- override original implementations with helper object @@ -82,6 +94,11 @@ local wrapInputBox = function(inputbox) wrap_touch_event_func_with_hghelper_reset(inputbox, "onTapTextBox") wrap_touch_event_func_with_hghelper_reset(inputbox, "onHoldTextBox") wrap_touch_event_func_with_hghelper_reset(inputbox, "onSwipeTextBox") + + return function() -- return unwrap function + restore_func_references(inputbox) + inputbox._wrapped = nil + end end end diff --git a/frontend/ui/widget/virtualkeyboard.lua b/frontend/ui/widget/virtualkeyboard.lua index 6dbbe3216..b371f7a1c 100644 --- a/frontend/ui/widget/virtualkeyboard.lua +++ b/frontend/ui/widget/virtualkeyboard.lua @@ -666,6 +666,10 @@ local VirtualKeyboard = FocusManager:new{ } function VirtualKeyboard:init() + if self.uwrap_func then + self.uwrap_func() + self.uwrap_func = nil + end local lang = self:getKeyboardLayout() local keyboard_layout = self.lang_to_keyboard_layout[lang] or self.lang_to_keyboard_layout["en"] local keyboard = require("ui/data/keyboardlayouts/" .. keyboard_layout) @@ -685,7 +689,7 @@ function VirtualKeyboard:init() self.key_events.Close = { {"Back"}, doc = "close keyboard" } end if keyboard.wrapInputBox then - keyboard.wrapInputBox(self.inputbox) + self.uwrap_func = keyboard.wrapInputBox(self.inputbox) or self.uwrap_func end end