freya_core/accessibility/
dirty_nodes.rs1use rustc_hash::{
2 FxHashMap,
3 FxHashSet,
4};
5
6use crate::{
7 node_id::NodeId,
8 prelude::AccessibilityFocusStrategy,
9};
10
11#[derive(Default)]
12pub struct AccessibilityDirtyNodes {
13 pub requested_focus: Option<AccessibilityFocusStrategy>,
14 pub added_or_updated: FxHashSet<NodeId>,
15 pub removed: FxHashMap<NodeId, NodeId>,
16}
17
18impl AccessibilityDirtyNodes {
19 pub fn request_focus(&mut self, strategy: AccessibilityFocusStrategy) {
20 self.requested_focus = Some(strategy);
21 }
22
23 pub fn add_or_update(&mut self, node_id: NodeId) {
24 self.added_or_updated.insert(node_id);
25 }
26
27 pub fn remove(&mut self, node_id: NodeId, parent_id: NodeId) {
28 self.removed.insert(node_id, parent_id);
29 }
30
31 pub fn clear(&mut self) {
32 self.requested_focus.take();
33 self.added_or_updated.clear();
34 self.removed.clear();
35 }
36}