Remove default styling of Button

- A background will only show if explicitly set.
- `iced_wgpu` won't apply a `min_width` of 100 units anymore.
This commit is contained in:
Héctor Ramón Jiménez 2019-11-13 07:34:07 +01:00
parent 6857829dc3
commit 2337029602
3 changed files with 32 additions and 22 deletions

View file

@ -19,6 +19,8 @@ pub struct Button<'a, Message, Element> {
pub width: Length,
pub min_width: u32,
pub padding: u16,
pub background: Option<Background>,
@ -52,6 +54,7 @@ impl<'a, Message, Element> Button<'a, Message, Element> {
content: content.into(),
on_press: None,
width: Length::Shrink,
min_width: 0,
padding: 0,
background: None,
border_radius: 0,
@ -66,6 +69,11 @@ impl<'a, Message, Element> Button<'a, Message, Element> {
self
}
pub fn min_width(mut self, min_width: u32) -> Self {
self.min_width = min_width;
self
}
pub fn padding(mut self, padding: u16) -> Self {
self.padding = padding;
self

View file

@ -671,6 +671,7 @@ fn button<'a, Message>(
)
.padding(12)
.border_radius(12)
.min_width(100)
}
fn primary_button<'a, Message>(

View file

@ -12,7 +12,7 @@ impl button::Renderer for Renderer {
) -> layout::Node {
let padding = f32::from(button.padding);
let limits = limits
.min_width(100)
.min_width(button.min_width)
.width(button.width)
.height(Length::Shrink)
.pad(padding);
@ -56,28 +56,29 @@ impl button::Renderer for Renderer {
};
(
Primitive::Group {
primitives: vec![
Primitive::Quad {
bounds: Rectangle {
x: bounds.x + 1.0,
y: bounds.y + shadow_offset,
..bounds
match button.background {
None => content,
Some(background) => Primitive::Group {
primitives: vec![
Primitive::Quad {
bounds: Rectangle {
x: bounds.x + 1.0,
y: bounds.y + shadow_offset,
..bounds
},
background: Background::Color(
[0.0, 0.0, 0.0, 0.5].into(),
),
border_radius: button.border_radius,
},
background: Background::Color(
[0.0, 0.0, 0.0, 0.5].into(),
),
border_radius: button.border_radius,
},
Primitive::Quad {
bounds,
background: button.background.unwrap_or(
Background::Color([0.8, 0.8, 0.8].into()),
),
border_radius: button.border_radius,
},
content,
],
Primitive::Quad {
bounds,
background,
border_radius: button.border_radius,
},
content,
],
},
},
if is_mouse_over {
MouseCursor::Pointer