From f27a7853a3ba9e28ea0f50ee444355c4b92151f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Capucho?= Date: Fri, 10 Sep 2021 21:44:27 +0100 Subject: [PATCH] Add option for a hovered and checked background --- voxygen/src/ui/ice/renderer/style/checkbox.rs | 23 ++++++++++++++++--- .../src/ui/ice/renderer/widget/checkbox.rs | 9 ++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/voxygen/src/ui/ice/renderer/style/checkbox.rs b/voxygen/src/ui/ice/renderer/style/checkbox.rs index 943d44fe5f..ec6f54f768 100644 --- a/voxygen/src/ui/ice/renderer/style/checkbox.rs +++ b/voxygen/src/ui/ice/renderer/style/checkbox.rs @@ -5,6 +5,7 @@ struct Background { default: image::Handle, hover: image::Handle, press: image::Handle, + hover_checked: image::Handle, } impl Background { @@ -13,6 +14,7 @@ impl Background { default: image, hover: image, press: image, + hover_checked: image, } } } @@ -53,13 +55,28 @@ impl Style { self } - pub fn pressed(&self) -> Option { self.background.as_ref().map(|b| b.press) } + pub fn hover_checked_image(mut self, image: image::Handle) -> Self { + self.background = Some(match self.background { + Some(mut background) => { + background.hover_checked = image; + background + }, + None => Background::new(image), + }); + self + } pub fn checked(&self) -> Option { self.checked } - pub fn hovered(&self) -> Option { self.background.as_ref().map(|b| b.hover) } + pub fn bg_check(&self) -> Option { self.background.as_ref().map(|b| b.press) } - pub fn background(&self) -> Option { + pub fn bg_hover(&self) -> Option { self.background.as_ref().map(|b| b.hover) } + + pub fn bg_hover_check(&self) -> Option { + self.background.as_ref().map(|b| b.hover_checked) + } + + pub fn bg_default(&self) -> Option { self.background.as_ref().map(|b| b.default) } } diff --git a/voxygen/src/ui/ice/renderer/widget/checkbox.rs b/voxygen/src/ui/ice/renderer/widget/checkbox.rs index 7b51e83ad6..bddcfe609e 100644 --- a/voxygen/src/ui/ice/renderer/widget/checkbox.rs +++ b/voxygen/src/ui/ice/renderer/widget/checkbox.rs @@ -22,9 +22,10 @@ impl checkbox::Renderer for IcedRenderer { }; let background_image = match (is_checked, is_mouse_over) { - (true, _) => style.pressed(), - (_, true) => style.hovered(), - _ => style.background(), + (true, true) => style.bg_hover_check(), + (true, false) => style.bg_check(), + (false, true) => style.bg_hover(), + (false, false) => style.bg_default(), }; let background = background_image @@ -40,7 +41,7 @@ impl checkbox::Renderer for IcedRenderer { Primitive::Group { primitives: if is_checked { let check = style - .pressed() + .checked() .map(|image| Primitive::Image { handle: (image, Rotation::None), bounds,