From e4ca779e436561bf48e5d34cdf554292fd4761e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Wed, 1 Jun 2022 02:04:23 +0200 Subject: [PATCH] Introduce `Custom` style variant for `Rule` --- style/src/theme.rs | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) 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 */ -impl rule::StyleSheet for Theme { - type Style = (); +#[derive(Clone, Copy)] +pub enum Rule { + Default, + Custom(fn(&Theme) -> rule::Appearance), +} - fn style(&self, _style: Self::Style) -> rule::Appearance { +impl Default for Rule { + fn default() -> Self { + Self::Default + } +} + +impl rule::StyleSheet for Theme { + type Style = Rule; + + 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), } } }