aboutsummaryrefslogtreecommitdiff
path: root/src/app/input/mouse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/input/mouse.rs')
-rw-r--r--src/app/input/mouse.rs18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/app/input/mouse.rs b/src/app/input/mouse.rs
index 87c14756..8adfa55b 100644
--- a/src/app/input/mouse.rs
+++ b/src/app/input/mouse.rs
@@ -728,16 +728,19 @@ impl AppState {
}
MouseEventKind::Up(MouseButton::Left) => {
- if self.selection.is_some() {
+ // Mouse-up either finishes a drag selection or releases after a
+ // double-click copy; the latter is already copied.
+ if let Some(selection) = self.selection.as_ref() {
+ let was_click = selection.was_just_click();
+ let was_already_copied = selection.is_done();
+
self.workspace_press = None;
self.tab_press = None;
self.drag = None;
self.selection_autoscroll = None;
- let was_click = self.selection.as_ref().is_some_and(|s| s.was_just_click());
if was_click {
self.selection = None;
- self.selection_autoscroll = None;
- } else {
+ } else if !was_already_copied {
self.copy_selection(terminal_runtimes);
}
return None;
@@ -795,13 +798,6 @@ impl AppState {
return None;
}
}
- let was_click = self.selection.as_ref().is_some_and(|s| s.was_just_click());
- if was_click {
- self.selection = None;
- self.selection_autoscroll = None;
- } else {
- self.copy_selection(terminal_runtimes);
- }
}
}
}