fix: use scroll_dest instead of the current view position for scroll step calcuation
If we use the current view position to calculate the destination for a scroll event, then we may effectively lose the difference between view.pos and scroll_dest if we are still animating a scroll when the new event arrives. This can happen when scroll events are received really quickly which can happen with some devices like touchpads or fast scroll wheels. Now we use the scroll_dest which means that we extend the destination for animated scrolling instead of overwriting it.
This commit is contained in:
parent
8a1c5f5fba
commit
8cf18d7481
1 changed files with 13 additions and 12 deletions
|
|
@ -2780,27 +2780,28 @@ pub const Editor = struct {
|
|||
}
|
||||
|
||||
fn scroll_up(self: *Self) void {
|
||||
var dest: View = self.view;
|
||||
dest.row = if (dest.row > scroll_step_small) dest.row - scroll_step_small else 0;
|
||||
self.update_scroll_dest_abs(dest.row);
|
||||
var dest_row = self.scroll_dest;
|
||||
dest_row = if (dest_row > scroll_step_small) dest_row - scroll_step_small else 0;
|
||||
self.update_scroll_dest_abs(dest_row);
|
||||
}
|
||||
|
||||
fn scroll_down(self: *Self) void {
|
||||
var dest: View = self.view;
|
||||
dest.row += scroll_step_small;
|
||||
self.update_scroll_dest_abs(dest.row);
|
||||
var dest_row = self.scroll_dest;
|
||||
dest_row += scroll_step_small;
|
||||
self.update_scroll_dest_abs(dest_row);
|
||||
}
|
||||
|
||||
fn scroll_pageup(self: *Self) void {
|
||||
var dest: View = self.view;
|
||||
dest.row = if (dest.row > dest.rows) dest.row - dest.rows else 0;
|
||||
self.update_scroll_dest_abs(dest.row);
|
||||
var dest_row = self.scroll_dest;
|
||||
const view_rows = self.view.rows;
|
||||
dest_row = if (dest_row > view_rows) dest_row - view_rows else 0;
|
||||
self.update_scroll_dest_abs(dest_row);
|
||||
}
|
||||
|
||||
fn scroll_pagedown(self: *Self) void {
|
||||
var dest: View = self.view;
|
||||
dest.row += dest.rows;
|
||||
self.update_scroll_dest_abs(dest.row);
|
||||
var dest_row: usize = self.scroll_dest;
|
||||
dest_row += self.view.rows;
|
||||
self.update_scroll_dest_abs(dest_row);
|
||||
}
|
||||
|
||||
pub fn scroll_up_pageup(self: *Self, ctx: Context) Result {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue