diff options
author | Aleksey Kuznetsov <zummenix@gmail.com> | 2019-10-16 00:13:58 +0500 |
---|---|---|
committer | Christian Duerr <contact@christianduerr.com> | 2019-10-15 21:13:58 +0200 |
commit | 49380bffd24203f139dc32c7bdc9958e64d9dd4d (patch) | |
tree | 0d4bfb3cb7f66868983a6ed5a22695749502995f /alacritty/src/input.rs | |
parent | 124e98e94e66d5790d4523adb9cd75f85a4691f4 (diff) | |
download | r-alacritty-49380bffd24203f139dc32c7bdc9958e64d9dd4d.tar.gz r-alacritty-49380bffd24203f139dc32c7bdc9958e64d9dd4d.tar.bz2 r-alacritty-49380bffd24203f139dc32c7bdc9958e64d9dd4d.zip |
Add support for alternate scroll escape
Fixes #2727.
Diffstat (limited to 'alacritty/src/input.rs')
-rw-r--r-- | alacritty/src/input.rs | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/alacritty/src/input.rs b/alacritty/src/input.rs index be6a030e..a3148820 100644 --- a/alacritty/src/input.rs +++ b/alacritty/src/input.rs @@ -551,11 +551,9 @@ impl<'a, T: EventListener, A: ActionContext<T> + 'a> Processor<'a, T, A> { fn scroll_terminal(&mut self, modifiers: ModifiersState, new_scroll_px: i32) { let mouse_modes = TermMode::MOUSE_REPORT_CLICK | TermMode::MOUSE_DRAG | TermMode::MOUSE_MOTION; + let alt_scroll_modes = TermMode::ALT_SCREEN | TermMode::ALTERNATE_SCROLL; let height = self.ctx.size_info().cell_height as i32; - // Make sure the new and deprecated setting are both allowed - let faux_multiplier = self.config.scrolling.faux_multiplier() as usize; - if self.ctx.terminal().mode().intersects(mouse_modes) { self.ctx.mouse_mut().scroll_px += new_scroll_px; @@ -565,11 +563,14 @@ impl<'a, T: EventListener, A: ActionContext<T> + 'a> Processor<'a, T, A> { for _ in 0..lines { self.mouse_report(code, ElementState::Pressed, modifiers); } - } else if self.ctx.terminal().mode().contains(TermMode::ALT_SCREEN) - && faux_multiplier > 0 - && !modifiers.shift - { - self.ctx.mouse_mut().scroll_px += new_scroll_px * faux_multiplier as i32; + } else if self.ctx.terminal().mode().contains(alt_scroll_modes) && !modifiers.shift { + let multiplier = i32::from( + self.config + .scrolling + .faux_multiplier() + .unwrap_or_else(|| self.config.scrolling.multiplier()), + ); + self.ctx.mouse_mut().scroll_px += new_scroll_px * multiplier; let cmd = if new_scroll_px > 0 { b'A' } else { b'B' }; let lines = (self.ctx.mouse().scroll_px / height).abs(); |