diff options
Diffstat (limited to 'src/input.rs')
-rw-r--r-- | src/input.rs | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/input.rs b/src/input.rs index cccb3bb4..3c20fe36 100644 --- a/src/input.rs +++ b/src/input.rs @@ -69,6 +69,7 @@ pub trait ActionContext { fn change_font_size(&mut self, delta: f32); fn reset_font_size(&mut self); fn scroll(&mut self, scroll: Scroll); + fn clear_history(&mut self); fn hide_window(&mut self); } @@ -183,6 +184,9 @@ pub enum Action { /// Scroll all the way to the bottom ScrollToBottom, + /// Clear the display buffer(s) to remove history + ClearHistory, + /// Run given command Command(String, Vec<String>), @@ -272,6 +276,9 @@ impl Action { Action::ScrollToBottom => { ctx.scroll(Scroll::Bottom); }, + Action::ClearHistory => { + ctx.clear_history(); + }, } } @@ -634,15 +641,16 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> { /// /// Returns true if an action is executed. fn process_key_bindings(&mut self, mods: ModifiersState, key: VirtualKeyCode) -> bool { + let mut has_binding = false; for binding in self.key_bindings { if binding.is_triggered_by(self.ctx.terminal_mode(), mods, &key) { // binding was triggered; run the action binding.execute(&mut self.ctx); - return true; + has_binding = true; } } - false + has_binding } /// Attempts to find a binding and execute its action @@ -652,15 +660,16 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> { /// /// Returns true if an action is executed. fn process_mouse_bindings(&mut self, mods: ModifiersState, button: MouseButton) -> bool { + let mut has_binding = false; for binding in self.mouse_bindings { if binding.is_triggered_by(self.ctx.terminal_mode(), mods, &button) { // binding was triggered; run the action binding.execute(&mut self.ctx); - return true; + has_binding = true; } } - false + has_binding } } @@ -756,6 +765,8 @@ mod tests { } fn reset_font_size(&mut self) { } + fn clear_history(&mut self) { + } fn hide_window(&mut self) { } } |