//! Prevents any events from reaching the inner element. use iced::{advanced::overlay, Vector}; pub fn blackhole_event(o: O) -> BlackholeEvent { BlackholeEvent { overlay: o } } pub struct BlackholeEvent { overlay: O, } impl overlay::Overlay for BlackholeEvent> { fn operate( &mut self, layout: iced::advanced::Layout<'_>, renderer: &Renderer, operation: &mut dyn iced::advanced::widget::Operation, ) { self.overlay.operate(layout, renderer, operation); } fn on_event( &mut self, _event: iced::Event, _layout: iced::advanced::Layout<'_>, _cursor: iced::advanced::mouse::Cursor, _renderer: &Renderer, _clipboard: &mut dyn iced::advanced::Clipboard, _shell: &mut iced::advanced::Shell<'_, Message>, ) -> iced::event::Status { iced::event::Status::Ignored } fn mouse_interaction( &self, _layout: iced::advanced::Layout<'_>, _cursor: iced::advanced::mouse::Cursor, _viewport: &iced::Rectangle, _renderer: &Renderer, ) -> iced::advanced::mouse::Interaction { iced::advanced::mouse::Interaction::Idle } fn is_over( &self, _layout: iced::advanced::Layout<'_>, _renderer: &Renderer, _cursor_position: iced::Point, ) -> bool { false } fn overlay<'a>( &'a mut self, layout: iced::advanced::Layout<'_>, renderer: &Renderer, ) -> Option> { self.overlay.overlay(layout, renderer) } fn layout( &mut self, renderer: &Renderer, bounds: iced::Size, _position: iced::Point, translation: Vector, ) -> iced::advanced::layout::Node { self.overlay.layout(renderer, bounds, translation) } fn draw( &self, renderer: &mut Renderer, theme: &::Theme, style: &iced::advanced::renderer::Style, layout: iced::advanced::Layout<'_>, cursor: iced::advanced::mouse::Cursor, ) { self.overlay.draw(renderer, theme, style, layout, cursor); } }