diff --git a/wayvr/src/assets/gui/keyboard.xml b/wayvr/src/assets/gui/keyboard.xml index 79665817..ee0bb16c 100644 --- a/wayvr/src/assets/gui/keyboard.xml +++ b/wayvr/src/assets/gui/keyboard.xml @@ -130,7 +130,7 @@ @@ -163,7 +163,7 @@ @@ -192,7 +192,7 @@ diff --git a/wayvr/src/assets/gui/watch.xml b/wayvr/src/assets/gui/watch.xml index 72e531cb..584c481c 100644 --- a/wayvr/src/assets/gui/watch.xml +++ b/wayvr/src/assets/gui/watch.xml @@ -38,7 +38,7 @@ @@ -51,7 +51,7 @@ @@ -65,7 +65,7 @@ diff --git a/wgui/src/components/button.rs b/wgui/src/components/button.rs index d3058b54..ec104caa 100644 --- a/wgui/src/components/button.rs +++ b/wgui/src/components/button.rs @@ -166,7 +166,12 @@ impl ComponentTrait for ComponentButton { state: &data.layout.state, alterables: &mut data.layout.alterables, }; - widget.set_color(common, fg_color, true); + let label_color = if widget.uses_bg_color() { + state.colors.color + } else { + fg_color + }; + widget.set_color(common, label_color, true); } state.id_label = child; } @@ -218,7 +223,8 @@ impl ComponentButton { if let Some(fg_color) = color.fg_color() { if let Some(mut label) = common.state.widgets.get_as::(state.id_label) { - label.set_color(common, fg_color, true); + let label_color = if label.uses_bg_color() { color } else { fg_color }; + label.set_color(common, label_color, true); } if let Some(mut sprite) = common.state.widgets.get_as::(state.id_sprite) { sprite.set_color(common, fg_color); @@ -279,10 +285,10 @@ impl ComponentButton { }; { - let bgcolor = colors.color.lerp(&common.globals().palette, alt_color, mult); + let bg_color = colors.color.lerp(&common.globals().palette, alt_color, mult); - rect.params.color = bgcolor; - rect.params.color2 = get_color2(&bgcolor, gradient_intensity); + rect.params.color = bg_color; + rect.params.color2 = get_color2(&bg_color, gradient_intensity); rect.params.border_color = colors .border_color .lerp(&common.globals().palette, alt_border_color, mult); @@ -292,7 +298,8 @@ impl ComponentButton { { let fg_color = fg_color0.lerp(&common.globals().palette, &fg_color1, mult); if let Some(mut label) = common.state.widgets.get_as::(state.id_label) { - label.set_color(common, fg_color, true); + let label_color = if label.uses_bg_color() { bg_color } else { fg_color }; + label.set_color(common, label_color, true); } if let Some(mut sprite) = common.state.widgets.get_as::(state.id_sprite) { sprite.set_color(common, fg_color); @@ -328,12 +335,15 @@ fn anim_hover( (colors.border_color, colors.color) }; + let bg_color = init_color.lerp(&common.globals().palette, &colors.hover_color, mult); + if let Some(fg_color0) = init_color.fg_color() && let Some(fg_color1) = colors.hover_color.fg_color() { let fg_color = fg_color0.lerp(&common.globals().palette, &fg_color1, mult); if let Some(mut label) = common.state.widgets.get_as::(label) { - label.set_color(common, fg_color, true); + let label_color = if label.uses_bg_color() { bg_color } else { fg_color }; + label.set_color(common, label_color, true); } if let Some(mut sprite) = common.state.widgets.get_as::(sprite) { sprite.set_color(common, fg_color); @@ -342,8 +352,6 @@ fn anim_hover( let globals = common.globals(); - let bgcolor = init_color.lerp(&globals.palette, &colors.hover_color, mult); - let gradient_intensity = common.state.theme.gradient_intensity; //let t = Mat4::from_scale(Vec3::splat(1.0 + pos * 0.5)) * Mat4::from_rotation_z(pos * 1.0); @@ -351,8 +359,8 @@ fn anim_hover( let t = Mat4::from_scale(Vec3::splat(1.0 + pos * 0.05)); widget_data.transform = centered_matrix(widget_boundary.size, &t); - rect.params.color = bgcolor; - rect.params.color2 = get_color2(&bgcolor, gradient_intensity); + rect.params.color = bg_color; + rect.params.color2 = get_color2(&bg_color, gradient_intensity); rect.params.border_color = init_border_color.lerp(&globals.palette, &colors.hover_border_color, mult); } diff --git a/wgui/src/widget/label.rs b/wgui/src/widget/label.rs index c54ba402..903efb34 100644 --- a/wgui/src/widget/label.rs +++ b/wgui/src/widget/label.rs @@ -120,18 +120,16 @@ impl WidgetLabel { } pub fn set_color(&mut self, common: &mut CallbackDataCommon, color: WguiColor, apply_to_existing_text: bool) { - if self.params.use_bg_color { - if let Some(bg_color) = color.bg_color() { - self.params.style.color = Some(bg_color); - } - } else { - self.params.style.color = Some(color); - } + self.params.style.color = Some(color); if apply_to_existing_text { self.update_attrs(&common.globals().palette); common.mark_widget_dirty(self.id); } } + + pub fn uses_bg_color(&self) -> bool { + self.params.use_bg_color + } } impl WidgetObj for WidgetLabel {