diff options
author | 2023-05-16 16:12:29 +0100 | |
---|---|---|
committer | 2023-05-16 16:12:29 +0100 | |
commit | 99aa54cd88d7eb99149699d539ee4d59e08047b1 (patch) | |
tree | acf92d0abab84919f0dc660aa234c824a2f96632 /style | |
parent | 8e8b1e1eacc4e2c19c9878625f423c8e09e2d3b9 (diff) | |
download | iced-99aa54cd88d7eb99149699d539ee4d59e08047b1.tar.gz iced-99aa54cd88d7eb99149699d539ee4d59e08047b1.tar.bz2 iced-99aa54cd88d7eb99149699d539ee4d59e08047b1.zip |
Add pane_grid functionality to split a pane with another pane
Diffstat (limited to 'style')
-rw-r--r-- | style/src/pane_grid.rs | 18 | ||||
-rw-r--r-- | style/src/theme.rs | 19 |
2 files changed, 36 insertions, 1 deletions
diff --git a/style/src/pane_grid.rs b/style/src/pane_grid.rs index fd8fc05f..ec422e86 100644 --- a/style/src/pane_grid.rs +++ b/style/src/pane_grid.rs @@ -1,11 +1,14 @@ //! Change the appearance of a pane grid. -use iced_core::Color; +use iced_core::{Background, Color}; /// A set of rules that dictate the style of a container. pub trait StyleSheet { /// The supported style of the [`StyleSheet`]. type Style: Default; + /// The [`Region`] to draw when a pane is hovered. + fn hovered_region(&self, style: &Self::Style) -> Region; + /// The [`Line`] to draw when a split is picked. fn picked_split(&self, style: &Self::Style) -> Option<Line>; @@ -13,6 +16,19 @@ pub trait StyleSheet { fn hovered_split(&self, style: &Self::Style) -> Option<Line>; } +/// The appearance of the hovered region of a pane grid. +#[derive(Debug, Clone, Copy)] +pub struct Region { + /// The [`Background`] of the hovered pane region. + pub background: Background, + /// The border width of the hovered pane region. + pub border_width: f32, + /// The border [`Color`] of the hovered pane region. + pub border_color: Color, + /// The border radius of the hovered pane region. + pub border_radius: f32, +} + /// A line. /// /// It is normally used to define the highlight of something, like a split. diff --git a/style/src/theme.rs b/style/src/theme.rs index d9893bcf..c7b2bada 100644 --- a/style/src/theme.rs +++ b/style/src/theme.rs @@ -703,6 +703,25 @@ pub enum PaneGrid { impl pane_grid::StyleSheet for Theme { type Style = PaneGrid; + fn hovered_region(&self, style: &Self::Style) -> pane_grid::Region { + match style { + PaneGrid::Default => { + let palette = self.extended_palette(); + + pane_grid::Region { + background: Background::Color(Color { + a: 0.5, + ..palette.primary.base.color + }), + border_width: 2.0, + border_color: palette.primary.strong.color, + border_radius: 0.0, + } + } + PaneGrid::Custom(custom) => custom.hovered_region(self), + } + } + fn picked_split(&self, style: &Self::Style) -> Option<pane_grid::Line> { match style { PaneGrid::Default => { |