Unnamed repository; edit this file 'description' to name the repository.
check selection's visible width when copying on mouse click (#2711)
* check selection's visible width when copying on mouse click Mouse-click-up copies the selection produced by dragging. The event is ignored if the selection has a width of 1 though so you don't copy when clicking rather than dragging. The current check copies text when it has a visible width of 1 but is actually multiple characters in the rope like a CRLF line-ending. With this change we check the unicode width of the character(s) in the selection rather than the range length, so clicking on a CRLF line-ending does not copy. * use range.fragment to simplify getting the primary selection width
Michael Davis 2022-06-24
parent 886cff3 · commit d948ace
-rw-r--r--helix-term/src/ui/editor.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/helix-term/src/ui/editor.rs b/helix-term/src/ui/editor.rs
index debce9b4..70f60070 100644
--- a/helix-term/src/ui/editor.rs
+++ b/helix-term/src/ui/editor.rs
@@ -1127,9 +1127,14 @@ impl EditorView {
}
let (view, doc) = current!(cxt.editor);
- let range = doc.selection(view.id).primary();
- if range.to() - range.from() <= 1 {
+ if doc
+ .selection(view.id)
+ .primary()
+ .fragment(doc.text().slice(..))
+ .width()
+ <= 1
+ {
return EventResult::Ignored(None);
}