summaryrefslogtreecommitdiffstats
path: root/wgpu/src/renderer/widget/button.rs
diff options
context:
space:
mode:
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();