feat: add overlay option to appearance for vertical icon button
This commit is contained in:
parent
47dedfde74
commit
6f2c893cf5
4 changed files with 30 additions and 1 deletions
|
|
@ -73,9 +73,14 @@ pub fn appearance(
|
||||||
Button::Icon | Button::IconVertical | Button::HeaderBar => {
|
Button::Icon | Button::IconVertical | Button::HeaderBar => {
|
||||||
if matches!(style, Button::IconVertical) {
|
if matches!(style, Button::IconVertical) {
|
||||||
corner_radii = &cosmic.corner_radii.radius_m;
|
corner_radii = &cosmic.corner_radii.radius_m;
|
||||||
|
if selected {
|
||||||
|
appearance.overlay = Some(Background::Color(Color::from(
|
||||||
|
cosmic.icon_button.selected_state_color(),
|
||||||
|
)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let (background, text, icon) = color(&cosmic.icon_button);
|
let (background, _text, _icon) = color(&cosmic.icon_button);
|
||||||
appearance.background = Some(Background::Color(background));
|
appearance.background = Some(Background::Color(background));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,9 @@ pub struct Appearance {
|
||||||
/// The [`Background`] of the button.
|
/// The [`Background`] of the button.
|
||||||
pub background: Option<Background>,
|
pub background: Option<Background>,
|
||||||
|
|
||||||
|
/// The [`Background`] overlay of the button.
|
||||||
|
pub overlay: Option<Background>,
|
||||||
|
|
||||||
/// The border radius of the button.
|
/// The border radius of the button.
|
||||||
pub border_radius: Radius,
|
pub border_radius: Radius,
|
||||||
|
|
||||||
|
|
@ -52,6 +55,7 @@ impl Appearance {
|
||||||
outline_color: Color::TRANSPARENT,
|
outline_color: Color::TRANSPARENT,
|
||||||
icon_color: None,
|
icon_color: None,
|
||||||
text_color: None,
|
text_color: None,
|
||||||
|
overlay: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -813,6 +813,21 @@ pub fn draw<Renderer: iced_core::Renderer, Theme>(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Then button overlay if any.
|
||||||
|
if let Some(overlay) = styling.overlay {
|
||||||
|
renderer.fill_quad(
|
||||||
|
renderer::Quad {
|
||||||
|
bounds,
|
||||||
|
border: Border {
|
||||||
|
radius: styling.border_radius,
|
||||||
|
..Default::default()
|
||||||
|
},
|
||||||
|
shadow: Shadow::default(),
|
||||||
|
},
|
||||||
|
overlay,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Then draw the button contents onto the background.
|
// Then draw the button contents onto the background.
|
||||||
draw_contents(renderer, styling);
|
draw_contents(renderer, styling);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -772,6 +772,7 @@ fn color_to_string(c: palette::Hsv, is_hex: bool) -> String {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::too_many_lines)]
|
||||||
/// A button for selecting a color from a color picker.
|
/// A button for selecting a color from a color picker.
|
||||||
pub fn color_button<'a, Message: 'static>(
|
pub fn color_button<'a, Message: 'static>(
|
||||||
on_press: Option<Message>,
|
on_press: Option<Message>,
|
||||||
|
|
@ -826,6 +827,7 @@ pub fn color_button<'a, Message: 'static>(
|
||||||
outline_color,
|
outline_color,
|
||||||
icon_color: None,
|
icon_color: None,
|
||||||
text_color: None,
|
text_color: None,
|
||||||
|
overlay: None,
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
disabled: Box::new(move |theme| {
|
disabled: Box::new(move |theme| {
|
||||||
|
|
@ -842,6 +844,7 @@ pub fn color_button<'a, Message: 'static>(
|
||||||
outline_color: Color::TRANSPARENT,
|
outline_color: Color::TRANSPARENT,
|
||||||
icon_color: None,
|
icon_color: None,
|
||||||
text_color: None,
|
text_color: None,
|
||||||
|
overlay: None,
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
hovered: Box::new(move |focused, theme| {
|
hovered: Box::new(move |focused, theme| {
|
||||||
|
|
@ -864,6 +867,7 @@ pub fn color_button<'a, Message: 'static>(
|
||||||
outline_color,
|
outline_color,
|
||||||
icon_color: None,
|
icon_color: None,
|
||||||
text_color: None,
|
text_color: None,
|
||||||
|
overlay: None,
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
pressed: Box::new(move |focused, theme| {
|
pressed: Box::new(move |focused, theme| {
|
||||||
|
|
@ -886,6 +890,7 @@ pub fn color_button<'a, Message: 'static>(
|
||||||
outline_color,
|
outline_color,
|
||||||
icon_color: None,
|
icon_color: None,
|
||||||
text_color: None,
|
text_color: None,
|
||||||
|
overlay: None,
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue