From 0240c3981b716c82ecb3364945815335b420a63e Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 10 Nov 2019 06:05:20 +0100 Subject: Draft custom layout engine based on `druid` --- wgpu/src/renderer/widget/button.rs | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'wgpu/src/renderer/widget/button.rs') diff --git a/wgpu/src/renderer/widget/button.rs b/wgpu/src/renderer/widget/button.rs index e8a97385..3d5e42ba 100644 --- a/wgpu/src/renderer/widget/button.rs +++ b/wgpu/src/renderer/widget/button.rs @@ -1,6 +1,7 @@ use crate::{Primitive, Renderer}; use iced_native::{ - button, layout, Background, Button, Layout, MouseCursor, Point, Rectangle, + button, layout, Background, Button, Layout, Length, MouseCursor, Point, + Rectangle, }; impl button::Renderer for Renderer { @@ -8,20 +9,28 @@ impl button::Renderer for Renderer { &self, button: &Button, limits: &layout::Limits, - ) -> Layout { - // TODO - Layout::new(Rectangle { - x: 0.0, - y: 0.0, - width: 0.0, - height: 0.0, - }) + ) -> layout::Node { + let padding = f32::from(button.padding); + let limits = limits + .min_width(100) + .width(button.width) + .height(Length::Shrink) + .pad(padding); + + let mut content = button.content.layout(self, &limits); + + content.bounds.x = padding; + content.bounds.y = padding; + + let size = limits.resolve(content.size()).pad(padding); + + layout::Node::with_children(size, vec![content]) } fn draw( &mut self, button: &Button, - layout: &Layout, + layout: Layout<'_>, cursor_position: Point, ) -> Self::Output { let bounds = layout.bounds(); -- cgit