polyhorn_android/components/
window.rs

1use 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}