summaryrefslogtreecommitdiffstats
path: root/wgpu/src/renderer/widget/button.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-11-10 06:05:20 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-11-11 03:08:00 +0100
commit0240c3981b716c82ecb3364945815335b420a63e (patch)
tree441eebaa9441649a4e878bde71cdec20d4a67391 /wgpu/src/renderer/widget/button.rs
parent2303111e09d806ef2a652bddc2b73be6dccf6ae2 (diff)
downloadiced-0240c3981b716c82ecb3364945815335b420a63e.tar.gz
iced-0240c3981b716c82ecb3364945815335b420a63e.tar.bz2
iced-0240c3981b716c82ecb3364945815335b420a63e.zip
Draft custom layout engine based on `druid`
Diffstat (limited to 'wgpu/src/renderer/widget/button.rs')
-rw-r--r--wgpu/src/renderer/widget/button.rs29
1 files changed, 19 insertions, 10 deletions
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<Message, Self>,
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<Message>(
&mut self,
button: &Button<Message, Self>,
- layout: &Layout,
+ layout: Layout<'_>,
cursor_position: Point,
) -> Self::Output {
let bounds = layout.bounds();