polyhorn_android/components/
window.rs1use polyhorn_core::{CommandBuffer, Key};
2
3use crate::prelude::*;
4use crate::raw::{Builtin, Convert};
5
6impl Component for Window {
7 fn render(&self, manager: &mut Manager) -> Element {
8 let reference = use_reference!(manager, None);
9 let style = self.style;
10
11 use_layout_effect!(manager, move |link, buffer| {
12 if let Some(view) = reference.apply(link, |&mut id| id) {
13 buffer.mutate(&[view], move |views, environment| {
14 if let Some(view) = views[0].downcast_mut::<polyhorn_android_sys::View>() {
15 view.set_background_color(
16 environment.env(),
17 style.background_color.convert(environment.env()),
18 );
19 }
20 });
21 }
22 });
23
24 Element::builtin(
25 Key::new(()),
26 Builtin::Window,
27 manager.children(),
28 Some(reference.weak(manager)),
29 )
30 }
31}