Add border styling to Container

This commit is contained in:
Héctor Ramón Jiménez 2020-01-05 18:38:03 +01:00
parent 8d6f86b317
commit 2116fbb3c2
2 changed files with 23 additions and 18 deletions

View File

@ -7,6 +7,8 @@ pub struct Style {
pub text_color: Option<Color>,
pub background: Option<Background>,
pub border_radius: u16,
pub border_width: u16,
pub border_color: Color,
}
/// A set of rules that dictate the style of a container.
@ -23,6 +25,8 @@ impl StyleSheet for Default {
text_color: None,
background: None,
border_radius: 0,
border_width: 0,
border_color: Color::TRANSPARENT,
}
}
}

View File

@ -1,5 +1,5 @@
use crate::{container, defaults, Defaults, Primitive, Renderer};
use iced_native::{Color, Element, Layout, Point, Rectangle};
use iced_native::{Background, Color, Element, Layout, Point, Rectangle};
impl iced_native::container::Renderer for Renderer {
type Style = Box<dyn container::StyleSheet>;
@ -25,14 +25,15 @@ impl iced_native::container::Renderer for Renderer {
let (content, mouse_cursor) =
content.draw(self, &defaults, content_layout, cursor_position);
match style.background {
Some(background) => {
if style.background.is_some() || style.border_width > 0 {
let quad = Primitive::Quad {
bounds,
background,
background: style
.background
.unwrap_or(Background::Color(Color::TRANSPARENT)),
border_radius: style.border_radius,
border_width: 0,
border_color: Color::TRANSPARENT,
border_width: style.border_width,
border_color: style.border_color,
};
(
@ -41,8 +42,8 @@ impl iced_native::container::Renderer for Renderer {
},
mouse_cursor,
)
}
None => (content, mouse_cursor),
} else {
(content, mouse_cursor)
}
}
}