@@ -180,3 +180,49 @@ impl<Renderer: ?Sized, UH: UiHandle<Renderer>, const N: usize> UiHandle<Renderer
180180}
181181
182182// endregion
183+ // region: option
184+ impl < T : UnmountedUiHandle < Renderer > , Renderer : ?Sized > UnmountedUiHandle < Renderer > for Option < T > {
185+ type Mounted = Option < T :: Mounted > ;
186+
187+ fn mount ( self , render_context : & mut Renderer :: RenderContext < ' _ > ) -> Self :: Mounted
188+ where
189+ Renderer : crate :: render:: RenderWithContext ,
190+ {
191+ self . map ( |this| this. mount ( render_context) )
192+ }
193+ }
194+ impl < T : UiHandle < Renderer > , Renderer : ?Sized > UiHandle < Renderer > for Option < T > {
195+ type Unmounted = Option < T :: Unmounted > ;
196+
197+ fn unmount ( self , renderer : & mut Renderer ) -> Self :: Unmounted {
198+ self . map ( |this| this. unmount ( renderer) )
199+ }
200+
201+ fn reposition ( & mut self , render_context : & mut <Renderer >:: RenderContext < ' _ > )
202+ where
203+ Renderer : crate :: render:: RenderWithContext ,
204+ {
205+ if let Some ( this) = self {
206+ this. reposition ( render_context) ;
207+ }
208+ }
209+
210+ fn check_and_move_cursor ( & self , render_context : & mut <Renderer >:: RenderContext < ' _ > )
211+ where
212+ Renderer : crate :: render:: RenderWithContext ,
213+ {
214+ if let Some ( this) = self {
215+ this. check_and_move_cursor ( render_context) ;
216+ }
217+ }
218+
219+ fn assert_cursor_is_at_self ( & self , render_context : & <Renderer >:: RenderContext < ' _ > )
220+ where
221+ Renderer : crate :: render:: RenderWithContext ,
222+ {
223+ if let Some ( this) = self {
224+ this. assert_cursor_is_at_self ( render_context) ;
225+ }
226+ }
227+ }
228+ // endregion
0 commit comments