diff options
Diffstat (limited to 'native/src/overlay')
| -rw-r--r-- | native/src/overlay/element.rs | 17 | ||||
| -rw-r--r-- | native/src/overlay/menu.rs | 8 | 
2 files changed, 12 insertions, 13 deletions
diff --git a/native/src/overlay/element.rs b/native/src/overlay/element.rs index 24b39ced..70cb417e 100644 --- a/native/src/overlay/element.rs +++ b/native/src/overlay/element.rs @@ -4,7 +4,7 @@ use crate::event::{self, Event};  use crate::layout;  use crate::mouse;  use crate::renderer; -use crate::{Clipboard, Hasher, Layout, Point, Rectangle, Size, Vector}; +use crate::{Clipboard, Hasher, Layout, Point, Rectangle, Shell, Size, Vector};  /// A generic [`Overlay`].  #[allow(missing_debug_implementations)] @@ -62,7 +62,7 @@ where          cursor_position: Point,          renderer: &Renderer,          clipboard: &mut dyn Clipboard, -        messages: &mut Vec<Message>, +        shell: &mut Shell<'_, Message>,      ) -> event::Status {          self.overlay.on_event(              event, @@ -70,7 +70,7 @@ where              cursor_position,              renderer,              clipboard, -            messages, +            shell,          )      } @@ -136,9 +136,10 @@ where          cursor_position: Point,          renderer: &Renderer,          clipboard: &mut dyn Clipboard, -        messages: &mut Vec<B>, +        shell: &mut Shell<'_, B>,      ) -> event::Status { -        let mut original_messages = Vec::new(); +        let mut local_messages = Vec::new(); +        let mut local_shell = Shell::new(&mut local_messages);          let event_status = self.content.on_event(              event, @@ -146,12 +147,10 @@ where              cursor_position,              renderer,              clipboard, -            &mut original_messages, +            &mut local_shell,          ); -        original_messages -            .drain(..) -            .for_each(|message| messages.push((self.mapper)(message))); +        shell.merge(local_shell, self.mapper);          event_status      } diff --git a/native/src/overlay/menu.rs b/native/src/overlay/menu.rs index ee3bee6e..6776a3ee 100644 --- a/native/src/overlay/menu.rs +++ b/native/src/overlay/menu.rs @@ -11,7 +11,7 @@ use crate::widget::scrollable::{self, Scrollable};  use crate::widget::Container;  use crate::{      Clipboard, Color, Element, Hasher, Layout, Length, Padding, Point, -    Rectangle, Size, Vector, Widget, +    Rectangle, Shell, Size, Vector, Widget,  };  pub use iced_style::menu::Style; @@ -222,7 +222,7 @@ where          cursor_position: Point,          renderer: &Renderer,          clipboard: &mut dyn Clipboard, -        messages: &mut Vec<Message>, +        shell: &mut Shell<'_, Message>,      ) -> event::Status {          self.container.on_event(              event.clone(), @@ -230,7 +230,7 @@ where              cursor_position,              renderer,              clipboard, -            messages, +            shell,          )      } @@ -333,7 +333,7 @@ where          cursor_position: Point,          renderer: &Renderer,          _clipboard: &mut dyn Clipboard, -        _messages: &mut Vec<Message>, +        _shell: &mut Shell<'_, Message>,      ) -> event::Status {          match event {              Event::Mouse(mouse::Event::ButtonPressed(mouse::Button::Left)) => {  | 
