From 8404c2ff79a7669c115b36ab5aa7aad34d850b5f Mon Sep 17 00:00:00 2001 From: Whitecl4ws Date: Sat, 28 Jan 2017 11:33:10 -0500 Subject: [PATCH] Added both password and label support Label is set only once when the focus is not on the box, it can also be reset by setting the label again (the label is set to "" when the focus is on the input) Password can also be toggled on and off depending on your needs --- input.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/input.lua b/input.lua index 5262c2b..7a848f3 100644 --- a/input.lua +++ b/input.lua @@ -17,7 +17,10 @@ return function(core, input, ...) w = w or text_width + 6 h = h or opt.font:getHeight() + 4 + input.label = input.label or "" + input.password = input.password or false input.text = input.text or "" + if input.label ~= "" then input.text = input.label end input.cursor = math.max(1, math.min(utf8.len(input.text)+1, input.cursor or utf8.len(input.text)+1)) -- cursor is position *before* the character (including EOS) i.e. in "hello": -- position 1: |hello @@ -29,7 +32,8 @@ return function(core, input, ...) opt.cursor_pos = 0 if input.cursor > 1 then local s = input.text:sub(1, utf8.offset(input.text, input.cursor)-1) - opt.cursor_pos = opt.font:getWidth(s) + if password then opt.cursor_pos = opt.font:getWidth(string.rep("*", string.len(input.text))) + else opt.cursor_pos = opt.font:getWidth(s) end end -- compute drawing offset @@ -53,6 +57,7 @@ return function(core, input, ...) opt.hasKeyboardFocus = core:grabKeyboardFocus(opt.id) if opt.hasKeyboardFocus then + if input.label ~= "" then input.text = "" input.label = "" input.cursor = 1 end local keycode,char = core:getPressedKey() -- text input if char and char ~= "" then