Wire up container styling to iced_native
This commit is contained in:
parent
edea093350
commit
d61cb58d92
17 changed files with 65 additions and 99 deletions
|
|
@ -13,11 +13,13 @@ use crate::{
|
|||
|
||||
use std::u32;
|
||||
|
||||
pub use iced_style::container::{Style, StyleSheet};
|
||||
|
||||
/// An element decorating some content.
|
||||
///
|
||||
/// It is normally used for alignment purposes.
|
||||
#[allow(missing_debug_implementations)]
|
||||
pub struct Container<'a, Message, Renderer: self::Renderer> {
|
||||
pub struct Container<'a, Message, Renderer> {
|
||||
padding: Padding,
|
||||
width: Length,
|
||||
height: Length,
|
||||
|
|
@ -25,13 +27,13 @@ pub struct Container<'a, Message, Renderer: self::Renderer> {
|
|||
max_height: u32,
|
||||
horizontal_alignment: alignment::Horizontal,
|
||||
vertical_alignment: alignment::Vertical,
|
||||
style: Renderer::Style,
|
||||
style: &'a dyn StyleSheet,
|
||||
content: Element<'a, Message, Renderer>,
|
||||
}
|
||||
|
||||
impl<'a, Message, Renderer> Container<'a, Message, Renderer>
|
||||
where
|
||||
Renderer: self::Renderer,
|
||||
Renderer: crate::Renderer,
|
||||
{
|
||||
/// Creates an empty [`Container`].
|
||||
pub fn new<T>(content: T) -> Self
|
||||
|
|
@ -46,7 +48,7 @@ where
|
|||
max_height: u32::MAX,
|
||||
horizontal_alignment: alignment::Horizontal::Left,
|
||||
vertical_alignment: alignment::Vertical::Top,
|
||||
style: Renderer::Style::default(),
|
||||
style: Default::default(),
|
||||
content: content.into(),
|
||||
}
|
||||
}
|
||||
|
|
@ -106,8 +108,8 @@ where
|
|||
}
|
||||
|
||||
/// Sets the style of the [`Container`].
|
||||
pub fn style(mut self, style: impl Into<Renderer::Style>) -> Self {
|
||||
self.style = style.into();
|
||||
pub fn style(mut self, style: &'a dyn StyleSheet) -> Self {
|
||||
self.style = style;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
|
@ -115,7 +117,7 @@ where
|
|||
impl<'a, Message, Renderer> Widget<Message, Renderer>
|
||||
for Container<'a, Message, Renderer>
|
||||
where
|
||||
Renderer: self::Renderer,
|
||||
Renderer: crate::Renderer,
|
||||
{
|
||||
fn width(&self) -> Length {
|
||||
self.width
|
||||
|
|
@ -211,21 +213,10 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
/// The renderer of a [`Container`].
|
||||
///
|
||||
/// Your [renderer] will need to implement this trait before being
|
||||
/// able to use a [`Container`] in your user interface.
|
||||
///
|
||||
/// [renderer]: crate::renderer
|
||||
pub trait Renderer: crate::Renderer {
|
||||
/// The style supported by this renderer.
|
||||
type Style: Default;
|
||||
}
|
||||
|
||||
impl<'a, Message, Renderer> From<Container<'a, Message, Renderer>>
|
||||
for Element<'a, Message, Renderer>
|
||||
where
|
||||
Renderer: 'a + self::Renderer,
|
||||
Renderer: 'a + crate::Renderer,
|
||||
Message: 'a,
|
||||
{
|
||||
fn from(
|
||||
|
|
|
|||
|
|
@ -27,7 +27,6 @@ pub use split::Split;
|
|||
pub use state::State;
|
||||
pub use title_bar::TitleBar;
|
||||
|
||||
use crate::container;
|
||||
use crate::event::{self, Event};
|
||||
use crate::layout;
|
||||
use crate::mouse;
|
||||
|
|
@ -318,7 +317,7 @@ pub struct ResizeEvent {
|
|||
impl<'a, Message, Renderer> Widget<Message, Renderer>
|
||||
for PaneGrid<'a, Message, Renderer>
|
||||
where
|
||||
Renderer: self::Renderer + container::Renderer,
|
||||
Renderer: self::Renderer,
|
||||
{
|
||||
fn width(&self) -> Length {
|
||||
self.width
|
||||
|
|
@ -565,7 +564,7 @@ where
|
|||
/// able to use a [`PaneGrid`] in your user interface.
|
||||
///
|
||||
/// [renderer]: crate::renderer
|
||||
pub trait Renderer: crate::Renderer + container::Renderer + Sized {
|
||||
pub trait Renderer: crate::Renderer + Sized {
|
||||
/// The style supported by this renderer.
|
||||
type Style: Default;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ use crate::{Clipboard, Element, Hasher, Layout, Point, Rectangle, Size};
|
|||
pub struct Content<'a, Message, Renderer: pane_grid::Renderer> {
|
||||
title_bar: Option<TitleBar<'a, Message, Renderer>>,
|
||||
body: Element<'a, Message, Renderer>,
|
||||
style: <Renderer as container::Renderer>::Style,
|
||||
style: &'a dyn container::StyleSheet,
|
||||
}
|
||||
|
||||
impl<'a, Message, Renderer> Content<'a, Message, Renderer>
|
||||
|
|
@ -39,11 +39,8 @@ where
|
|||
}
|
||||
|
||||
/// Sets the style of the [`Content`].
|
||||
pub fn style(
|
||||
mut self,
|
||||
style: impl Into<<Renderer as container::Renderer>::Style>,
|
||||
) -> Self {
|
||||
self.style = style.into();
|
||||
pub fn style(mut self, style: &'a dyn container::StyleSheet) -> Self {
|
||||
self.style = style;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
|
@ -217,7 +214,7 @@ where
|
|||
impl<'a, T, Message, Renderer> From<T> for Content<'a, Message, Renderer>
|
||||
where
|
||||
T: Into<Element<'a, Message, Renderer>>,
|
||||
Renderer: pane_grid::Renderer + container::Renderer,
|
||||
Renderer: pane_grid::Renderer,
|
||||
{
|
||||
fn from(element: T) -> Self {
|
||||
Self::new(element)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ pub struct TitleBar<'a, Message, Renderer: pane_grid::Renderer> {
|
|||
controls: Option<Element<'a, Message, Renderer>>,
|
||||
padding: Padding,
|
||||
always_show_controls: bool,
|
||||
style: <Renderer as container::Renderer>::Style,
|
||||
style: &'a dyn container::StyleSheet,
|
||||
}
|
||||
|
||||
impl<'a, Message, Renderer> TitleBar<'a, Message, Renderer>
|
||||
|
|
@ -54,11 +54,8 @@ where
|
|||
}
|
||||
|
||||
/// Sets the style of the [`TitleBar`].
|
||||
pub fn style(
|
||||
mut self,
|
||||
style: impl Into<<Renderer as container::Renderer>::Style>,
|
||||
) -> Self {
|
||||
self.style = style.into();
|
||||
pub fn style(mut self, style: &'a dyn container::StyleSheet) -> Self {
|
||||
self.style = style;
|
||||
self
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -122,10 +122,7 @@ impl<'a, Message, Renderer: crate::Renderer> Scrollable<'a, Message, Renderer> {
|
|||
}
|
||||
|
||||
/// Sets the style of the [`Scrollable`] .
|
||||
pub fn style<'b>(mut self, style_sheet: &'b dyn StyleSheet) -> Self
|
||||
where
|
||||
'b: 'a,
|
||||
{
|
||||
pub fn style(mut self, style_sheet: &'a dyn StyleSheet) -> Self {
|
||||
self.style_sheet = style_sheet;
|
||||
self
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ pub struct Tooltip<'a, Message, Renderer: self::Renderer> {
|
|||
content: Element<'a, Message, Renderer>,
|
||||
tooltip: Text<Renderer>,
|
||||
position: Position,
|
||||
style: <Renderer as container::Renderer>::Style,
|
||||
style: &'a dyn container::StyleSheet,
|
||||
gap: u16,
|
||||
padding: u16,
|
||||
}
|
||||
|
|
@ -70,11 +70,11 @@ where
|
|||
}
|
||||
|
||||
/// Sets the style of the [`Tooltip`].
|
||||
pub fn style(
|
||||
mut self,
|
||||
style: impl Into<<Renderer as container::Renderer>::Style>,
|
||||
) -> Self {
|
||||
self.style = style.into();
|
||||
pub fn style<'b>(mut self, style: &'b dyn container::StyleSheet) -> Self
|
||||
where
|
||||
'b: 'a,
|
||||
{
|
||||
self.style = style;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
|
@ -160,9 +160,7 @@ where
|
|||
///
|
||||
/// [`Tooltip`]: struct.Tooltip.html
|
||||
/// [renderer]: ../../renderer/index.html
|
||||
pub trait Renderer:
|
||||
crate::Renderer + text::Renderer + container::Renderer
|
||||
{
|
||||
pub trait Renderer: crate::Renderer + text::Renderer {
|
||||
/// The default padding of a [`Tooltip`] drawn by this renderer.
|
||||
const DEFAULT_PADDING: u16;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue