summaryrefslogtreecommitdiffstats
path: root/native/src/element.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-07-28 03:53:47 +0200
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2022-07-28 03:53:47 +0200
commit52f84e51e90db1c324310565f2aff8b7e6987cba (patch)
tree721ef64dd91e0aca0e490971c8e1ee44ca912957 /native/src/element.rs
parent80688689aa4b15bc23824df899974a9094a77b07 (diff)
downloadiced-52f84e51e90db1c324310565f2aff8b7e6987cba.tar.gz
iced-52f84e51e90db1c324310565f2aff8b7e6987cba.tar.bz2
iced-52f84e51e90db1c324310565f2aff8b7e6987cba.zip
Implement `Widget::operate` for `TextInput`
Diffstat (limited to 'native/src/element.rs')
-rw-r--r--native/src/element.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/native/src/element.rs b/native/src/element.rs
index cc74035e..01b71aa4 100644
--- a/native/src/element.rs
+++ b/native/src/element.rs
@@ -3,6 +3,7 @@ use crate::layout;
use crate::mouse;
use crate::overlay;
use crate::renderer;
+use crate::widget;
use crate::widget::tree::{self, Tree};
use crate::{Clipboard, Layout, Length, Point, Rectangle, Shell, Widget};
@@ -248,6 +249,42 @@ where
self.widget.layout(renderer, limits)
}
+ fn operate(
+ &self,
+ tree: &mut Tree,
+ layout: Layout<'_>,
+ operation: &mut dyn widget::Operation<B>,
+ ) {
+ 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::state::Focusable,
+ id: Option<&widget::Id>,
+ ) {
+ self.operation.focusable(state, id);
+ }
+ }
+
+ self.widget
+ .operate(tree, layout, &mut MapOperation { operation });
+ }
+
fn on_event(
&mut self,
tree: &mut Tree,