diff options
author | 2021-10-28 22:21:54 +0700 | |
---|---|---|
committer | 2021-10-28 22:21:54 +0700 | |
commit | 0df5b5bb7b098f480af85273eb7734e0074b26bc (patch) | |
tree | 0216f3c865cbdb6c392fbddf2b6a599d1b54f753 /native/src | |
parent | e6156fb0c53d78ae75a1d85d4bfd81f6b7e8817e (diff) | |
download | iced-0df5b5bb7b098f480af85273eb7734e0074b26bc.tar.gz iced-0df5b5bb7b098f480af85273eb7734e0074b26bc.tar.bz2 iced-0df5b5bb7b098f480af85273eb7734e0074b26bc.zip |
Implement `Widget::draw` for `element::Explain`
Diffstat (limited to 'native/src')
-rw-r--r-- | native/src/element.rs | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/native/src/element.rs b/native/src/element.rs index 44b6d1ec..d69b24fc 100644 --- a/native/src/element.rs +++ b/native/src/element.rs @@ -4,7 +4,8 @@ use crate::mouse; use crate::overlay; use crate::renderer; use crate::{ - Clipboard, Color, Hasher, Layout, Length, Point, Rectangle, Widget, + Background, Clipboard, Color, Hasher, Layout, Length, Point, Rectangle, + Widget, }; /// A generic [`Widget`]. @@ -439,12 +440,39 @@ where fn draw( &self, - _renderer: &mut Renderer, + renderer: &mut Renderer, style: &renderer::Style, - _layout: Layout<'_>, - _cursor_position: Point, - _viewport: &Rectangle, + layout: Layout<'_>, + cursor_position: Point, + viewport: &Rectangle, ) { + fn explain_layout<Renderer: crate::Renderer>( + renderer: &mut Renderer, + color: Color, + layout: Layout<'_>, + ) { + renderer.fill_rectangle(renderer::Quad { + bounds: layout.bounds(), + border_color: color, + border_width: 1.0, + border_radius: 0.0, + background: Background::Color(Color::TRANSPARENT), + }); + + for child in layout.children() { + explain_layout(renderer, color, child); + } + } + + self.element.widget.draw( + renderer, + style, + layout, + cursor_position, + viewport, + ); + + explain_layout(renderer, self.color, layout); } fn mouse_interaction( |