summaryrefslogtreecommitdiffstats
path: root/native/src/element.rs
diff options
context:
space:
mode:
Diffstat (limited to 'native/src/element.rs')
-rw-r--r--native/src/element.rs21
1 files changed, 14 insertions, 7 deletions
diff --git a/native/src/element.rs b/native/src/element.rs
index 73e39012..c6d65550 100644
--- a/native/src/element.rs
+++ b/native/src/element.rs
@@ -1,5 +1,6 @@
use crate::{
- layout, Clipboard, Color, Event, Hasher, Layout, Length, Point, Widget,
+ layout, Clipboard, Color, Event, Hasher, Layout, Length, Overlay, Point,
+ Widget,
};
/// A generic [`Widget`].
@@ -15,7 +16,7 @@ use crate::{
/// [`Element`]: struct.Element.html
#[allow(missing_debug_implementations)]
pub struct Element<'a, Message, Renderer> {
- pub(crate) widget: Box<dyn Widget<Message, Renderer> + 'a>,
+ pub(crate) widget: Box<dyn Widget<'a, Message, Renderer> + 'a>,
}
impl<'a, Message, Renderer> Element<'a, Message, Renderer>
@@ -27,7 +28,7 @@ where
/// [`Element`]: struct.Element.html
/// [`Widget`]: widget/trait.Widget.html
pub fn new(
- widget: impl Widget<Message, Renderer> + 'a,
+ widget: impl Widget<'a, Message, Renderer> + 'a,
) -> Element<'a, Message, Renderer> {
Element {
widget: Box::new(widget),
@@ -270,16 +271,22 @@ where
pub fn hash_layout(&self, state: &mut Hasher) {
self.widget.hash_layout(state);
}
+
+ pub fn overlay(
+ &mut self,
+ ) -> Option<Box<dyn Overlay<Message, Renderer> + 'a>> {
+ self.widget.overlay()
+ }
}
struct Map<'a, A, B, Renderer> {
- widget: Box<dyn Widget<A, Renderer> + 'a>,
+ widget: Box<dyn Widget<'a, A, Renderer> + 'a>,
mapper: Box<dyn Fn(A) -> B>,
}
impl<'a, A, B, Renderer> Map<'a, A, B, Renderer> {
pub fn new<F>(
- widget: Box<dyn Widget<A, Renderer> + 'a>,
+ widget: Box<dyn Widget<'a, A, Renderer> + 'a>,
mapper: F,
) -> Map<'a, A, B, Renderer>
where
@@ -292,7 +299,7 @@ impl<'a, A, B, Renderer> Map<'a, A, B, Renderer> {
}
}
-impl<'a, A, B, Renderer> Widget<B, Renderer> for Map<'a, A, B, Renderer>
+impl<'a, A, B, Renderer> Widget<'a, B, Renderer> for Map<'a, A, B, Renderer>
where
Renderer: crate::Renderer,
{
@@ -367,7 +374,7 @@ where
}
}
-impl<'a, Message, Renderer> Widget<Message, Renderer>
+impl<'a, Message, Renderer> Widget<'a, Message, Renderer>
for Explain<'a, Message, Renderer>
where
Renderer: crate::Renderer + layout::Debugger,