diff options
author | Christian Duerr <chrisduerr@users.noreply.github.com> | 2019-02-07 00:55:18 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-07 00:55:18 +0000 |
commit | e561ae373393e919cf3dbbf123a98e0aad215dbc (patch) | |
tree | 3ebb6770abeb9f080ff9b6a5e11309402fdaa53c /src | |
parent | a7a6bf53d4bbb50940559f3a411aba5c474b3409 (diff) | |
download | alacritty-e561ae373393e919cf3dbbf123a98e0aad215dbc.tar.gz alacritty-e561ae373393e919cf3dbbf123a98e0aad215dbc.zip |
Fix unclickable URLs with scrolled viewport
Since scrolling the terminal moves around the underlying data structure
of the terminal, the URL selection would search for the URL at the
position where the click would have been without any scrolling.
By adding the viewport offset to the click position, the URL clicking
now searches at the correct location.
This fixes https://github.com/jwilm/alacritty/issues/2076.
Diffstat (limited to 'src')
-rw-r--r-- | src/grid/mod.rs | 5 | ||||
-rw-r--r-- | src/term/mod.rs | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/grid/mod.rs b/src/grid/mod.rs index a00fed40..fd22b716 100644 --- a/src/grid/mod.rs +++ b/src/grid/mod.rs @@ -465,6 +465,11 @@ impl<T> Grid<T> { pub fn contains(&self, point: &Point) -> bool { self.lines > point.line && self.cols > point.col } + + #[inline] + pub fn display_offset(&self) -> usize { + self.display_offset + } } impl<'a, T> Iterator for GridIterator<'a, T> { diff --git a/src/term/mod.rs b/src/term/mod.rs index 487ba20d..c49ecbcc 100644 --- a/src/term/mod.rs +++ b/src/term/mod.rs @@ -97,10 +97,11 @@ impl Search for Term { } fn url_search(&self, mut point: Point<usize>) -> Option<String> { + // Switch first line from top to bottom point.line = self.grid.num_lines().0 - point.line - 1; - // Limit the starting point to the last line in the history - point.line = min(point.line, self.grid.len() - 1); + // Remove viewport scroll offset + point.line += self.grid.display_offset(); // Create forwards and backwards iterators let iterf = self.grid.iter_from(point); |