Rearranged mouse handling
This commit is contained in:
parent
3e23d1f48d
commit
f1ff557a25
1 changed files with 34 additions and 42 deletions
|
@ -1018,33 +1018,13 @@ impl Terminal {
|
||||||
self.last_content.size,
|
self.last_content.size,
|
||||||
self.last_content.display_offset,
|
self.last_content.display_offset,
|
||||||
);
|
);
|
||||||
// let side = mouse_side(position, self.last_content.size);
|
|
||||||
|
|
||||||
if self.mouse_mode(e.shift) {
|
if self.mouse_mode(e.shift) {
|
||||||
if let Some(bytes) = mouse_button_report(point, e, true, self.last_content.mode) {
|
if let Some(bytes) = mouse_button_report(point, e, true, self.last_content.mode) {
|
||||||
self.pty_tx.notify(bytes);
|
self.pty_tx.notify(bytes);
|
||||||
}
|
}
|
||||||
} else if e.button == MouseButton::Left {
|
} else if e.button == MouseButton::Left {
|
||||||
self.left_click(e, origin)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn left_click(&mut self, e: &DownRegionEvent, origin: Vector2F) {
|
|
||||||
let position = e.position.sub(origin);
|
let position = e.position.sub(origin);
|
||||||
if !self.mouse_mode(e.shift) {
|
|
||||||
//Hyperlinks
|
|
||||||
{
|
|
||||||
let mouse_cell_index = content_index_for_mouse(position, &self.last_content);
|
|
||||||
if let Some(link) = self.last_content.cells[mouse_cell_index].hyperlink() {
|
|
||||||
open_uri(link.uri()).log_err();
|
|
||||||
} else {
|
|
||||||
self.events
|
|
||||||
.push_back(InternalEvent::FindHyperlink(position, true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Selections
|
|
||||||
{
|
|
||||||
let point = grid_point(
|
let point = grid_point(
|
||||||
position,
|
position,
|
||||||
self.last_content.size,
|
self.last_content.size,
|
||||||
|
@ -1060,8 +1040,8 @@ impl Terminal {
|
||||||
_ => None,
|
_ => None,
|
||||||
};
|
};
|
||||||
|
|
||||||
let selection = selection_type
|
let selection =
|
||||||
.map(|selection_type| Selection::new(selection_type, point, side));
|
selection_type.map(|selection_type| Selection::new(selection_type, point, side));
|
||||||
|
|
||||||
if let Some(sel) = selection {
|
if let Some(sel) = selection {
|
||||||
self.events
|
self.events
|
||||||
|
@ -1069,7 +1049,6 @@ impl Terminal {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
pub fn mouse_up(&mut self, e: &UpRegionEvent, origin: Vector2F, cx: &mut ModelContext<Self>) {
|
pub fn mouse_up(&mut self, e: &UpRegionEvent, origin: Vector2F, cx: &mut ModelContext<Self>) {
|
||||||
let settings = cx.global::<Settings>();
|
let settings = cx.global::<Settings>();
|
||||||
|
@ -1094,10 +1073,23 @@ impl Terminal {
|
||||||
if let Some(bytes) = mouse_button_report(point, e, false, self.last_content.mode) {
|
if let Some(bytes) = mouse_button_report(point, e, false, self.last_content.mode) {
|
||||||
self.pty_tx.notify(bytes);
|
self.pty_tx.notify(bytes);
|
||||||
}
|
}
|
||||||
} else if e.button == MouseButton::Left && copy_on_select {
|
} else {
|
||||||
|
if e.button == MouseButton::Left && copy_on_select {
|
||||||
self.copy();
|
self.copy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Hyperlinks
|
||||||
|
if self.selection_phase == SelectionPhase::Ended {
|
||||||
|
let mouse_cell_index = content_index_for_mouse(position, &self.last_content);
|
||||||
|
if let Some(link) = self.last_content.cells[mouse_cell_index].hyperlink() {
|
||||||
|
open_uri(link.uri()).log_err();
|
||||||
|
} else {
|
||||||
|
self.events
|
||||||
|
.push_back(InternalEvent::FindHyperlink(position, true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
self.selection_phase = SelectionPhase::Ended;
|
self.selection_phase = SelectionPhase::Ended;
|
||||||
self.last_mouse = None;
|
self.last_mouse = None;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue