diff --git a/crates/egui/src/lib.rs b/crates/egui/src/lib.rs index 1fc5f6ca..75f80457 100644 --- a/crates/egui/src/lib.rs +++ b/crates/egui/src/lib.rs @@ -499,7 +499,7 @@ pub use self::{ layers::{LayerId, Order}, layout::*, load::SizeHint, - memory::{Memory, Options, Theme, ThemePreference}, + memory::{FocusDirection, Memory, Options, Theme, ThemePreference}, painter::Painter, response::{InnerResponse, Response}, sense::Sense, diff --git a/crates/egui/src/memory/mod.rs b/crates/egui/src/memory/mod.rs index 349ebcea..1e8cc4c9 100644 --- a/crates/egui/src/memory/mod.rs +++ b/crates/egui/src/memory/mod.rs @@ -140,8 +140,9 @@ impl Default for Memory { } } +/// A direction in which to move the keyboard focus. #[derive(Clone, Copy, Debug, Default, PartialEq, Eq)] -enum FocusDirection { +pub enum FocusDirection { /// Select the widget closest above the current focused widget. Up, @@ -888,6 +889,11 @@ impl Memory { } } + /// Move keyboard focus in a specific direction. + pub fn move_focus(&mut self, direction: FocusDirection) { + self.focus_mut().focus_direction = direction; + } + /// Returns true if /// - this layer is the top-most modal layer or above it /// - there is no modal layer