use ferroui_base::interactivity::{RoutedEvent, RoutedEventArgs};
use ferroui_base::{ferro_routed_event_args, BoxedValue};
#[derive(Clone, Default)]
pub struct SelectionChangedEventArgs {
base: RoutedEventArgs,
added_items: Vec<Option<BoxedValue>>,
removed_items: Vec<Option<BoxedValue>>,
}
ferro_routed_event_args!(SelectionChangedEventArgs: RoutedEventArgs);
impl SelectionChangedEventArgs {
pub fn new<T: ?Sized>(
routed_event: Option<&RoutedEvent<T>>,
removed_items: Vec<Option<BoxedValue>>,
added_items: Vec<Option<BoxedValue>>,
) -> Self {
let base = match routed_event {
Some(routed_event) => RoutedEventArgs::with_event(routed_event),
None => RoutedEventArgs::new(),
};
Self { base, added_items, removed_items }
}
pub fn added_items(&self) -> &[Option<BoxedValue>] {
&self.added_items
}
pub fn removed_items(&self) -> &[Option<BoxedValue>] {
&self.removed_items
}
}