From 4983e05f01eed628cc1190c07be9cae450d267ce Mon Sep 17 00:00:00 2001 From: nludwig Date: Tue, 23 Dec 2025 16:12:52 -0800 Subject: [PATCH] hold shift and click to add to selection --- src/terminal_box.rs | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/terminal_box.rs b/src/terminal_box.rs index 6bb4669..b37e15f 100644 --- a/src/terminal_box.rs +++ b/src/terminal_box.rs @@ -1145,18 +1145,27 @@ where } else { TermSide::Right }; - let selection = match click_kind { - ClickKind::Single => { - Selection::new(SelectionType::Simple, location, side) + // Check if shift is pressed and there's an existing selection to extend + if state.modifiers.shift() { + let mut term = terminal.term.lock(); + if let Some(ref mut selection) = term.selection { + selection.update(location, side); + } else { + term.selection = + Some(Selection::new(SelectionType::Simple, location, side)); } - ClickKind::Double => { - Selection::new(SelectionType::Semantic, location, side) - } - ClickKind::Triple => { - Selection::new(SelectionType::Lines, location, side) - } - }; - { + } else { + let selection = match click_kind { + ClickKind::Single => { + Selection::new(SelectionType::Simple, location, side) + } + ClickKind::Double => { + Selection::new(SelectionType::Semantic, location, side) + } + ClickKind::Triple => { + Selection::new(SelectionType::Lines, location, side) + } + }; let mut term = terminal.term.lock(); term.selection = Some(selection); }