diff options
author | 2022-01-20 18:34:15 +0700 | |
---|---|---|
committer | 2022-01-20 18:34:15 +0700 | |
commit | 93285d85b0413553286f8cc48cba4036260e5be1 (patch) | |
tree | 900fa17b6d81a5dc15ffdb29507c3fe15e9c99d6 | |
parent | a3744ec97a462557ab9a3d2509f02263f425fd28 (diff) | |
download | iced-93285d85b0413553286f8cc48cba4036260e5be1.tar.gz iced-93285d85b0413553286f8cc48cba4036260e5be1.tar.bz2 iced-93285d85b0413553286f8cc48cba4036260e5be1.zip |
Remove ambiguous `text_color` attributes for `Checkbox` and `Radio`
Instead, always use a `StyleSheet`.
-rw-r--r-- | examples/scrollable/src/style.rs | 1 | ||||
-rw-r--r-- | examples/styling/src/main.rs | 3 | ||||
-rw-r--r-- | native/src/widget/checkbox.rs | 14 | ||||
-rw-r--r-- | native/src/widget/radio.rs | 30 | ||||
-rw-r--r-- | style/src/checkbox.rs | 4 | ||||
-rw-r--r-- | style/src/radio.rs | 2 |
6 files changed, 21 insertions, 33 deletions
diff --git a/examples/scrollable/src/style.rs b/examples/scrollable/src/style.rs index ec1f13db..0ed38b00 100644 --- a/examples/scrollable/src/style.rs +++ b/examples/scrollable/src/style.rs @@ -116,6 +116,7 @@ mod dark { dot_color: ACTIVE, border_width: 1.0, border_color: ACTIVE, + text_color: None, } } diff --git a/examples/styling/src/main.rs b/examples/styling/src/main.rs index 065764b3..b4ef3e87 100644 --- a/examples/styling/src/main.rs +++ b/examples/styling/src/main.rs @@ -343,6 +343,7 @@ mod style { dot_color: ACTIVE, border_width: 1.0, border_color: ACTIVE, + text_color: None, } } @@ -528,10 +529,10 @@ mod style { background: if is_checked { ACTIVE } else { SURFACE } .into(), checkmark_color: Color::WHITE, - text_color: Color::BLACK, border_radius: 2.0, border_width: 1.0, border_color: ACTIVE, + text_color: None, } } diff --git a/native/src/widget/checkbox.rs b/native/src/widget/checkbox.rs index a314140c..fff65a40 100644 --- a/native/src/widget/checkbox.rs +++ b/native/src/widget/checkbox.rs @@ -10,8 +10,8 @@ use crate::text; use crate::touch; use crate::widget::{self, Row, Text}; use crate::{ - Alignment, Clipboard, Color, Element, Hasher, Layout, Length, Point, - Rectangle, Shell, Widget, + Alignment, Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, + Shell, Widget, }; pub use iced_style::checkbox::{Style, StyleSheet}; @@ -43,7 +43,6 @@ pub struct Checkbox<'a, Message, Renderer: text::Renderer> { spacing: u16, text_size: Option<u16>, font: Renderer::Font, - text_color: Option<Color>, style_sheet: Box<dyn StyleSheet + 'a>, } @@ -75,7 +74,6 @@ impl<'a, Message, Renderer: text::Renderer> Checkbox<'a, Message, Renderer> { spacing: Self::DEFAULT_SPACING, text_size: None, font: Renderer::Font::default(), - text_color: None, style_sheet: Default::default(), } } @@ -112,12 +110,6 @@ impl<'a, Message, Renderer: text::Renderer> Checkbox<'a, Message, Renderer> { self } - /// Sets the text color of the [`Checkbox`] button. - pub fn text_color(mut self, color: Color) -> Self { - self.text_color = Some(color); - self - } - /// Sets the style of the [`Checkbox`]. pub fn style( mut self, @@ -264,7 +256,7 @@ where &self.label, self.font.clone(), self.text_size, - self.text_color.or(Some(custom_style.text_color)), + custom_style.text_color, alignment::Horizontal::Left, alignment::Vertical::Center, ); diff --git a/native/src/widget/radio.rs b/native/src/widget/radio.rs index c6cc46ed..c4992764 100644 --- a/native/src/widget/radio.rs +++ b/native/src/widget/radio.rs @@ -51,7 +51,6 @@ pub struct Radio<'a, Message, Renderer: text::Renderer> { size: u16, spacing: u16, text_size: Option<u16>, - text_color: Option<Color>, font: Renderer::Font, style_sheet: Box<dyn StyleSheet + 'a>, } @@ -92,7 +91,6 @@ where size: Self::DEFAULT_SIZE, spacing: Self::DEFAULT_SPACING, //15 text_size: None, - text_color: None, font: Default::default(), style_sheet: Default::default(), } @@ -122,12 +120,6 @@ where self } - /// Sets the text color of the [`Radio`] button. - pub fn text_color(mut self, color: Color) -> Self { - self.text_color = Some(color); - self - } - /// Sets the text font of the [`Radio`] button. pub fn font(mut self, font: Renderer::Font) -> Self { self.font = font; @@ -231,6 +223,12 @@ where let mut children = layout.children(); + let custom_style = if is_mouse_over { + self.style_sheet.hovered() + } else { + self.style_sheet.active() + }; + { let layout = children.next().unwrap(); let bounds = layout.bounds(); @@ -238,20 +236,14 @@ where let size = bounds.width; let dot_size = size / 2.0; - let style = if is_mouse_over { - self.style_sheet.hovered() - } else { - self.style_sheet.active() - }; - renderer.fill_quad( renderer::Quad { bounds, border_radius: size / 2.0, - border_width: style.border_width, - border_color: style.border_color, + border_width: custom_style.border_width, + border_color: custom_style.border_color, }, - style.background, + custom_style.background, ); if self.is_selected { @@ -267,7 +259,7 @@ where border_width: 0.0, border_color: Color::TRANSPARENT, }, - style.dot_color, + custom_style.dot_color, ); } } @@ -282,7 +274,7 @@ where &self.label, self.font.clone(), self.text_size, - self.text_color, + custom_style.text_color, alignment::Horizontal::Left, alignment::Vertical::Center, ); diff --git a/style/src/checkbox.rs b/style/src/checkbox.rs index 77aae42b..de52e548 100644 --- a/style/src/checkbox.rs +++ b/style/src/checkbox.rs @@ -6,10 +6,10 @@ use iced_core::{Background, Color}; pub struct Style { pub background: Background, pub checkmark_color: Color, - pub text_color: Color, pub border_radius: f32, pub border_width: f32, pub border_color: Color, + pub text_color: Option<Color>, } /// A set of rules that dictate the style of a checkbox. @@ -26,10 +26,10 @@ impl StyleSheet for Default { Style { background: Background::Color(Color::from_rgb(0.95, 0.95, 0.95)), checkmark_color: Color::from_rgb(0.3, 0.3, 0.3), - text_color: Color::BLACK, border_radius: 5.0, border_width: 1.0, border_color: Color::from_rgb(0.6, 0.6, 0.6), + text_color: None, } } diff --git a/style/src/radio.rs b/style/src/radio.rs index 6fb1cb6c..dab76ad8 100644 --- a/style/src/radio.rs +++ b/style/src/radio.rs @@ -8,6 +8,7 @@ pub struct Style { pub dot_color: Color, pub border_width: f32, pub border_color: Color, + pub text_color: Option<Color>, } /// A set of rules that dictate the style of a radio button. @@ -26,6 +27,7 @@ impl StyleSheet for Default { dot_color: Color::from_rgb(0.3, 0.3, 0.3), border_width: 1.0, border_color: Color::from_rgb(0.6, 0.6, 0.6), + text_color: None, } } |