on master help sign in
Propagate idle timeout event to components (#3172)
commit001858b11fb60926725e061ec31dfa9c77562148 authorGokul Soumya <gokulps15@gmail.com> dateTue 11 Oct 2022, 05:40 (4 years ago) parent5e1c589
3 files changed+6−17
helix-term/src/application.rs+2−7 helix-term/src/ui/editor.rs+3−10 helix-view/src/input.rs+1
helix-term/src/application.rs+2−7
@@ -435,18 +435,13 @@ impl Application {
435435 }
436436
437437 pub fn handle_idle_timeout(&mut self) {
438− use crate::compositor::EventResult;
439− let editor_view = self
440− .compositor
441− .find::<ui::EditorView>()
442− .expect("expected at least one EditorView");
443−
444438 let mut cx = crate::compositor::Context {
445439 editor: &mut self.editor,
446440 jobs: &mut self.jobs,
447441 scroll: None,
448442 };
449− if let EventResult::Consumed(_) = editor_view.handle_idle_timeout(&mut cx) {
443+ let should_render = self.compositor.handle_event(&Event::IdleTimeout, &mut cx);
444+ if should_render {
450445 self.render();
451446 }
452447 }
helix-term/src/ui/editor.rs+3−10
@@ -1066,7 +1066,7 @@ impl EditorView {
10661066 editor.clear_idle_timer(); // don't retrigger
10671067 }
10681068
1069− pub fn handle_idle_timeout(&mut self, cx: &mut crate::compositor::Context) -> EventResult {
1069+ pub fn handle_idle_timeout(&mut self, cx: &mut commands::Context) -> EventResult {
10701070 if self.completion.is_some()
10711071 || cx.editor.mode != Mode::Insert
10721072 || !cx.editor.config().auto_completion
@@ -1074,15 +1074,7 @@ impl EditorView {
10741074 return EventResult::Ignored(None);
10751075 }
10761076
1077− let mut cx = commands::Context {
1078− register: None,
1079− editor: cx.editor,
1080− jobs: cx.jobs,
1081− count: None,
1082− callback: None,
1083− on_next_key_callback: None,
1084− };
1085− crate::commands::insert::idle_completion(&mut cx);
1077+ crate::commands::insert::idle_completion(cx);
10861078
10871079 EventResult::Consumed(None)
10881080 }
@@ -1403,6 +1395,7 @@ impl Component for EditorView {
14031395 }
14041396
14051397 Event::Mouse(event) => self.handle_mouse_event(event, &mut cx),
1398+ Event::IdleTimeout => self.handle_idle_timeout(&mut cx),
14061399 Event::FocusGained | Event::FocusLost => EventResult::Ignored(None),
14071400 }
14081401 }
helix-view/src/input.rs+1
@@ -14,6 +14,7 @@ pub enum Event {
1414 Mouse(MouseEvent),
1515 Paste(String),
1616 Resize(u16, u16),
17+ IdleTimeout,
1718}
1819
1920#[derive(Debug, PartialOrd, PartialEq, Eq, Clone, Copy, Hash)]