use cosmic::iced::{ self, advanced::{layout, mouse, renderer, widget::Tree, Layout, Widget}, Length, Rectangle, }; use std::marker::PhantomData; mod workspace_bar; pub use workspace_bar::workspace_bar; pub fn layout_wrapper>(inner: T) -> LayoutWrapper { LayoutWrapper { inner, _msg: PhantomData, } } pub struct LayoutWrapper> { inner: T, _msg: PhantomData, } impl> Widget for LayoutWrapper { fn width(&self) -> Length { self.inner.width() } fn height(&self) -> Length { self.inner.height() } fn layout( &self, tree: &mut Tree, renderer: &cosmic::Renderer, limits: &layout::Limits, ) -> layout::Node { dbg!(limits); dbg!(self.inner.layout(tree, renderer, limits)) } fn draw( &self, state: &Tree, renderer: &mut cosmic::Renderer, theme: &cosmic::Theme, style: &renderer::Style, layout: Layout<'_>, cursor: mouse::Cursor, viewport: &Rectangle, ) { self.inner .draw(state, renderer, theme, style, layout, cursor, viewport) } fn children(&self) -> Vec { self.inner.children() } } impl<'a, Msg: 'a, T: Widget + 'a> From> for cosmic::Element<'a, Msg> { fn from(widget: LayoutWrapper) -> Self { cosmic::Element::new(widget) } }