who_has_focus method on View

This commit is contained in:
veeso
2021-03-10 16:35:29 +01:00
parent 1e813b0d4d
commit 2d1af97590

View File

@@ -142,7 +142,7 @@ impl View {
} }
} }
// -- private // -- focus
/// ### blur /// ### blur
/// ///
@@ -188,6 +188,18 @@ impl View {
} }
} }
/// ### who_has_focus
///
/// Returns component id associated to the focus
pub fn who_has_focus(&self) -> Option<String> {
match self.focus.as_ref() {
Some(focus) => Some(focus.to_string()),
None => None,
}
}
// -- private
/// ### push_to_stack /// ### push_to_stack
/// ///
/// Push component to stack; first remove it from the stack if any /// Push component to stack; first remove it from the stack if any
@@ -265,6 +277,7 @@ mod tests {
let input3: &str = "INPUT_3"; let input3: &str = "INPUT_3";
let text1: &str = "TEXT_1"; let text1: &str = "TEXT_1";
let text2: &str = "TEXT_2"; let text2: &str = "TEXT_2";
assert!(view.who_has_focus().is_none());
// Mount components // Mount components
view.mount(input1, make_component_input()); view.mount(input1, make_component_input());
view.mount(input2, make_component_input()); view.mount(input2, make_component_input());
@@ -284,6 +297,7 @@ mod tests {
assert_eq!(view.focus_stack.len(), 0); assert_eq!(view.focus_stack.len(), 0);
// Give focus to a component // Give focus to a component
view.active(input1); view.active(input1);
assert_eq!(view.who_has_focus().as_ref().unwrap().as_str(), input1);
// Check focus // Check focus
assert_eq!(view.focus.as_ref().unwrap().as_str(), input1); assert_eq!(view.focus.as_ref().unwrap().as_str(), input1);
assert_eq!(view.focus_stack.len(), 0); // NOTE: stack is empty until a focus gets blurred assert_eq!(view.focus_stack.len(), 0); // NOTE: stack is empty until a focus gets blurred