diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2020-01-13 15:13:08 +0530 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2020-01-21 15:47:30 -0800 |
commit | 9c34a6585b50b7c20468060dafca717d1d363e6c (patch) | |
tree | 8161e4603b6e7f2f737bdc8296f4e6879f6d86c1 /components/script/dom/xrinputsourcearray.rs | |
parent | e9221e6ce02b4fc16676bda2895105bea8e95e7f (diff) | |
download | servo-9c34a6585b50b7c20468060dafca717d1d363e6c.tar.gz servo-9c34a6585b50b7c20468060dafca717d1d363e6c.zip |
Handle SetTargetRayMode and SetHandedness
Diffstat (limited to 'components/script/dom/xrinputsourcearray.rs')
-rw-r--r-- | components/script/dom/xrinputsourcearray.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/components/script/dom/xrinputsourcearray.rs b/components/script/dom/xrinputsourcearray.rs index 45e0f2851e4..66e4045e44a 100644 --- a/components/script/dom/xrinputsourcearray.rs +++ b/components/script/dom/xrinputsourcearray.rs @@ -101,6 +101,37 @@ impl XRInputSourceArray { event.upcast::<Event>().fire(session.upcast()); } + pub fn add_remove_input_source(&self, session: &XRSession, id: InputId, info: InputSource) { + let mut input_sources = self.input_sources.borrow_mut(); + let global = self.global(); + let root; + let removed = if let Some(i) = input_sources.iter().find(|i| i.id() == id) { + root = [DomRoot::from_ref(&**i)]; + &root as &[_] + } else { + warn!("Could not find removed input source with id {:?}", id); + &[] + }; + input_sources.retain(|i| i.id() != id); + let input = XRInputSource::new(&global, &session, info); + input_sources.push(Dom::from_ref(&input)); + + let added = [input]; + + let event = XRInputSourcesChangeEvent::new( + &global, + atom!("inputsourceschange"), + false, + true, + session, + &added, + removed, + ); + // release the refcell guard + drop(input_sources); + event.upcast::<Event>().fire(session.upcast()); + } + pub fn find(&self, id: InputId) -> Option<DomRoot<XRInputSource>> { self.input_sources .borrow() |