bugfix: crash when using mouse wheel
All the Text functions assume the cursor is always on a text line. I was violating that invariant. * When scrolling up, I start the cursor at the top-most line below the screen top. * When scrolling down, I start the cursor at the top-most line below the screen bottom. I think it would feel slightly more natural for it to be the bottom-most line above the screen bottom. However, the Text functions maintain an invariant that the bottom-most line in a buffer will be text. There's no such invariant for the top-most line.
This commit is contained in:
parent
0a12e4c733
commit
bafc45b028
2
edit.lua
2
edit.lua
|
@ -343,11 +343,13 @@ end
|
|||
function edit.mouse_wheel_move(State, dx,dy)
|
||||
if dy > 0 then
|
||||
State.cursor1 = {line=State.screen_top1.line, pos=State.screen_top1.pos}
|
||||
edit.put_cursor_on_next_text_line(State)
|
||||
for i=1,math.floor(dy) do
|
||||
Text.up(State)
|
||||
end
|
||||
elseif dy < 0 then
|
||||
State.cursor1 = {line=State.screen_bottom1.line, pos=State.screen_bottom1.pos}
|
||||
edit.put_cursor_on_next_text_line(State)
|
||||
for i=1,math.floor(-dy) do
|
||||
Text.down(State)
|
||||
end
|
||||
|
|
|
@ -333,11 +333,13 @@ end
|
|||
function edit.mouse_wheel_move(State, dx,dy)
|
||||
if dy > 0 then
|
||||
State.cursor1 = {line=State.screen_top1.line, pos=State.screen_top1.pos}
|
||||
edit.put_cursor_on_next_text_line(State)
|
||||
for i=1,math.floor(dy) do
|
||||
Text.up(State)
|
||||
end
|
||||
elseif dy < 0 then
|
||||
State.cursor1 = {line=State.screen_bottom1.line, pos=State.screen_bottom1.pos}
|
||||
edit.put_cursor_on_next_text_line(State)
|
||||
for i=1,math.floor(-dy) do
|
||||
Text.down(State)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue