use iced::advanced::layout::{self, Layout};
use iced::advanced::renderer;
use iced::advanced::widget::{Tree, Widget, tree};
use iced::{Element, Length, Rectangle, Renderer, Size, Theme, mouse};
pub(crate) fn inert<'a, Message: 'a>(content: Element<'a, ()>) -> Element<'a, Message> {
Element::new(Inert { content })
}
struct Inert<'a> {
content: Element<'a, ()>,
}
impl<Message> Widget<Message, Theme, Renderer> for Inert<'_> {
fn size(&self) -> Size<Length> {
self.content.as_widget().size()
}
fn size_hint(&self) -> Size<Length> {
self.content.as_widget().size_hint()
}
fn layout(
&mut self,
tree: &mut Tree,
renderer: &Renderer,
limits: &layout::Limits,
) -> layout::Node {
self.content.as_widget_mut().layout(tree, renderer, limits)
}
fn draw(
&self,
tree: &Tree,
renderer: &mut Renderer,
theme: &Theme,
style: &renderer::Style,
layout: Layout<'_>,
_cursor: mouse::Cursor,
viewport: &Rectangle,
) {
self.content.as_widget().draw(
tree,
renderer,
theme,
style,
layout,
mouse::Cursor::Unavailable,
viewport,
);
}
fn tag(&self) -> tree::Tag {
self.content.as_widget().tag()
}
fn state(&self) -> tree::State {
self.content.as_widget().state()
}
fn children(&self) -> Vec<Tree> {
self.content.as_widget().children()
}
fn diff(&self, tree: &mut Tree) {
self.content.as_widget().diff(tree);
}
}