Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions src/Classes/EditControl.lua
Original file line number Diff line number Diff line change
Expand Up @@ -530,7 +530,6 @@ function EditClass:OnKeyDown(key, doubleClick)
if self.pasteFilter then
text = self.pasteFilter(text)
end
text = text:gsub("[\128-\255]","?")
if self.sel and self.sel ~= self.caret then
self:ReplaceSel(text)
else
Expand Down Expand Up @@ -607,8 +606,10 @@ function EditClass:OnKeyDown(key, doubleClick)
if self.sel and self.sel ~= self.caret then
self:ReplaceSel("")
elseif self.caret > 1 then
local len = 1
-- Remove one whole character, which may be several bytes wide.
local len = self.caret - (utf8.next(self.buf, self.caret, -1) or 1)
if IsKeyDown("CTRL") then
len = 1
while self.caret - len > 1 and self.buf:sub(self.caret - len, self.caret - len):match("%s") and not self.buf:sub(self.caret - len - 1, self.caret - len - 1):match("\n") do
len = len + 1
end
Expand All @@ -632,8 +633,10 @@ function EditClass:OnKeyDown(key, doubleClick)
if self.sel and self.sel ~= self.caret then
self:ReplaceSel("")
elseif self.caret <= #self.buf then
local len = 1
-- Remove one whole character, which may be several bytes wide.
local len = (utf8.next(self.buf, self.caret, 1) or (#self.buf + 1)) - self.caret
if IsKeyDown("CTRL") then
len = 1
while self.caret + len <= #self.buf and self.buf:sub(self.caret + len - 1, self.caret + len - 1):match("%s") and not self.buf:sub(self.caret + len, self.caret + len):match("\n") do
len = len + 1
end
Expand Down