Simplify compositor.find

pull/1127/head
Blaž Hrastnik 3 years ago
parent 90fd09f2cc
commit fa4c59df46

@ -270,12 +270,8 @@ impl Application {
}
let editor_view = self
.compositor
.find(std::any::type_name::<ui::EditorView>())
.find::<ui::EditorView>()
.expect("expected at least one EditorView");
let editor_view = editor_view
.as_any_mut()
.downcast_mut::<ui::EditorView>()
.unwrap();
if editor_view.completion.is_some() {
return;
@ -440,12 +436,8 @@ impl Application {
{
let editor_view = self
.compositor
.find(std::any::type_name::<ui::EditorView>())
.find::<ui::EditorView>()
.expect("expected at least one EditorView");
let editor_view = editor_view
.as_any_mut()
.downcast_mut::<ui::EditorView>()
.unwrap();
let lsp::ProgressParams { token, value } = params;
let lsp::ProgressParamsValue::WorkDone(work) = value;
@ -559,12 +551,8 @@ impl Application {
let editor_view = self
.compositor
.find(std::any::type_name::<ui::EditorView>())
.find::<ui::EditorView>()
.expect("expected at least one EditorView");
let editor_view = editor_view
.as_any_mut()
.downcast_mut::<ui::EditorView>()
.unwrap();
let spinner = editor_view.spinners_mut().get_or_create(server_id);
if spinner.is_stopped() {
spinner.start();

@ -4735,19 +4735,15 @@ pub fn completion(cx: &mut Context) {
return;
}
let size = compositor.size();
let ui = compositor
.find(std::any::type_name::<ui::EditorView>())
.unwrap();
if let Some(ui) = ui.as_any_mut().downcast_mut::<ui::EditorView>() {
ui.set_completion(
editor,
items,
offset_encoding,
start_offset,
trigger_offset,
size,
);
};
let ui = compositor.find::<ui::EditorView>().unwrap();
ui.set_completion(
editor,
items,
offset_encoding,
start_offset,
trigger_offset,
size,
);
},
);
}

@ -177,11 +177,12 @@ impl Compositor {
.any(|component| component.type_name() == type_name)
}
pub fn find(&mut self, type_name: &str) -> Option<&mut dyn Component> {
pub fn find<T: 'static>(&mut self) -> Option<&mut T> {
let type_name = std::any::type_name::<T>();
self.layers
.iter_mut()
.find(|component| component.type_name() == type_name)
.map(|component| component.as_mut())
.and_then(|component| component.as_any_mut().downcast_mut())
}
}

Loading…
Cancel
Save