diff options
Diffstat (limited to 'src/app/input/mouse.rs')
| -rw-r--r-- | src/app/input/mouse.rs | 18 |
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); - } } } } |
