diff options
-rw-r--r-- | manual_tests | 1 | ||||
-rw-r--r-- | text.lua | 9 |
2 files changed, 8 insertions, 2 deletions
diff --git a/manual_tests b/manual_tests index b59fced..8cfc115 100644 --- a/manual_tests +++ b/manual_tests @@ -2,6 +2,7 @@ file load: cursor_line = 1 first line is a drawing -> cursor_line = 2 click on text -> cursor moves +click on first character of text -> cursor on first character of text click on drawing -> cursor doesn't move create drawing -> cursor bumps down below drawing backspace diff --git a/text.lua b/text.lua index 7a442e8..97dcf7c 100644 --- a/text.lua +++ b/text.lua @@ -298,20 +298,25 @@ function Text.nearest_cursor_pos(line, x, hint) left = hint end end - while left < right-1 do +--? print('--') + while true do local curr = math.floor((left+right)/2) local currxmin = Text.cursor_x(line, curr) local currxmax = Text.cursor_x(line, curr+1) +--? print(x, left, right, curr, currxmin, currxmax) if currxmin <= x and x < currxmax then return curr end + if left >= right-1 then + return right + end if currxmin > x then right = curr else left = curr end end - return right + assert(false) end function Text.cursor_x(line_data, cursor_pos) |