From 99aa54cd88d7eb99149699d539ee4d59e08047b1 Mon Sep 17 00:00:00 2001 From: Joao Freitas <51237625+jhff@users.noreply.github.com> Date: Tue, 16 May 2023 16:12:29 +0100 Subject: Add pane_grid functionality to split a pane with another pane --- style/src/pane_grid.rs | 18 +++++++++++++++++- style/src/theme.rs | 19 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) (limited to 'style/src') 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; @@ -13,6 +16,19 @@ pub trait StyleSheet { fn hovered_split(&self, style: &Self::Style) -> Option; } +/// 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 { match style { PaneGrid::Default => { -- cgit From 0cb84c1c4cc128f8260054192b4f7798de52a82a Mon Sep 17 00:00:00 2001 From: Joao Freitas <51237625+jhff@users.noreply.github.com> Date: Wed, 17 May 2023 15:30:35 +0100 Subject: Change name of hovered region style struct, reorder lines & export Appearance --- style/src/pane_grid.rs | 32 ++++++++++++++++---------------- style/src/theme.rs | 4 ++-- 2 files changed, 18 insertions(+), 18 deletions(-) (limited to 'style/src') diff --git a/style/src/pane_grid.rs b/style/src/pane_grid.rs index ec422e86..c1002725 100644 --- a/style/src/pane_grid.rs +++ b/style/src/pane_grid.rs @@ -1,24 +1,9 @@ //! Change the appearance of a pane grid. 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; - - /// The [`Line`] to draw when a split is hovered. - fn hovered_split(&self, style: &Self::Style) -> Option; -} - /// The appearance of the hovered region of a pane grid. #[derive(Debug, Clone, Copy)] -pub struct Region { +pub struct Appearance { /// The [`Background`] of the hovered pane region. pub background: Background, /// The border width of the hovered pane region. @@ -40,3 +25,18 @@ pub struct Line { /// The width of the [`Line`]. pub width: f32, } + +/// 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) -> Appearance; + + /// The [`Line`] to draw when a split is picked. + fn picked_split(&self, style: &Self::Style) -> Option; + + /// The [`Line`] to draw when a split is hovered. + fn hovered_split(&self, style: &Self::Style) -> Option; +} diff --git a/style/src/theme.rs b/style/src/theme.rs index c7b2bada..8a7be72c 100644 --- a/style/src/theme.rs +++ b/style/src/theme.rs @@ -703,12 +703,12 @@ pub enum PaneGrid { impl pane_grid::StyleSheet for Theme { type Style = PaneGrid; - fn hovered_region(&self, style: &Self::Style) -> pane_grid::Region { + fn hovered_region(&self, style: &Self::Style) -> pane_grid::Appearance { match style { PaneGrid::Default => { let palette = self.extended_palette(); - pane_grid::Region { + pane_grid::Appearance { background: Background::Color(Color { a: 0.5, ..palette.primary.base.color -- cgit