summaryrefslogtreecommitdiffstats
path: root/wgpu/src/renderer/widget/button.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2019-11-14 06:46:50 +0100
committerLibravatar GitHub <noreply@github.com>2019-11-14 06:46:50 +0100
commitbc8d347736ec997ec0e0c401289e2bc09e212b8a (patch)
treeb98798c09a3aa914b7d0869fba0cfd3efff7754f /wgpu/src/renderer/widget/button.rs
parent839e039dbf2fb89dcb8c141503740777d2af2eb3 (diff)
parent73f3c900071f950ea914652ca3f0002c1e173f61 (diff)
downloadiced-bc8d347736ec997ec0e0c401289e2bc09e212b8a.tar.gz
iced-bc8d347736ec997ec0e0c401289e2bc09e212b8a.tar.bz2
iced-bc8d347736ec997ec0e0c401289e2bc09e212b8a.zip
Merge pull request #52 from hecrj/custom-layout-engine
Custom layout engine
Diffstat (limited to 'wgpu/src/renderer/widget/button.rs')
-rw-r--r--wgpu/src/renderer/widget/button.rs29
1 files changed, 20 insertions, 9 deletions
diff --git a/wgpu/src/renderer/widget/button.rs b/wgpu/src/renderer/widget/button.rs
index 0ac1c0a6..3d5e42ba 100644
--- a/wgpu/src/renderer/widget/button.rs
+++ b/wgpu/src/renderer/widget/button.rs
@@ -1,19 +1,30 @@
use crate::{Primitive, Renderer};
use iced_native::{
- button, Align, Background, Button, Layout, Length, MouseCursor,
- Node, Point, Rectangle, Style,
+ button, layout, Background, Button, Layout, Length, MouseCursor, Point,
+ Rectangle,
};
impl button::Renderer for Renderer {
- fn node<Message>(&self, button: &Button<Message, Self>) -> Node {
- let style = Style::default()
+ fn layout<Message>(
+ &self,
+ button: &Button<Message, Self>,
+ limits: &layout::Limits,
+ ) -> layout::Node {
+ let padding = f32::from(button.padding);
+ let limits = limits
+ .min_width(100)
.width(button.width)
- .padding(button.padding)
- .min_width(Length::Units(100))
- .align_self(button.align_self)
- .align_items(Align::Stretch);
+ .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);
- Node::with_children(style, vec![button.content.node(self)])
+ layout::Node::with_children(size, vec![content])
}
fn draw<Message>(