diff --git a/druid/base/input.lua b/druid/base/input.lua index c11b4d2..69b665a 100644 --- a/druid/base/input.lua +++ b/druid/base/input.lua @@ -15,6 +15,7 @@ local function select(self) gui.reset_keyboard() self.marked_value = "" if not self.selected then + self.previous_value = self.value self.selected = true gui.show_keyboard(self.keyboard_type, false) self.on_input_select:trigger(self:get_context()) @@ -53,6 +54,7 @@ function M.init(self, click_node, text_node, keyboard_type) self.text = self.druid:new_text(text_node) self.selected = false + self.previous_value = "" self.value = "" self.marked_value = "" self.current_value = "" @@ -132,6 +134,11 @@ function M.on_input(self, action_id, action) return true end + if action_id == const.ACTION_ESC and action.released then + unselect(self) + return true + end + if input_text then self:set_text(input_text) return true @@ -203,4 +210,10 @@ function M.set_allowed_characters(self, characters) end +function M.reset_changes(self) + self:set_text(self.previous_value) + unselect(self) +end + + return M diff --git a/druid/const.lua b/druid/const.lua index 316991d..4af54b2 100644 --- a/druid/const.lua +++ b/druid/const.lua @@ -10,6 +10,7 @@ M.ACTION_MARKED_TEXT = hash("marked_text") M.ACTION_BACKSPACE = hash("key_backspace") M.ACTION_ENTER = hash("key_enter") M.ACTION_BACK = hash("back") +M.ACTION_ESC = hash("key_esc") M.ACTION_SCROLL_UP = hash("scroll_up") M.ACTION_SCROLL_DOWN = hash("scroll_down") diff --git a/input/game.input_binding b/input/game.input_binding index 9e1054a..1c965b4 100644 --- a/input/game.input_binding +++ b/input/game.input_binding @@ -14,6 +14,10 @@ key_trigger { input: KEY_ENTER action: "key_enter" } +key_trigger { + input: KEY_ESC + action: "key_esc" +} mouse_trigger { input: MOUSE_BUTTON_1 action: "touch"