use super::{IKeyModifiersEventArgs, InputElement, KeyModifiers, NavigationMethod};
use crate::interactivity::{RoutedEvent, RoutedEventArgs};
use crate::{ferro_routed_event_args, Ref};
#[derive(Clone)]
pub struct FocusChangedEventArgs {
base: RoutedEventArgs,
pub new_focused_element: Option<Ref<InputElement>>,
pub old_focused_element: Option<Ref<InputElement>>,
pub navigation_method: NavigationMethod,
pub key_modifiers: KeyModifiers,
}
ferro_routed_event_args!(FocusChangedEventArgs: RoutedEventArgs);
impl FocusChangedEventArgs {
pub fn new<T: ?Sized>(routed_event: &RoutedEvent<T>) -> Self {
Self {
base: RoutedEventArgs::with_event(routed_event),
new_focused_element: None,
old_focused_element: None,
navigation_method: NavigationMethod::Unspecified,
key_modifiers: KeyModifiers::NONE,
}
}
}
impl IKeyModifiersEventArgs for FocusChangedEventArgs {
fn key_modifiers(&self) -> KeyModifiers {
self.key_modifiers
}
}