summaryrefslogtreecommitdiffstats
path: root/widget/src/radio.rs
diff options
context:
space:
mode:
Diffstat (limited to 'widget/src/radio.rs')
-rw-r--r--widget/src/radio.rs26
1 files changed, 19 insertions, 7 deletions
diff --git a/widget/src/radio.rs b/widget/src/radio.rs
index 6b22961d..cfa961f3 100644
--- a/widget/src/radio.rs
+++ b/widget/src/radio.rs
@@ -1,5 +1,6 @@
//! Create choices using radio buttons.
use crate::core::alignment;
+use crate::core::border::{self, Border};
use crate::core::event::{self, Event};
use crate::core::layout;
use crate::core::mouse;
@@ -9,8 +10,8 @@ use crate::core::touch;
use crate::core::widget;
use crate::core::widget::tree::{self, Tree};
use crate::core::{
- Background, Border, Clipboard, Color, Element, Layout, Length, Pixels,
- Rectangle, Shell, Size, Theme, Widget,
+ Background, Clipboard, Color, Element, Layout, Length, Pixels, Rectangle,
+ Shell, Size, Theme, Widget,
};
/// A circular button representing a choice.
@@ -81,6 +82,7 @@ where
text_size: Option<Pixels>,
text_line_height: text::LineHeight,
text_shaping: text::Shaping,
+ text_wrapping: text::Wrapping,
font: Option<Renderer::Font>,
class: Theme::Class<'a>,
}
@@ -104,7 +106,7 @@ where
/// * the label of the [`Radio`] button
/// * the current selected value
/// * a function that will be called when the [`Radio`] is selected. It
- /// receives the value of the radio and must produce a `Message`.
+ /// receives the value of the radio and must produce a `Message`.
pub fn new<F, V>(
label: impl Into<String>,
value: V,
@@ -121,10 +123,11 @@ where
label: label.into(),
width: Length::Shrink,
size: Self::DEFAULT_SIZE,
- spacing: Self::DEFAULT_SPACING, //15
+ spacing: Self::DEFAULT_SPACING,
text_size: None,
text_line_height: text::LineHeight::default(),
- text_shaping: text::Shaping::Basic,
+ text_shaping: text::Shaping::default(),
+ text_wrapping: text::Wrapping::default(),
font: None,
class: Theme::default(),
}
@@ -169,6 +172,12 @@ where
self
}
+ /// Sets the [`text::Wrapping`] strategy of the [`Radio`] button.
+ pub fn text_wrapping(mut self, wrapping: text::Wrapping) -> Self {
+ self.text_wrapping = wrapping;
+ self
+ }
+
/// Sets the text font of the [`Radio`] button.
pub fn font(mut self, font: impl Into<Renderer::Font>) -> Self {
self.font = Some(font.into());
@@ -244,6 +253,7 @@ where
alignment::Horizontal::Left,
alignment::Vertical::Top,
self.text_shaping,
+ self.text_wrapping,
)
},
)
@@ -342,7 +352,7 @@ where
width: bounds.width - dot_size,
height: bounds.height - dot_size,
},
- border: Border::rounded(dot_size / 2.0),
+ border: border::rounded(dot_size / 2.0),
..renderer::Quad::default()
},
style.dot_color,
@@ -352,12 +362,14 @@ where
{
let label_layout = children.next().unwrap();
+ let state: &widget::text::State<Renderer::Paragraph> =
+ tree.state.downcast_ref();
crate::text::draw(
renderer,
defaults,
label_layout,
- tree.state.downcast_ref(),
+ state.0.raw(),
crate::text::Style {
color: style.text_color,
},