diff options
author | Christian Duerr <contact@christianduerr.com> | 2018-03-11 13:01:06 +0100 |
---|---|---|
committer | Joe Wilm <jwilm@users.noreply.github.com> | 2018-03-15 12:27:12 -0700 |
commit | 70324fc6fc9a85ca2ad6faa296c75ebab2f28afd (patch) | |
tree | 7300bcebf34c67cd3b541bbfd0bdb1364776a0b5 /src/input.rs | |
parent | e7a32b589f6701667bb7c0135491b6800f8716e6 (diff) | |
download | alacritty-70324fc6fc9a85ca2ad6faa296c75ebab2f28afd.tar.gz alacritty-70324fc6fc9a85ca2ad6faa296c75ebab2f28afd.zip |
Replace scrolling methods with enum
The different scrolling methods added a bunch of boilerplate where the
call was just forwarded to the next struct, this has been removed by
making the scroll amount into a struct.
Now everything is called through one method and the parameter decides
how far the viewport should be scrolled.
Diffstat (limited to 'src/input.rs')
-rw-r--r-- | src/input.rs | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/src/input.rs b/src/input.rs index 96c67db6..904f252a 100644 --- a/src/input.rs +++ b/src/input.rs @@ -28,6 +28,7 @@ use copypasta::{Clipboard, Load, Buffer}; use glutin::{ElementState, VirtualKeyCode, MouseButton, TouchPhase, MouseScrollDelta, ModifiersState}; use config; +use grid::Scroll; use event::{ClickState, Mouse}; use index::{Line, Column, Side, Point}; use term::SizeInfo; @@ -65,11 +66,7 @@ pub trait ActionContext { fn last_modifiers(&mut self) -> &mut ModifiersState; fn change_font_size(&mut self, delta: i8); fn reset_font_size(&mut self); - fn scroll(&mut self, count: isize); - fn reset_scroll(&mut self); - fn scroll_to_top(&mut self); - fn scroll_page_up(&mut self); - fn scroll_page_down(&mut self); + fn scroll(&mut self, scroll: Scroll); } /// Describes a state and action to take in that state @@ -250,16 +247,16 @@ impl Action { ctx.reset_font_size(); }, Action::ScrollPageUp => { - ctx.scroll_page_up(); + ctx.scroll(Scroll::PageUp); }, Action::ScrollPageDown => { - ctx.scroll_page_down(); + ctx.scroll(Scroll::PageDown); }, Action::ScrollToTop => { - ctx.scroll_to_top(); + ctx.scroll(Scroll::Top); }, Action::ScrollToBottom => { - ctx.reset_scroll(); + ctx.scroll(Scroll::Bottom); }, } } @@ -486,7 +483,7 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> { self.ctx.write_to_pty(content); } else { for _ in 0..scroll_multiplier { - self.ctx.scroll(-((code as isize) * 2 - 129)); + self.ctx.scroll(Scroll::Lines(-((code as isize) * 2 - 129))); } } } @@ -553,7 +550,7 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> { /// Process a received character pub fn received_char(&mut self, c: char) { if !*self.ctx.suppress_chars() { - self.ctx.reset_scroll(); + self.ctx.scroll(Scroll::Bottom); self.ctx.clear_selection(); let utf8_len = c.len_utf8(); |