From 7c575990bef7191a020e9b31ef9350dce97ac7ac Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Thu, 21 Jul 2022 12:22:12 -0700 Subject: [PATCH] Remove the set_selected_text_range method from the InputHandler trait --- crates/editor/src/editor.rs | 41 ++++++++++++++++++++---------------- crates/editor/src/element.rs | 2 +- crates/gpui/src/app.rs | 27 ------------------------ crates/gpui/src/platform.rs | 3 +-- 4 files changed, 25 insertions(+), 48 deletions(-) diff --git a/crates/editor/src/editor.rs b/crates/editor/src/editor.rs index babc6f3ca4b6697e8375b29fb59509cc968870f8..fdcbb875226e3f01f2b13941fa38b58409fe3bb8 100644 --- a/crates/editor/src/editor.rs +++ b/crates/editor/src/editor.rs @@ -5892,12 +5892,6 @@ impl View for Editor { Some(range.start.0..range.end.0) } - fn set_selected_text_range(&mut self, range_utf16: Range, cx: &mut ViewContext) { - self.change_selections(None, cx, |selections| { - selections.select_ranges([OffsetUtf16(range_utf16.start)..OffsetUtf16(range_utf16.end)]) - }); - } - fn marked_text_range(&self, cx: &AppContext) -> Option> { let range = self.text_highlights::(cx)?.1.get(0)?; let snapshot = self.buffer.read(cx).read(cx); @@ -5917,8 +5911,10 @@ impl View for Editor { cx: &mut ViewContext, ) { self.transact(cx, |this, cx| { - if let Some(range_utf16) = range_utf16.or_else(|| this.marked_text_range(cx)) { - this.set_selected_text_range(range_utf16, cx); + if let Some(range) = range_utf16.or_else(|| this.marked_text_range(cx)) { + this.change_selections(None, cx, |selections| { + selections.select_ranges([OffsetUtf16(range.start)..OffsetUtf16(range.end)]) + }); } this.handle_input(text, cx); this.unmark_text(cx); @@ -5933,15 +5929,22 @@ impl View for Editor { cx: &mut ViewContext, ) { self.transact(cx, |this, cx| { - if let Some(mut marked_range) = this.marked_text_range(cx) { + let range_to_replace = if let Some(mut marked_range) = this.marked_text_range(cx) { if let Some(relative_range_utf16) = range_utf16.as_ref() { marked_range.end = marked_range.start + relative_range_utf16.end; marked_range.start += relative_range_utf16.start; } - - this.set_selected_text_range(marked_range, cx); + Some(marked_range) } else if let Some(range_utf16) = range_utf16 { - this.set_selected_text_range(range_utf16, cx); + Some(range_utf16) + } else { + None + }; + + if let Some(range) = range_to_replace { + this.change_selections(None, cx, |s| { + s.select_ranges([OffsetUtf16(range.start)..OffsetUtf16(range.end)]) + }); } let selection = this.selections.newest_anchor(); @@ -5962,15 +5965,17 @@ impl View for Editor { this.handle_input(text, cx); - if let Some(new_selected_range) = new_selected_range_utf16 { + if let Some(mut new_selected_range) = new_selected_range_utf16 { let snapshot = this.buffer.read(cx).read(cx); let insertion_start = marked_range.start.to_offset_utf16(&snapshot).0; + new_selected_range.start += insertion_start; + new_selected_range.end += insertion_start; drop(snapshot); - this.set_selected_text_range( - insertion_start + new_selected_range.start - ..insertion_start + new_selected_range.end, - cx, - ); + this.change_selections(None, cx, |selections| { + selections + .select_ranges([OffsetUtf16(new_selected_range.start) + ..OffsetUtf16(new_selected_range.end)]) + }); } }); } diff --git a/crates/editor/src/element.rs b/crates/editor/src/element.rs index 951796b6bfbdf829c7ee55ebb8e7085f31494318..9f5da43916c9a5a1dce518e58ed1d5a6762d2ed8 100644 --- a/crates/editor/src/element.rs +++ b/crates/editor/src/element.rs @@ -1,6 +1,6 @@ use super::{ display_map::{BlockContext, ToDisplayPoint}, - Anchor, DisplayPoint, Editor, EditorMode, EditorSnapshot, Input, Scroll, Select, SelectPhase, + Anchor, DisplayPoint, Editor, EditorMode, EditorSnapshot, Scroll, Select, SelectPhase, SoftWrap, ToPoint, MAX_LINE_LEN, }; use crate::{ diff --git a/crates/gpui/src/app.rs b/crates/gpui/src/app.rs index c098927f4a96caec82bdea9aa393c47389624fe4..90626c46655707a90e84e21a1c32862a91c52bdb 100644 --- a/crates/gpui/src/app.rs +++ b/crates/gpui/src/app.rs @@ -72,7 +72,6 @@ pub trait View: Entity + Sized { fn selected_text_range(&self, _: &AppContext) -> Option> { None } - fn set_selected_text_range(&mut self, _: Range, _: &mut ViewContext) {} fn marked_text_range(&self, _: &AppContext) -> Option> { None } @@ -391,14 +390,6 @@ impl InputHandler for WindowInputHandler { result } - fn set_selected_text_range(&mut self, range: Range) { - eprintln!("set_selected_text_range({range:?})"); - - self.update_focused_view(|window_id, view_id, view, cx| { - view.set_selected_text_range(range, cx, window_id, view_id); - }); - } - fn replace_text_in_range(&mut self, range: Option>, text: &str) { eprintln!("replace_text_in_range({range:?}, {text:?})"); @@ -3321,13 +3312,6 @@ pub trait AnyView { fn text_for_range(&self, range: Range, cx: &AppContext) -> Option; fn selected_text_range(&self, cx: &AppContext) -> Option>; - fn set_selected_text_range( - &mut self, - range: Range, - cx: &mut MutableAppContext, - window_id: usize, - view_id: usize, - ); fn marked_text_range(&self, cx: &AppContext) -> Option>; fn unmark_text(&mut self, cx: &mut MutableAppContext, window_id: usize, view_id: usize); fn replace_text_in_range( @@ -3406,17 +3390,6 @@ where View::selected_text_range(self, cx) } - fn set_selected_text_range( - &mut self, - range: Range, - cx: &mut MutableAppContext, - window_id: usize, - view_id: usize, - ) { - let mut cx = ViewContext::new(cx, window_id, view_id); - View::set_selected_text_range(self, range, &mut cx) - } - fn marked_text_range(&self, cx: &AppContext) -> Option> { View::marked_text_range(self, cx) } diff --git a/crates/gpui/src/platform.rs b/crates/gpui/src/platform.rs index aab184f87d5fb8d0830fe1fc93a3d20e8b6d4e11..f85b06438e6de5e6d535ca355b80488941128ff9 100644 --- a/crates/gpui/src/platform.rs +++ b/crates/gpui/src/platform.rs @@ -91,7 +91,7 @@ pub trait Dispatcher: Send + Sync { pub trait InputHandler { fn selected_text_range(&self) -> Option>; - fn set_selected_text_range(&mut self, range_utf16: Range); + fn marked_text_range(&self) -> Option>; fn text_for_range(&self, range_utf16: Range) -> Option; fn replace_text_in_range(&mut self, replacement_range: Option>, text: &str); fn replace_and_mark_text_in_range( @@ -100,7 +100,6 @@ pub trait InputHandler { new_text: &str, new_selected_range: Option>, ); - fn marked_text_range(&self) -> Option>; fn unmark_text(&mut self); fn rect_for_range(&self, range_utf16: Range) -> Option; }