Change summary
crates/terminal/src/terminal.rs | 4 ++++
crates/terminal_view/src/terminal_element.rs | 12 ++++++++++--
2 files changed, 14 insertions(+), 2 deletions(-)
Detailed changes
@@ -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) };
@@ -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();
+ }
})
}