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 {