diff options
author | 2024-03-06 11:24:51 +0100 | |
---|---|---|
committer | 2024-03-06 11:24:51 +0100 | |
commit | 40af65c3aa4a96281db8f642cfa1641479314d27 (patch) | |
tree | 6cd41fd0bd3804a185f94b1f7d79d42f0f0537b2 /style | |
parent | a43afc791e8f78b03d802f980a10f32dc932f0b2 (diff) | |
download | iced-40af65c3aa4a96281db8f642cfa1641479314d27.tar.gz iced-40af65c3aa4a96281db8f642cfa1641479314d27.tar.bz2 iced-40af65c3aa4a96281db8f642cfa1641479314d27.zip |
Simplify theming for `Toggler` widget
Diffstat (limited to 'style')
-rw-r--r-- | style/src/lib.rs | 1 | ||||
-rw-r--r-- | style/src/theme.rs | 70 | ||||
-rw-r--r-- | style/src/toggler.rs | 35 |
3 files changed, 0 insertions, 106 deletions
diff --git a/style/src/lib.rs b/style/src/lib.rs index 09a943aa..3e439f07 100644 --- a/style/src/lib.rs +++ b/style/src/lib.rs @@ -23,6 +23,5 @@ pub mod pick_list; pub mod svg; pub mod text_editor; pub mod theme; -pub mod toggler; pub use theme::Theme; diff --git a/style/src/theme.rs b/style/src/theme.rs index a7a95ab0..993e3d68 100644 --- a/style/src/theme.rs +++ b/style/src/theme.rs @@ -10,7 +10,6 @@ use crate::pane_grid; use crate::pick_list; use crate::svg; use crate::text_editor; -use crate::toggler; use crate::core::{Background, Border, Color}; @@ -378,75 +377,6 @@ impl pick_list::StyleSheet for Theme { } } -/// The style of a toggler. -#[derive(Default)] -pub enum Toggler { - /// The default style. - #[default] - Default, - /// A custom style. - Custom(Box<dyn toggler::StyleSheet<Style = Theme>>), -} - -impl toggler::StyleSheet for Theme { - type Style = Toggler; - - fn active( - &self, - style: &Self::Style, - is_active: bool, - ) -> toggler::Appearance { - match style { - Toggler::Default => { - let palette = self.extended_palette(); - - toggler::Appearance { - background: if is_active { - palette.primary.strong.color - } else { - palette.background.strong.color - }, - background_border_width: 0.0, - background_border_color: Color::TRANSPARENT, - foreground: if is_active { - palette.primary.strong.text - } else { - palette.background.base.color - }, - foreground_border_width: 0.0, - foreground_border_color: Color::TRANSPARENT, - } - } - Toggler::Custom(custom) => custom.active(self, is_active), - } - } - - fn hovered( - &self, - style: &Self::Style, - is_active: bool, - ) -> toggler::Appearance { - match style { - Toggler::Default => { - let palette = self.extended_palette(); - - toggler::Appearance { - foreground: if is_active { - Color { - a: 0.5, - ..palette.primary.strong.text - } - } else { - palette.background.weak.color - }, - ..self.active(style, is_active) - } - } - Toggler::Custom(custom) => custom.hovered(self, is_active), - } - } -} - /// The style of a pane grid. #[derive(Default)] pub enum PaneGrid { diff --git a/style/src/toggler.rs b/style/src/toggler.rs deleted file mode 100644 index 731e87ce..00000000 --- a/style/src/toggler.rs +++ /dev/null @@ -1,35 +0,0 @@ -//! Change the appearance of a toggler. -use iced_core::Color; - -/// The appearance of a toggler. -#[derive(Debug, Clone, Copy)] -pub struct Appearance { - /// The background [`Color`] of the toggler. - pub background: Color, - /// The width of the background border of the toggler. - pub background_border_width: f32, - /// The [`Color`] of the background border of the toggler. - pub background_border_color: Color, - /// The foreground [`Color`] of the toggler. - pub foreground: Color, - /// The width of the foreground border of the toggler. - pub foreground_border_width: f32, - /// The [`Color`] of the foreground border of the toggler. - pub foreground_border_color: Color, -} - -/// A set of rules that dictate the style of a toggler. -pub trait StyleSheet { - /// The supported style of the [`StyleSheet`]. - type Style: Default; - - /// Returns the active [`Appearance`] of the toggler for the provided [`Style`]. - /// - /// [`Style`]: Self::Style - fn active(&self, style: &Self::Style, is_active: bool) -> Appearance; - - /// Returns the hovered [`Appearance`] of the toggler for the provided [`Style`]. - /// - /// [`Style`]: Self::Style - fn hovered(&self, style: &Self::Style, is_active: bool) -> Appearance; -} |