Remove the set_selected_text_range method from the InputHandler trait
This commit is contained in:
parent
509f54bf20
commit
7c575990be
4 changed files with 25 additions and 48 deletions
|
@ -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<usize>, cx: &mut ViewContext<Self>) {
|
||||
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<Range<usize>> {
|
||||
let range = self.text_highlights::<InputComposition>(cx)?.1.get(0)?;
|
||||
let snapshot = self.buffer.read(cx).read(cx);
|
||||
|
@ -5917,8 +5911,10 @@ impl View for Editor {
|
|||
cx: &mut ViewContext<Self>,
|
||||
) {
|
||||
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>,
|
||||
) {
|
||||
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)])
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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::{
|
||||
|
|
|
@ -72,7 +72,6 @@ pub trait View: Entity + Sized {
|
|||
fn selected_text_range(&self, _: &AppContext) -> Option<Range<usize>> {
|
||||
None
|
||||
}
|
||||
fn set_selected_text_range(&mut self, _: Range<usize>, _: &mut ViewContext<Self>) {}
|
||||
fn marked_text_range(&self, _: &AppContext) -> Option<Range<usize>> {
|
||||
None
|
||||
}
|
||||
|
@ -391,14 +390,6 @@ impl InputHandler for WindowInputHandler {
|
|||
result
|
||||
}
|
||||
|
||||
fn set_selected_text_range(&mut self, range: Range<usize>) {
|
||||
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<Range<usize>>, text: &str) {
|
||||
eprintln!("replace_text_in_range({range:?}, {text:?})");
|
||||
|
||||
|
@ -3321,13 +3312,6 @@ pub trait AnyView {
|
|||
|
||||
fn text_for_range(&self, range: Range<usize>, cx: &AppContext) -> Option<String>;
|
||||
fn selected_text_range(&self, cx: &AppContext) -> Option<Range<usize>>;
|
||||
fn set_selected_text_range(
|
||||
&mut self,
|
||||
range: Range<usize>,
|
||||
cx: &mut MutableAppContext,
|
||||
window_id: usize,
|
||||
view_id: usize,
|
||||
);
|
||||
fn marked_text_range(&self, cx: &AppContext) -> Option<Range<usize>>;
|
||||
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<usize>,
|
||||
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<Range<usize>> {
|
||||
View::marked_text_range(self, cx)
|
||||
}
|
||||
|
|
|
@ -91,7 +91,7 @@ pub trait Dispatcher: Send + Sync {
|
|||
|
||||
pub trait InputHandler {
|
||||
fn selected_text_range(&self) -> Option<Range<usize>>;
|
||||
fn set_selected_text_range(&mut self, range_utf16: Range<usize>);
|
||||
fn marked_text_range(&self) -> Option<Range<usize>>;
|
||||
fn text_for_range(&self, range_utf16: Range<usize>) -> Option<String>;
|
||||
fn replace_text_in_range(&mut self, replacement_range: Option<Range<usize>>, text: &str);
|
||||
fn replace_and_mark_text_in_range(
|
||||
|
@ -100,7 +100,6 @@ pub trait InputHandler {
|
|||
new_text: &str,
|
||||
new_selected_range: Option<Range<usize>>,
|
||||
);
|
||||
fn marked_text_range(&self) -> Option<Range<usize>>;
|
||||
fn unmark_text(&mut self);
|
||||
fn rect_for_range(&self, range_utf16: Range<usize>) -> Option<RectF>;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue