diff options
author | 2022-06-01 01:44:59 +0200 | |
---|---|---|
committer | 2022-06-01 01:46:14 +0200 | |
commit | 6f69df3d415bfc922ce15539746026843bd410e6 (patch) | |
tree | 8683025be83c085aa5363d8927e46b7aa4d22694 /style | |
parent | a206d22670eda60d6364444f690633dc11e75a41 (diff) | |
download | iced-6f69df3d415bfc922ce15539746026843bd410e6.tar.gz iced-6f69df3d415bfc922ce15539746026843bd410e6.tar.bz2 iced-6f69df3d415bfc922ce15539746026843bd410e6.zip |
Implement theme styling for `PaneGrid`
Diffstat (limited to 'style')
-rw-r--r-- | style/src/pane_grid.rs | 33 | ||||
-rw-r--r-- | style/src/theme.rs | 26 |
2 files changed, 30 insertions, 29 deletions
diff --git a/style/src/pane_grid.rs b/style/src/pane_grid.rs index a12ac3f5..5bae353f 100644 --- a/style/src/pane_grid.rs +++ b/style/src/pane_grid.rs @@ -4,11 +4,13 @@ use iced_core::Color; /// A set of rules that dictate the style of a container. pub trait StyleSheet { + type Style: Default + Copy; + /// The [`Line`] to draw when a split is picked. - fn picked_split(&self) -> Option<Line>; + fn picked_split(&self, style: Self::Style) -> Option<Line>; /// The [`Line`] to draw when a split is hovered. - fn hovered_split(&self) -> Option<Line>; + fn hovered_split(&self, style: Self::Style) -> Option<Line>; } /// A line. @@ -22,30 +24,3 @@ pub struct Line { /// The width of the [`Line`]. pub width: f32, } - -struct Default; - -impl StyleSheet for Default { - fn picked_split(&self) -> Option<Line> { - None - } - - fn hovered_split(&self) -> Option<Line> { - None - } -} - -impl<'a> std::default::Default for Box<dyn StyleSheet + 'a> { - fn default() -> Self { - Box::new(Default) - } -} - -impl<'a, T> From<T> for Box<dyn StyleSheet + 'a> -where - T: StyleSheet + 'a, -{ - fn from(style_sheet: T) -> Self { - Box::new(style_sheet) - } -} diff --git a/style/src/theme.rs b/style/src/theme.rs index 2f9fd4fa..71330c2e 100644 --- a/style/src/theme.rs +++ b/style/src/theme.rs @@ -4,6 +4,7 @@ pub use self::palette::Palette; use crate::application; use crate::button; +use crate::pane_grid; use crate::radio; use crate::slider; use crate::toggler; @@ -253,3 +254,28 @@ impl toggler::StyleSheet for Theme { } } } + +/* + * Pane Grid + */ +impl pane_grid::StyleSheet for Theme { + type Style = (); + + fn picked_split(&self, _style: Self::Style) -> Option<pane_grid::Line> { + let palette = self.extended_palette(); + + Some(pane_grid::Line { + color: palette.primary.strong.color, + width: 2.0, + }) + } + + fn hovered_split(&self, _style: Self::Style) -> Option<pane_grid::Line> { + let palette = self.extended_palette(); + + Some(pane_grid::Line { + color: palette.primary.base.color, + width: 2.0, + }) + } +} |