polyhorn_ui/components/
view.rs1use polyhorn_core::{Platform, WeakReference};
2
3use crate::events::EventListener;
4use crate::geometry::Size;
5use crate::handles::{Imperative, ViewHandle};
6use crate::styles::ViewStyle;
7
8pub struct View<P, H>
10where
11 P: Platform + ?Sized,
12 H: ViewHandle + 'static,
13{
14 pub style: ViewStyle,
16
17 pub on_pointer_cancel: EventListener<()>,
19
20 pub on_pointer_down: EventListener<()>,
22
23 pub on_pointer_up: EventListener<()>,
25
26 pub on_layout: EventListener<Size<f32>>,
28
29 pub reference: Option<WeakReference<P, Option<H>>>,
32}
33
34impl<P, H> Default for View<P, H>
35where
36 P: Platform + ?Sized,
37 H: ViewHandle,
38{
39 fn default() -> Self {
40 View {
41 style: Default::default(),
42 on_pointer_cancel: Default::default(),
43 on_pointer_down: Default::default(),
44 on_pointer_up: Default::default(),
45 on_layout: Default::default(),
46 reference: Default::default(),
47 }
48 }
49}
50
51impl<P, H> Imperative for View<P, H>
52where
53 P: Platform + ?Sized,
54 H: ViewHandle,
55{
56 type Handle = H;
57}