From 96f1aa0cdf6dbebf996fca0ad8bcaa7ba292fcde Mon Sep 17 00:00:00 2001 From: laelnasan Date: Sat, 5 Dec 2020 11:58:19 -0300 Subject: [PATCH] code enhancement Changes to be committed: modified: src/ltui/label.lua modified: src/ltui/textedit.lua --- src/ltui/label.lua | 2 +- src/ltui/textedit.lua | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/ltui/label.lua b/src/ltui/label.lua index 4e7c16a..62bdf3c 100644 --- a/src/ltui/label.lua +++ b/src/ltui/label.lua @@ -129,7 +129,7 @@ function label:splitext(text, width) while #line > width do local size = 0 for i = 1, #line do - if line:byte(i) < 0x80 or line:byte(i) >= 0xc0 then + if (line:byte(i) & 0xc0) ~= 0x80 then size = size + 1 if size > width then table.insert(result, line:sub(1, i - 1)) diff --git a/src/ltui/textedit.lua b/src/ltui/textedit.lua index b2efbf5..2b3df2d 100644 --- a/src/ltui/textedit.lua +++ b/src/ltui/textedit.lua @@ -77,7 +77,7 @@ function textedit:on_event(e) -- update text if e.type == event.ev_keyboard then - if e.key_code > 0x1f and e.key_code < 0x100 then + if e.key_code > 0x1f and e.key_code < 0x100 then self:text_set(self:text() .. string.char(e.key_code)) return true elseif e.key_name == "Enter" and self:option("multiline") then @@ -86,11 +86,12 @@ function textedit:on_event(e) elseif e.key_name == "Backspace" then local text = self:text() if #text > 0 then - local ch_size = -1 - while text:byte(ch_size) > 0x7f and text:byte(ch_size) < 0xc0 do - ch_size = ch_size - 1 + local size = 1 + -- while continuation byte + while (text:byte(#text - size) & 0xc0) == 0x80 do + size = size + 1 end - self:text_set(text:sub(1, #text + ch_size)) + self:text_set(text:sub(1, #text - size)) end return true elseif e.key_name == "CtrlV" then