message: Impl operate for Component widget
diff: @@ -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,
  @@ -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,
  