summaryrefslogtreecommitdiffstats
path: root/native/src/widget/pane_grid.rs
diff options
context:
space:
mode:
Diffstat (limited to 'native/src/widget/pane_grid.rs')
-rw-r--r--native/src/widget/pane_grid.rs39
1 files changed, 19 insertions, 20 deletions
diff --git a/native/src/widget/pane_grid.rs b/native/src/widget/pane_grid.rs
index a88f591a..2eca68d3 100644
--- a/native/src/widget/pane_grid.rs
+++ b/native/src/widget/pane_grid.rs
@@ -80,9 +80,9 @@ pub struct PaneGrid<'a, Message, Renderer> {
height: Length,
spacing: u16,
modifier_keys: keyboard::ModifiersState,
- on_drag: Option<Box<dyn Fn(DragEvent) -> Message>>,
- on_resize: Option<Box<dyn Fn(ResizeEvent) -> Message>>,
- on_key_press: Option<Box<dyn Fn(KeyPressEvent) -> Option<Message>>>,
+ on_drag: Option<Box<dyn Fn(DragEvent) -> Message + 'a>>,
+ on_resize: Option<Box<dyn Fn(ResizeEvent) -> Message + 'a>>,
+ on_key_press: Option<Box<dyn Fn(KeyPressEvent) -> Option<Message> + 'a>>,
}
impl<'a, Message, Renderer> PaneGrid<'a, Message, Renderer> {
@@ -187,10 +187,10 @@ impl<'a, Message, Renderer> PaneGrid<'a, Message, Renderer> {
/// Panes can be dragged using `Modifier keys + Left click`.
///
/// [`PaneGrid`]: struct.PaneGrid.html
- pub fn on_drag(
- mut self,
- f: impl Fn(DragEvent) -> Message + 'static,
- ) -> Self {
+ pub fn on_drag<F>(mut self, f: F) -> Self
+ where
+ F: 'a + Fn(DragEvent) -> Message,
+ {
self.on_drag = Some(Box::new(f));
self
}
@@ -201,10 +201,10 @@ impl<'a, Message, Renderer> PaneGrid<'a, Message, Renderer> {
/// Panes can be resized using `Modifier keys + Right click`.
///
/// [`PaneGrid`]: struct.PaneGrid.html
- pub fn on_resize(
- mut self,
- f: impl Fn(ResizeEvent) -> Message + 'static,
- ) -> Self {
+ pub fn on_resize<F>(mut self, f: F) -> Self
+ where
+ F: 'a + Fn(ResizeEvent) -> Message,
+ {
self.on_resize = Some(Box::new(f));
self
}
@@ -226,10 +226,10 @@ impl<'a, Message, Renderer> PaneGrid<'a, Message, Renderer> {
///
/// [`PaneGrid`]: struct.PaneGrid.html
/// [`Pane`]: struct.Pane.html
- pub fn on_key_press(
- mut self,
- f: impl Fn(KeyPressEvent) -> Option<Message> + 'static,
- ) -> Self {
+ pub fn on_key_press<F>(mut self, f: F) -> Self
+ where
+ F: 'a + Fn(KeyPressEvent) -> Option<Message>,
+ {
self.on_key_press = Some(Box::new(f));
self
}
@@ -348,8 +348,7 @@ pub struct KeyPressEvent {
impl<'a, Message, Renderer> Widget<Message, Renderer>
for PaneGrid<'a, Message, Renderer>
where
- Renderer: self::Renderer + 'static,
- Message: 'static,
+ Renderer: 'static + self::Renderer,
{
fn width(&self) -> Length {
self.width
@@ -591,7 +590,7 @@ where
fn hash_layout(&self, state: &mut Hasher) {
use std::hash::Hash;
- std::any::TypeId::of::<PaneGrid<'_, Message, Renderer>>().hash(state);
+ std::any::TypeId::of::<PaneGrid<'_, (), Renderer>>().hash(state);
self.width.hash(state);
self.height.hash(state);
self.state.hash_layout(state);
@@ -636,8 +635,8 @@ pub trait Renderer: crate::Renderer + Sized {
impl<'a, Message, Renderer> From<PaneGrid<'a, Message, Renderer>>
for Element<'a, Message, Renderer>
where
- Renderer: self::Renderer + 'static,
- Message: 'static,
+ Renderer: 'static + self::Renderer,
+ Message: 'a,
{
fn from(
pane_grid: PaneGrid<'a, Message, Renderer>,