Merge pull request #239 from Kethku/mouse-configuration

mouse configuration via mouseon mouseoff
macos-click-through
Keith Simmons 5 years ago committed by GitHub
commit a7a01c9247
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -128,6 +128,8 @@ pub enum RedrawEvent {
ModeChange { ModeChange {
mode_index: u64, mode_index: u64,
}, },
MouseOn,
MouseOff,
BusyStart, BusyStart,
BusyStop, BusyStop,
Flush, Flush,
@ -779,6 +781,8 @@ pub fn parse_redraw_event(event_value: Value) -> Result<Vec<RedrawEvent>> {
"mode_info_set" => Some(parse_mode_info_set(event_parameters)?), "mode_info_set" => Some(parse_mode_info_set(event_parameters)?),
"option_set" => Some(parse_option_set(event_parameters)?), "option_set" => Some(parse_option_set(event_parameters)?),
"mode_change" => Some(parse_mode_change(event_parameters)?), "mode_change" => Some(parse_mode_change(event_parameters)?),
"mouse_on" => Some(RedrawEvent::MouseOn),
"mouse_off" => Some(RedrawEvent::MouseOff),
"busy_start" => Some(RedrawEvent::BusyStart), "busy_start" => Some(RedrawEvent::BusyStart),
"busy_stop" => Some(RedrawEvent::BusyStop), "busy_stop" => Some(RedrawEvent::BusyStop),
"flush" => Some(RedrawEvent::Flush), "flush" => Some(RedrawEvent::Flush),

@ -3,6 +3,8 @@ use nvim_rs::compat::tokio::Compat;
use nvim_rs::Neovim; use nvim_rs::Neovim;
use tokio::process::ChildStdin; use tokio::process::ChildStdin;
use crate::editor::EDITOR;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub enum UiCommand { pub enum UiCommand {
Resize { Resize {
@ -38,21 +40,30 @@ impl UiCommand {
UiCommand::MouseButton { UiCommand::MouseButton {
action, action,
position: (grid_x, grid_y), position: (grid_x, grid_y),
} => nvim } => {
.input_mouse("left", &action, "", 0, grid_y as i64, grid_x as i64) if { EDITOR.lock().mouse_enabled } {
nvim.input_mouse("left", &action, "", 0, grid_y as i64, grid_x as i64)
.await .await
.expect("Mouse Input Failed"), .expect("Mouse Input Failed");
}
}
UiCommand::Scroll { UiCommand::Scroll {
direction, direction,
position: (grid_x, grid_y), position: (grid_x, grid_y),
} => nvim } => {
.input_mouse("wheel", &direction, "", 0, grid_y as i64, grid_x as i64) if { EDITOR.lock().mouse_enabled } {
nvim.input_mouse("wheel", &direction, "", 0, grid_y as i64, grid_x as i64)
.await .await
.expect("Mouse Scroll Failed"), .expect("Mouse Scroll Failed");
UiCommand::Drag(grid_x, grid_y) => nvim }
.input_mouse("left", "drag", "", 0, grid_y as i64, grid_x as i64) }
UiCommand::Drag(grid_x, grid_y) => {
if { EDITOR.lock().mouse_enabled } {
nvim.input_mouse("left", "drag", "", 0, grid_y as i64, grid_x as i64)
.await .await
.expect("Mouse Drag Failed"), .expect("Mouse Drag Failed");
}
}
UiCommand::FocusLost => nvim UiCommand::FocusLost => nvim
.command("if exists('#FocusLost') | doautocmd <nomodeline> FocusLost | endif") .command("if exists('#FocusLost') | doautocmd <nomodeline> FocusLost | endif")
.await .await

@ -32,6 +32,7 @@ pub struct DrawCommand {
pub struct Editor { pub struct Editor {
pub grid: CharacterGrid, pub grid: CharacterGrid,
pub title: String, pub title: String,
pub mouse_enabled: bool,
pub font_name: Option<String>, pub font_name: Option<String>,
pub font_size: Option<f32>, pub font_size: Option<f32>,
pub cursor: Cursor, pub cursor: Cursor,
@ -45,6 +46,7 @@ impl Editor {
let mut editor = Editor { let mut editor = Editor {
grid: CharacterGrid::new(window_geometry_or_default()), grid: CharacterGrid::new(window_geometry_or_default()),
title: "Neovide".to_string(), title: "Neovide".to_string(),
mouse_enabled: true,
font_name: None, font_name: None,
font_size: None, font_size: None,
cursor: Cursor::new(), cursor: Cursor::new(),
@ -69,6 +71,12 @@ impl Editor {
RedrawEvent::ModeChange { mode_index } => { RedrawEvent::ModeChange { mode_index } => {
self.cursor.change_mode(mode_index, &self.defined_styles) self.cursor.change_mode(mode_index, &self.defined_styles)
} }
RedrawEvent::MouseOn => {
self.mouse_enabled = true;
}
RedrawEvent::MouseOff => {
self.mouse_enabled = false;
}
RedrawEvent::BusyStart => { RedrawEvent::BusyStart => {
trace!("Cursor off"); trace!("Cursor off");
self.cursor.enabled = false; self.cursor.enabled = false;

Loading…
Cancel
Save