From ed461c7f307b6fdc56b9342bbb2f9274f97f3abe Mon Sep 17 00:00:00 2001 From: Hzj_jie Date: Tue, 28 Mar 2017 15:47:18 -0700 Subject: [PATCH] InputDialog is broken by #2672 (#2690) This change also adds a tap_input_func in both TouchMenu and Button. --- frontend/ui/widget/button.lua | 4 ++++ frontend/ui/widget/inputdialog.lua | 4 ++-- frontend/ui/widget/touchmenu.lua | 16 ++++++++++++---- plugins/kosync.koplugin/main.lua | 18 ++++++++++-------- 4 files changed, 28 insertions(+), 14 deletions(-) diff --git a/frontend/ui/widget/button.lua b/frontend/ui/widget/button.lua index 1977c31f0..fc29ba388 100644 --- a/frontend/ui/widget/button.lua +++ b/frontend/ui/widget/button.lua @@ -185,6 +185,8 @@ function Button:onTapSelectButton() end) elseif self.tap_input then self:onInput(self.tap_input) + elseif type(self.tap_input_func) == "function" then + self:onInput(self.tap_input_func()) end return true end @@ -194,6 +196,8 @@ function Button:onHoldSelectButton() self.hold_callback() elseif self.hold_input then self:onInput(self.hold_input) + elseif type(self.hold_input_func) == "function" then + self:onInput(self.hold_input_func()) end return true end diff --git a/frontend/ui/widget/inputdialog.lua b/frontend/ui/widget/inputdialog.lua index b86783254..b35e53bee 100644 --- a/frontend/ui/widget/inputdialog.lua +++ b/frontend/ui/widget/inputdialog.lua @@ -52,7 +52,7 @@ local RenderText = require("ui/rendertext") local TextBoxWidget = require("ui/widget/textboxwidget") local TextWidget = require("ui/widget/textwidget") local VerticalGroup = require("ui/widget/verticalgroup") -local Widget = require("ui/widget/widget") +local WidgetContainer = require("ui/widget/container/widgetcontainer") local UIManager = require("ui/uimanager") local Screen = require("device").screen @@ -115,7 +115,7 @@ function InputDialog:init() } } else - self.description = Widget:new() + self.description = WidgetContainer:new() end self._input_widget = InputText:new{ diff --git a/frontend/ui/widget/touchmenu.lua b/frontend/ui/widget/touchmenu.lua index c3d5dee51..146234772 100644 --- a/frontend/ui/widget/touchmenu.lua +++ b/frontend/ui/widget/touchmenu.lua @@ -551,9 +551,13 @@ function TouchMenu:onMenuSelect(item) if self.touch_menu_callback then self.touch_menu_callback() end - if item.tap_input then + if item.tap_input or type(item.tap_input_func) == "function" then self:closeMenu() - self:onInput(item.tap_input) + if item.tap_input then + self:onInput(item.tap_input) + else + self:onInput(item.tap_input_func()) + end else local sub_item_table = item.sub_item_table if item.sub_item_table_func then @@ -591,9 +595,13 @@ function TouchMenu:onMenuHold(item) if self.touch_menu_callback then self.touch_menu_callback() end - if item.hold_input then + if item.hold_input or type(item.hold_input_func) == "function" then self:closeMenu() - self:onInput(item.hold_input) + if item.hold_input then + self:onInput(item.hold_input) + else + self:onInput(item.hold_input_func()) + end else local callback = item.hold_callback if item.hold_callback_func then diff --git a/plugins/kosync.koplugin/main.lua b/plugins/kosync.koplugin/main.lua index 3663f0ebd..a5a0ee9f4 100644 --- a/plugins/kosync.koplugin/main.lua +++ b/plugins/kosync.koplugin/main.lua @@ -205,14 +205,16 @@ function KOSync:addToMainMenu(menu_items) }, { text = _("Custom sync server"), - tap_input = { - title = _("Custom progress sync server address"), - input = self.kosync_custom_server or "https://", - type = "text", - callback = function(input) - self:setCustomServer(input) - end, - }, + tap_input_func = function() + return { + title = _("Custom progress sync server address"), + input = self.kosync_custom_server or "https://", + type = "text", + callback = function(input) + self:setCustomServer(input) + end, + } + end, }, } }