Update mouse modifiers to only pass shift

The only mouse modifier required right now is the shift key, to prevent
passing around unnecessary state, only the shift state is passed to the
mouse processors now.
This commit is contained in:
Christian Duerr 2017-12-29 18:48:37 +01:00 committed by Joe Wilm
parent b83a26ffe0
commit 04bfda943a
2 changed files with 11 additions and 11 deletions

View File

@ -300,7 +300,7 @@ impl<N: Notify> Processor<N> {
},
MouseInput { state, button, modifiers, .. } => {
*hide_cursor = false;
processor.mouse_input(state, button, modifiers);
processor.mouse_input(state, button, modifiers.shift);
processor.ctx.terminal.dirty = true;
},
CursorMoved { position: (x, y), modifiers, .. } => {
@ -310,7 +310,7 @@ impl<N: Notify> Processor<N> {
let y = limit(y, 0, processor.ctx.size_info.height as i32);
*hide_cursor = false;
processor.mouse_moved(x as u32, y as u32, modifiers);
processor.mouse_moved(x as u32, y as u32, modifiers.shift);
if !processor.ctx.selection.is_none() {
processor.ctx.terminal.dirty = true;

View File

@ -253,7 +253,7 @@ impl From<&'static str> for Action {
impl<'a, A: ActionContext + 'a> Processor<'a, A> {
#[inline]
pub fn mouse_moved(&mut self, x: u32, y: u32, modifiers: ModifiersState) {
pub fn mouse_moved(&mut self, x: u32, y: u32, shift: bool) {
self.ctx.mouse_mut().x = x;
self.ctx.mouse_mut().y = y;
@ -274,7 +274,7 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> {
if self.ctx.mouse_mut().left_button_state == ElementState::Pressed {
let report_mode = mode::TermMode::MOUSE_REPORT_CLICK | mode::TermMode::MOUSE_MOTION;
if modifiers.shift || !self.ctx.terminal_mode().intersects(report_mode) {
if shift || !self.ctx.terminal_mode().intersects(report_mode) {
self.ctx.update_selection(Point {
line: point.line,
col: point.col
@ -337,7 +337,7 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> {
}
}
pub fn on_mouse_press(&mut self, modifiers: ModifiersState) {
pub fn on_mouse_press(&mut self, shift: bool) {
let now = Instant::now();
let elapsed = self.ctx.mouse_mut().last_click_timestamp.elapsed();
self.ctx.mouse_mut().last_click_timestamp = now;
@ -353,7 +353,7 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> {
},
_ => {
let report_modes = mode::TermMode::MOUSE_REPORT_CLICK | mode::TermMode::MOUSE_MOTION;
if !modifiers.shift && self.ctx.terminal_mode().intersects(report_modes) {
if !shift && self.ctx.terminal_mode().intersects(report_modes) {
self.mouse_report(0);
return;
}
@ -364,9 +364,9 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> {
};
}
pub fn on_mouse_release(&mut self, modifiers: ModifiersState) {
pub fn on_mouse_release(&mut self, shift: bool) {
let report_modes = mode::TermMode::MOUSE_REPORT_CLICK | mode::TermMode::MOUSE_MOTION;
if !modifiers.shift && self.ctx.terminal_mode().intersects(report_modes)
if !shift && self.ctx.terminal_mode().intersects(report_modes)
{
self.mouse_report(3);
return;
@ -456,16 +456,16 @@ impl<'a, A: ActionContext + 'a> Processor<'a, A> {
}
}
pub fn mouse_input(&mut self, state: ElementState, button: MouseButton, modifiers: ModifiersState) {
pub fn mouse_input(&mut self, state: ElementState, button: MouseButton, shift: bool) {
if let MouseButton::Left = button {
let state = mem::replace(&mut self.ctx.mouse_mut().left_button_state, state);
if self.ctx.mouse_mut().left_button_state != state {
match self.ctx.mouse_mut().left_button_state {
ElementState::Pressed => {
self.on_mouse_press(modifiers);
self.on_mouse_press(shift);
},
ElementState::Released => {
self.on_mouse_release(modifiers);
self.on_mouse_release(shift);
}
}
}