ferroui_controls/
selection_changed_event_args.rs1use ferroui_base::interactivity::{RoutedEvent, RoutedEventArgs};
2use ferroui_base::{ferro_routed_event_args, BoxedValue};
3
4#[derive(Clone, Default)]
6pub struct SelectionChangedEventArgs {
7 base: RoutedEventArgs,
8 added_items: Vec<Option<BoxedValue>>,
9 removed_items: Vec<Option<BoxedValue>>,
10}
11
12ferro_routed_event_args!(SelectionChangedEventArgs: RoutedEventArgs);
13
14impl SelectionChangedEventArgs {
15 pub fn new<T: ?Sized>(
22 routed_event: Option<&RoutedEvent<T>>,
23 removed_items: Vec<Option<BoxedValue>>,
24 added_items: Vec<Option<BoxedValue>>,
25 ) -> Self {
26 let base = match routed_event {
27 Some(routed_event) => RoutedEventArgs::with_event(routed_event),
28 None => RoutedEventArgs::new(),
29 };
30 Self { base, added_items, removed_items }
31 }
32
33 pub fn added_items(&self) -> &[Option<BoxedValue>] {
35 &self.added_items
36 }
37
38 pub fn removed_items(&self) -> &[Option<BoxedValue>] {
40 &self.removed_items
41 }
42}