From e4ca779e436561bf48e5d34cdf554292fd4761e4 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Wed, 1 Jun 2022 02:04:23 +0200 Subject: Introduce `Custom` style variant for `Rule` --- style/src/theme.rs | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'style/src') diff --git a/style/src/theme.rs b/style/src/theme.rs index 713225e1..71a25dbe 100644 --- a/style/src/theme.rs +++ b/style/src/theme.rs @@ -284,17 +284,32 @@ impl pane_grid::StyleSheet for Theme { /* * Rule */ +#[derive(Clone, Copy)] +pub enum Rule { + Default, + Custom(fn(&Theme) -> rule::Appearance), +} + +impl Default for Rule { + fn default() -> Self { + Self::Default + } +} + impl rule::StyleSheet for Theme { - type Style = (); + type Style = Rule; - fn style(&self, _style: Self::Style) -> rule::Appearance { + fn style(&self, style: Self::Style) -> rule::Appearance { let palette = self.extended_palette(); - rule::Appearance { - color: palette.background.strong.color, - width: 1, - radius: 0.0, - fill_mode: rule::FillMode::Full, + match style { + Rule::Default => rule::Appearance { + color: palette.background.strong.color, + width: 1, + radius: 0.0, + fill_mode: rule::FillMode::Full, + }, + Rule::Custom(f) => f(self), } } } -- cgit