Skip to content

Commit

Permalink
Merge pull request #1402 from tarkah/fix/component-operate
Browse files Browse the repository at this point in the history
Impl operate for Component widget
  • Loading branch information
hecrj authored Aug 9, 2022
2 parents 8550550 + a4d5b82 commit e209349
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions lazy/src/component.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use iced_native::layout::{self, Layout};
use iced_native::mouse;
use iced_native::overlay;
use iced_native::renderer;
use iced_native::widget;
use iced_native::widget::tree::{self, Tree};
use iced_native::{
Clipboard, Element, Length, Point, Rectangle, Shell, Size, Widget,
Expand Down Expand Up @@ -229,6 +230,47 @@ where
event_status
}

fn operate(
&self,
tree: &mut Tree,
layout: Layout<'_>,
operation: &mut dyn widget::Operation<Message>,
) {
struct MapOperation<'a, B> {
operation: &'a mut dyn widget::Operation<B>,
}

impl<'a, T, B> widget::Operation<T> for MapOperation<'a, B> {
fn container(
&mut self,
id: Option<&widget::Id>,
operate_on_children: &mut dyn FnMut(
&mut dyn widget::Operation<T>,
),
) {
self.operation.container(id, &mut |operation| {
operate_on_children(&mut MapOperation { operation });
});
}

fn focusable(
&mut self,
state: &mut dyn widget::operation::Focusable,
id: Option<&widget::Id>,
) {
self.operation.focusable(state, id);
}
}

self.with_element(|element| {
element.as_widget().operate(
&mut tree.children[0],
layout,
&mut MapOperation { operation },
);
});
}

fn draw(
&self,
tree: &Tree,
Expand Down

0 comments on commit e209349

Please sign in to comment.