Sliders: use title as id if available with scroll position as fallback

This fixes the sliders in the style window
This commit is contained in:
Emil Ernerfeldt 2020-04-23 09:27:08 +02:00
parent fd8180cea4
commit b4ea51f0f9

View file

@ -260,6 +260,7 @@ pub struct Slider<'a> {
precision: usize, precision: usize,
text_color: Option<Color>, text_color: Option<Color>,
text_on_top: Option<bool>, text_on_top: Option<bool>,
id: Option<Id>,
} }
impl<'a> Slider<'a> { impl<'a> Slider<'a> {
@ -272,6 +273,7 @@ impl<'a> Slider<'a> {
precision: 3, precision: 3,
text_on_top: None, text_on_top: None,
text_color: None, text_color: None,
id: None,
} }
} }
@ -350,6 +352,10 @@ impl<'a> Widget for Slider<'a> {
let font = &region.fonts()[text_style]; let font = &region.fonts()[text_style];
if let Some(text) = &self.text { if let Some(text) = &self.text {
if self.id.is_none() {
self.id = Some(Id::new(text));
}
let text_on_top = self.text_on_top.unwrap_or_default(); let text_on_top = self.text_on_top.unwrap_or_default();
let text_color = self.text_color; let text_color = self.text_color;
let value = (self.get_set_value)(None); let value = (self.get_set_value)(None);
@ -382,7 +388,7 @@ impl<'a> Widget for Slider<'a> {
let height = font.line_spacing().max(region.style().clickable_diameter); let height = font.line_spacing().max(region.style().clickable_diameter);
let handle_radius = height / 2.5; let handle_radius = height / 2.5;
let id = region.make_position_id(); // TODO: causes problems for style settings :/ let id = self.id.unwrap_or_else(|| region.make_position_id());
let interact = region.reserve_space( let interact = region.reserve_space(
Vec2 { Vec2 {