diff --git a/frontend/ui/widget/inputdialog.lua b/frontend/ui/widget/inputdialog.lua index 34ae7ea07..d53412f61 100644 --- a/frontend/ui/widget/inputdialog.lua +++ b/frontend/ui/widget/inputdialog.lua @@ -368,6 +368,7 @@ function InputDialog:init() scroll_by_pan = self.scroll_by_pan, cursor_at_end = self.cursor_at_end, readonly = self.readonly, + manage_keyboard_state = not self.add_nav_bar, -- we handle keyboard toggle ourselve if nav_bar parent = self, is_text_edited = self._text_modified, top_line_num = self._top_line_num, diff --git a/frontend/ui/widget/inputtext.lua b/frontend/ui/widget/inputtext.lua index 4726e601a..e1e21ec4f 100644 --- a/frontend/ui/widget/inputtext.lua +++ b/frontend/ui/widget/inputtext.lua @@ -34,6 +34,7 @@ local InputText = InputContainer:extend{ edit_callback = nil, -- called with true when text modified, false on init or text re-set scroll_callback = nil, -- called with (low, high) when view is scrolled (cf ScrollTextWidget) scroll_by_pan = false, -- allow scrolling by lines with Pan (needs scroll=true) + manage_keyboard_state = true, -- manage keyboard hidden/shown state width = nil, height = nil, -- when nil, will be set to original text height (possibly @@ -132,7 +133,7 @@ local function initTouchEvents() if self.parent.onSwitchFocus then self.parent:onSwitchFocus(self) else - if self.is_keyboard_hidden then + if self.is_keyboard_hidden and self.manage_keyboard_state then self:onShowKeyboard() end end @@ -677,7 +678,7 @@ dbg:guard(InputText, "onTextInput", function InputText:onShowKeyboard(ignore_first_hold_release) Device:startTextInput() - if self.is_keyboard_hidden then + if self.is_keyboard_hidden or not self.manage_keyboard_state then self.keyboard.ignore_first_hold_release = ignore_first_hold_release UIManager:show(self.keyboard) self.is_keyboard_hidden = false @@ -688,7 +689,7 @@ end function InputText:onCloseKeyboard() Device:stopTextInput() - if not self.is_keyboard_hidden then + if not self.is_keyboard_hidden or not self.manage_keyboard_state then UIManager:close(self.keyboard) self.is_keyboard_hidden = true end