RE ADD CONTEXT
This commit is contained in:
@@ -1,19 +1,18 @@
|
||||
use crate::prelude::*;
|
||||
use std::marker::{Sized, Unsize};
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct WidgetPtr {
|
||||
pub inner: Option<WidgetHandle>,
|
||||
pub struct WidgetPtr<State> {
|
||||
pub inner: Option<WidgetHandle<State>>,
|
||||
}
|
||||
|
||||
impl Widget for WidgetPtr {
|
||||
fn draw(&mut self, painter: &mut Painter) {
|
||||
impl<State: 'static> Widget<State> for WidgetPtr<State> {
|
||||
fn draw(&mut self, painter: &mut Painter<State>) {
|
||||
if let Some(id) = &self.inner {
|
||||
painter.widget(id);
|
||||
}
|
||||
}
|
||||
|
||||
fn desired_width(&mut self, ctx: &mut SizeCtx) -> Len {
|
||||
fn desired_width(&mut self, ctx: &mut SizeCtx<State>) -> Len {
|
||||
if let Some(id) = &self.inner {
|
||||
ctx.width(id)
|
||||
} else {
|
||||
@@ -21,7 +20,7 @@ impl Widget for WidgetPtr {
|
||||
}
|
||||
}
|
||||
|
||||
fn desired_height(&mut self, ctx: &mut SizeCtx) -> Len {
|
||||
fn desired_height(&mut self, ctx: &mut SizeCtx<State>) -> Len {
|
||||
if let Some(id) = &self.inner {
|
||||
ctx.height(id)
|
||||
} else {
|
||||
@@ -30,18 +29,29 @@ impl Widget for WidgetPtr {
|
||||
}
|
||||
}
|
||||
|
||||
impl WidgetPtr {
|
||||
impl<State> WidgetPtr<State> {
|
||||
pub fn new() -> Self {
|
||||
Self::default()
|
||||
}
|
||||
pub fn set<W: ?Sized + Unsize<dyn Widget>>(&mut self, to: WidgetHandle<W>) {
|
||||
pub fn empty() -> Self {
|
||||
Self {
|
||||
inner: Default::default(),
|
||||
}
|
||||
}
|
||||
pub fn set<W: ?Sized + Unsize<dyn Widget<State>>>(&mut self, to: WidgetHandle<State, W>) {
|
||||
self.inner = Some(to)
|
||||
}
|
||||
|
||||
pub fn replace<W: ?Sized + Unsize<dyn Widget>>(
|
||||
pub fn replace<W: ?Sized + Unsize<dyn Widget<State>>>(
|
||||
&mut self,
|
||||
to: WidgetHandle<W>,
|
||||
) -> Option<WidgetHandle> {
|
||||
to: WidgetHandle<State, W>,
|
||||
) -> Option<WidgetHandle<State>> {
|
||||
self.inner.replace(to)
|
||||
}
|
||||
}
|
||||
|
||||
impl<State> Default for WidgetPtr<State> {
|
||||
fn default() -> Self {
|
||||
Self::empty()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user