Fix terminal selection firing when dragging anywhere

This commit is contained in:
Mikayla 2024-01-19 15:02:10 -08:00
parent eaa0e93112
commit 25f78a2ed1
No known key found for this signature in database
2 changed files with 14 additions and 2 deletions

View File

@ -599,6 +599,10 @@ impl Terminal {
}
}
pub fn selection_started(&self) -> bool {
self.selection_phase == SelectionPhase::Selecting
}
/// Updates the cached process info, returns whether the Zed-relevant info has changed
fn update_process_info(&mut self) -> bool {
let mut pid = unsafe { libc::tcgetpgrp(self.shell_fd as i32) };

View File

@ -621,9 +621,17 @@ impl TerminalElement {
}
if e.pressed_button.is_some() && !cx.has_active_drag() {
let visibly_contains = interactive_bounds.visibly_contains(&e.position, cx);
terminal.update(cx, |terminal, cx| {
terminal.mouse_drag(e, origin, bounds);
cx.notify();
if !terminal.selection_started() {
if visibly_contains {
terminal.mouse_drag(e, origin, bounds);
cx.notify();
}
} else {
terminal.mouse_drag(e, origin, bounds);
cx.notify();
}
})
}