diff options
Diffstat (limited to 'wgpu/src/renderer/widget')
| -rw-r--r-- | wgpu/src/renderer/widget/pane_grid.rs | 34 | 
1 files changed, 34 insertions, 0 deletions
| diff --git a/wgpu/src/renderer/widget/pane_grid.rs b/wgpu/src/renderer/widget/pane_grid.rs new file mode 100644 index 00000000..022fea70 --- /dev/null +++ b/wgpu/src/renderer/widget/pane_grid.rs @@ -0,0 +1,34 @@ +use crate::{Primitive, Renderer}; +use iced_native::{pane_grid, Element, Layout, MouseCursor, Point}; + +impl pane_grid::Renderer for Renderer { +    fn draw<Message>( +        &mut self, +        defaults: &Self::Defaults, +        content: &[(pane_grid::Pane, Element<'_, Message, Self>)], +        layout: Layout<'_>, +        cursor_position: Point, +    ) -> Self::Output { +        let mut mouse_cursor = MouseCursor::OutOfBounds; + +        ( +            Primitive::Group { +                primitives: content +                    .iter() +                    .zip(layout.children()) +                    .map(|((_, pane), layout)| { +                        let (primitive, new_mouse_cursor) = +                            pane.draw(self, defaults, layout, cursor_position); + +                        if new_mouse_cursor > mouse_cursor { +                            mouse_cursor = new_mouse_cursor; +                        } + +                        primitive +                    }) +                    .collect(), +            }, +            mouse_cursor, +        ) +    } +} | 
