diff options
| author | Joe Carstairs <me@joeac.net> | 2026-02-07 11:52:08 +0000 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2026-02-07 12:02:27 +0000 |
| commit | 1664e741ad35ce52a01788c34029f0b2ea477e32 (patch) | |
| tree | dd6bd7c83a7e834c75815a786d67b5188cdd1f48 /schist_desktop_gui/src/gui/components/navigation/navigation_find.rs | |
| parent | 179878d12ba10ac242da2044f4c6dfe4d4829e59 (diff) | |
task-001: can navigate file screen options with keyboard
Diffstat (limited to 'schist_desktop_gui/src/gui/components/navigation/navigation_find.rs')
| -rw-r--r-- | schist_desktop_gui/src/gui/components/navigation/navigation_find.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/schist_desktop_gui/src/gui/components/navigation/navigation_find.rs b/schist_desktop_gui/src/gui/components/navigation/navigation_find.rs new file mode 100644 index 0000000..79c8ab0 --- /dev/null +++ b/schist_desktop_gui/src/gui/components/navigation/navigation_find.rs @@ -0,0 +1,16 @@ +impl<'a, TOption> super::Navigation<TOption> +where + TOption: Clone + PartialEq + 'a, +{ + pub fn find<P>(&self, pred: P) -> Option<TOption> + where + P: Fn(&TOption) -> bool, + { + self.options_before_active + .iter() + .find(|o| pred(o)) + .cloned() + .or_else(|| self.active_option.clone().filter(|o| pred(o))) + .or_else(|| self.options_after_active.iter().find(|o| pred(o)).cloned()) + } +} |
