aboutsummaryrefslogtreecommitdiff
path: root/alacritty
diff options
context:
space:
mode:
authorChristian Duerr <contact@christianduerr.com>2021-07-12 01:22:49 +0000
committerGitHub <noreply@github.com>2021-07-12 01:22:49 +0000
commit4c9ecd3479b6cce0493532561ef78ba410c3b51a (patch)
tree8e21ecc6c3bcf665f7e9b4f20f603b79985c6393 /alacritty
parentbdfa52fcd84995dfa955e2d726a9c22f1f9d4bc9 (diff)
downloadr-alacritty-4c9ecd3479b6cce0493532561ef78ba410c3b51a.tar.gz
r-alacritty-4c9ecd3479b6cce0493532561ef78ba410c3b51a.tar.bz2
r-alacritty-4c9ecd3479b6cce0493532561ef78ba410c3b51a.zip
Fix search regressions
Fixes #5315.
Diffstat (limited to 'alacritty')
-rw-r--r--alacritty/src/event.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/alacritty/src/event.rs b/alacritty/src/event.rs
index 78cc6cb6..37d28bb9 100644
--- a/alacritty/src/event.rs
+++ b/alacritty/src/event.rs
@@ -421,11 +421,12 @@ impl<'a, N: Notify + 'a, T: EventListener> input::ActionContext<T> for ActionCon
self.search_state.origin = self.terminal.vi_mode_cursor.point;
self.search_state.display_offset_delta = 0;
} else {
- let screen_lines = self.terminal.screen_lines();
+ let viewport_top = Line(-(self.terminal.grid().display_offset() as i32)) - 1;
+ let viewport_bottom = viewport_top + self.terminal.bottommost_line();
let last_column = self.terminal.last_column();
self.search_state.origin = match direction {
- Direction::Right => Point::new(Line(0), Column(0)),
- Direction::Left => Point::new(Line(screen_lines as i32 - 2), last_column),
+ Direction::Right => Point::new(viewport_top, Column(0)),
+ Direction::Left => Point::new(viewport_bottom, last_column),
};
}
@@ -770,7 +771,8 @@ impl<'a, N: Notify + 'a, T: EventListener> ActionContext<'a, N, T> {
// Reset display offset and cursor position.
self.terminal.scroll_display(Scroll::Delta(self.search_state.display_offset_delta));
self.search_state.display_offset_delta = 0;
- self.terminal.vi_mode_cursor.point = self.search_state.origin;
+ self.terminal.vi_mode_cursor.point =
+ self.search_state.origin.grid_clamp(self.terminal, Boundary::Grid);
*self.dirty = true;
}
@@ -805,7 +807,7 @@ impl<'a, N: Notify + 'a, T: EventListener> ActionContext<'a, N, T> {
// Store number of lines the viewport had to be moved.
let display_offset = self.terminal.grid().display_offset();
- self.search_state.display_offset_delta = old_offset - display_offset as i32;
+ self.search_state.display_offset_delta += old_offset - display_offset as i32;
// Since we found a result, we require no delayed re-search.
self.scheduler.unschedule(TimerId::DelayedSearch);