@@ -815,25 +815,21 @@ impl Component for EditorView {
815815 let editor = &mut cx.editor;
816816
817817 let result = editor.tree.views().find_map(|(view, _focus)| {
818− view.pos_at_screen_coords(
819− &editor.documents[view.doc],
820− row as usize,
821− column as usize,
822− )
823− .map(|pos| (pos, view.id))
818+ view.pos_at_screen_coords(&editor.documents[view.doc], row, column)
819+ .map(|pos| (pos, view.id))
824820 });
825821
826− if let Some((pos, id)) = result {
827− let doc = &mut editor.documents[editor.tree.get(id).doc];
822+ if let Some((pos, view_id)) = result {
823+ let doc = &mut editor.documents[editor.tree.get(view_id).doc];
828824
829825 if modifiers == crossterm::event::KeyModifiers::ALT {
830− let selection = doc.selection(id).clone();
831− doc.set_selection(id, selection.push(Range::point(pos)));
826+ let selection = doc.selection(view_id).clone();
827+ doc.set_selection(view_id, selection.push(Range::point(pos)));
832828 } else {
833− doc.set_selection(id, Selection::point(pos));
829+ doc.set_selection(view_id, Selection::point(pos));
834830 }
835831
836− editor.tree.focus = id;
832+ editor.tree.focus = view_id;
837833
838834 return EventResult::Consumed(None);
839835 }
@@ -849,22 +845,15 @@ impl Component for EditorView {
849845 }) => {
850846 let (view, doc) = current!(cx.editor);
851847
852− let pos = view.pos_at_screen_coords(doc, row as usize, column as usize);
853−
854− if pos == None {
855− return EventResult::Ignored;
856− }
857−
858− let selection = doc.selection(view.id).clone();
859− let primary_anchor = selection.primary().anchor;
860− let new_selection = selection.transform(|range| -> Range {
861− if range.anchor == primary_anchor {
862− return Range::new(primary_anchor, pos.unwrap());
863− }
864− range
865− });
848+ let pos = match view.pos_at_screen_coords(doc, row, column) {
849+ Some(pos) => pos,
850+ None => return EventResult::Ignored,
851+ };
866852
867− doc.set_selection(view.id, new_selection);
853+ let mut selection = doc.selection(view.id).clone();
854+ let primary = selection.primary_mut();
855+ *primary = Range::new(primary.anchor, pos);
856+ doc.set_selection(view.id, selection);
868857 EventResult::Consumed(None)
869858 }
870859 Event::Mouse(_) => EventResult::Ignored,