Remove ambiguous text_color attributes for Checkbox and Radio
Instead, always use a `StyleSheet`.
This commit is contained in:
parent
a3744ec97a
commit
93285d85b0
6 changed files with 21 additions and 33 deletions
|
|
@ -116,6 +116,7 @@ mod dark {
|
||||||
dot_color: ACTIVE,
|
dot_color: ACTIVE,
|
||||||
border_width: 1.0,
|
border_width: 1.0,
|
||||||
border_color: ACTIVE,
|
border_color: ACTIVE,
|
||||||
|
text_color: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -343,6 +343,7 @@ mod style {
|
||||||
dot_color: ACTIVE,
|
dot_color: ACTIVE,
|
||||||
border_width: 1.0,
|
border_width: 1.0,
|
||||||
border_color: ACTIVE,
|
border_color: ACTIVE,
|
||||||
|
text_color: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -528,10 +529,10 @@ mod style {
|
||||||
background: if is_checked { ACTIVE } else { SURFACE }
|
background: if is_checked { ACTIVE } else { SURFACE }
|
||||||
.into(),
|
.into(),
|
||||||
checkmark_color: Color::WHITE,
|
checkmark_color: Color::WHITE,
|
||||||
text_color: Color::BLACK,
|
|
||||||
border_radius: 2.0,
|
border_radius: 2.0,
|
||||||
border_width: 1.0,
|
border_width: 1.0,
|
||||||
border_color: ACTIVE,
|
border_color: ACTIVE,
|
||||||
|
text_color: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ use crate::text;
|
||||||
use crate::touch;
|
use crate::touch;
|
||||||
use crate::widget::{self, Row, Text};
|
use crate::widget::{self, Row, Text};
|
||||||
use crate::{
|
use crate::{
|
||||||
Alignment, Clipboard, Color, Element, Hasher, Layout, Length, Point,
|
Alignment, Clipboard, Element, Hasher, Layout, Length, Point, Rectangle,
|
||||||
Rectangle, Shell, Widget,
|
Shell, Widget,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub use iced_style::checkbox::{Style, StyleSheet};
|
pub use iced_style::checkbox::{Style, StyleSheet};
|
||||||
|
|
@ -43,7 +43,6 @@ pub struct Checkbox<'a, Message, Renderer: text::Renderer> {
|
||||||
spacing: u16,
|
spacing: u16,
|
||||||
text_size: Option<u16>,
|
text_size: Option<u16>,
|
||||||
font: Renderer::Font,
|
font: Renderer::Font,
|
||||||
text_color: Option<Color>,
|
|
||||||
style_sheet: Box<dyn StyleSheet + 'a>,
|
style_sheet: Box<dyn StyleSheet + 'a>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -75,7 +74,6 @@ impl<'a, Message, Renderer: text::Renderer> Checkbox<'a, Message, Renderer> {
|
||||||
spacing: Self::DEFAULT_SPACING,
|
spacing: Self::DEFAULT_SPACING,
|
||||||
text_size: None,
|
text_size: None,
|
||||||
font: Renderer::Font::default(),
|
font: Renderer::Font::default(),
|
||||||
text_color: None,
|
|
||||||
style_sheet: Default::default(),
|
style_sheet: Default::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -112,12 +110,6 @@ impl<'a, Message, Renderer: text::Renderer> Checkbox<'a, Message, Renderer> {
|
||||||
self
|
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`].
|
/// Sets the style of the [`Checkbox`].
|
||||||
pub fn style(
|
pub fn style(
|
||||||
mut self,
|
mut self,
|
||||||
|
|
@ -264,7 +256,7 @@ where
|
||||||
&self.label,
|
&self.label,
|
||||||
self.font.clone(),
|
self.font.clone(),
|
||||||
self.text_size,
|
self.text_size,
|
||||||
self.text_color.or(Some(custom_style.text_color)),
|
custom_style.text_color,
|
||||||
alignment::Horizontal::Left,
|
alignment::Horizontal::Left,
|
||||||
alignment::Vertical::Center,
|
alignment::Vertical::Center,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,6 @@ pub struct Radio<'a, Message, Renderer: text::Renderer> {
|
||||||
size: u16,
|
size: u16,
|
||||||
spacing: u16,
|
spacing: u16,
|
||||||
text_size: Option<u16>,
|
text_size: Option<u16>,
|
||||||
text_color: Option<Color>,
|
|
||||||
font: Renderer::Font,
|
font: Renderer::Font,
|
||||||
style_sheet: Box<dyn StyleSheet + 'a>,
|
style_sheet: Box<dyn StyleSheet + 'a>,
|
||||||
}
|
}
|
||||||
|
|
@ -92,7 +91,6 @@ where
|
||||||
size: Self::DEFAULT_SIZE,
|
size: Self::DEFAULT_SIZE,
|
||||||
spacing: Self::DEFAULT_SPACING, //15
|
spacing: Self::DEFAULT_SPACING, //15
|
||||||
text_size: None,
|
text_size: None,
|
||||||
text_color: None,
|
|
||||||
font: Default::default(),
|
font: Default::default(),
|
||||||
style_sheet: Default::default(),
|
style_sheet: Default::default(),
|
||||||
}
|
}
|
||||||
|
|
@ -122,12 +120,6 @@ where
|
||||||
self
|
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.
|
/// Sets the text font of the [`Radio`] button.
|
||||||
pub fn font(mut self, font: Renderer::Font) -> Self {
|
pub fn font(mut self, font: Renderer::Font) -> Self {
|
||||||
self.font = font;
|
self.font = font;
|
||||||
|
|
@ -231,6 +223,12 @@ where
|
||||||
|
|
||||||
let mut children = layout.children();
|
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 layout = children.next().unwrap();
|
||||||
let bounds = layout.bounds();
|
let bounds = layout.bounds();
|
||||||
|
|
@ -238,20 +236,14 @@ where
|
||||||
let size = bounds.width;
|
let size = bounds.width;
|
||||||
let dot_size = size / 2.0;
|
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.fill_quad(
|
||||||
renderer::Quad {
|
renderer::Quad {
|
||||||
bounds,
|
bounds,
|
||||||
border_radius: size / 2.0,
|
border_radius: size / 2.0,
|
||||||
border_width: style.border_width,
|
border_width: custom_style.border_width,
|
||||||
border_color: style.border_color,
|
border_color: custom_style.border_color,
|
||||||
},
|
},
|
||||||
style.background,
|
custom_style.background,
|
||||||
);
|
);
|
||||||
|
|
||||||
if self.is_selected {
|
if self.is_selected {
|
||||||
|
|
@ -267,7 +259,7 @@ where
|
||||||
border_width: 0.0,
|
border_width: 0.0,
|
||||||
border_color: Color::TRANSPARENT,
|
border_color: Color::TRANSPARENT,
|
||||||
},
|
},
|
||||||
style.dot_color,
|
custom_style.dot_color,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -282,7 +274,7 @@ where
|
||||||
&self.label,
|
&self.label,
|
||||||
self.font.clone(),
|
self.font.clone(),
|
||||||
self.text_size,
|
self.text_size,
|
||||||
self.text_color,
|
custom_style.text_color,
|
||||||
alignment::Horizontal::Left,
|
alignment::Horizontal::Left,
|
||||||
alignment::Vertical::Center,
|
alignment::Vertical::Center,
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,10 @@ use iced_core::{Background, Color};
|
||||||
pub struct Style {
|
pub struct Style {
|
||||||
pub background: Background,
|
pub background: Background,
|
||||||
pub checkmark_color: Color,
|
pub checkmark_color: Color,
|
||||||
pub text_color: Color,
|
|
||||||
pub border_radius: f32,
|
pub border_radius: f32,
|
||||||
pub border_width: f32,
|
pub border_width: f32,
|
||||||
pub border_color: Color,
|
pub border_color: Color,
|
||||||
|
pub text_color: Option<Color>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A set of rules that dictate the style of a checkbox.
|
/// A set of rules that dictate the style of a checkbox.
|
||||||
|
|
@ -26,10 +26,10 @@ impl StyleSheet for Default {
|
||||||
Style {
|
Style {
|
||||||
background: Background::Color(Color::from_rgb(0.95, 0.95, 0.95)),
|
background: Background::Color(Color::from_rgb(0.95, 0.95, 0.95)),
|
||||||
checkmark_color: Color::from_rgb(0.3, 0.3, 0.3),
|
checkmark_color: Color::from_rgb(0.3, 0.3, 0.3),
|
||||||
text_color: Color::BLACK,
|
|
||||||
border_radius: 5.0,
|
border_radius: 5.0,
|
||||||
border_width: 1.0,
|
border_width: 1.0,
|
||||||
border_color: Color::from_rgb(0.6, 0.6, 0.6),
|
border_color: Color::from_rgb(0.6, 0.6, 0.6),
|
||||||
|
text_color: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ pub struct Style {
|
||||||
pub dot_color: Color,
|
pub dot_color: Color,
|
||||||
pub border_width: f32,
|
pub border_width: f32,
|
||||||
pub border_color: Color,
|
pub border_color: Color,
|
||||||
|
pub text_color: Option<Color>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A set of rules that dictate the style of a radio button.
|
/// 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),
|
dot_color: Color::from_rgb(0.3, 0.3, 0.3),
|
||||||
border_width: 1.0,
|
border_width: 1.0,
|
||||||
border_color: Color::from_rgb(0.6, 0.6, 0.6),
|
border_color: Color::from_rgb(0.6, 0.6, 0.6),
|
||||||
|
text_color: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue