From b474ee1843d5cb7cb5291bee4166490a223e5aac Mon Sep 17 00:00:00 2001 From: Michael Davis Date: Wed, 16 Nov 2022 18:59:59 -0600 Subject: Factor out common code for focusing the next view (#4607) There is some common code between Editor::focus_next and Editor::focus that can be eliminated by refactoring Tree::focus_next into a function that only returns the next ViewId.--- helix-view/src/tree.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'helix-view/src/tree.rs') diff --git a/helix-view/src/tree.rs b/helix-view/src/tree.rs index 6174021c..40484024 100644 --- a/helix-view/src/tree.rs +++ b/helix-view/src/tree.rs @@ -219,7 +219,7 @@ impl Tree { if self.focus == index { // focus on something else - self.focus_next(); + self.focus = self.next(); } stack.push(index); @@ -521,7 +521,7 @@ impl Tree { Some(child_id) } - pub fn focus_next(&mut self) { + pub fn next(&self) -> ViewId { // This function is very dumb, but that's because we don't store any parent links. // (we'd be able to go parent.next_sibling() recursively until we find something) // For now that's okay though, since it's unlikely you'll be able to open a large enough @@ -532,11 +532,11 @@ impl Tree { .skip_while(|&(id, _view)| id != self.focus) .skip(1); // Skip focused value if let Some((id, _)) = views.next() { - self.focus = id; + id } else { // extremely crude, take the first item again let (key, _) = self.traverse().next().unwrap(); - self.focus = key; + key } } -- cgit v1.2.3-70-g09d2