mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
Add option for a hovered and checked background
This commit is contained in:
parent
5323bb3ce8
commit
f27a7853a3
@ -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<image::Handle> { 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<image::Handle> { self.checked }
|
||||
|
||||
pub fn hovered(&self) -> Option<image::Handle> { self.background.as_ref().map(|b| b.hover) }
|
||||
pub fn bg_check(&self) -> Option<image::Handle> { self.background.as_ref().map(|b| b.press) }
|
||||
|
||||
pub fn background(&self) -> Option<image::Handle> {
|
||||
pub fn bg_hover(&self) -> Option<image::Handle> { self.background.as_ref().map(|b| b.hover) }
|
||||
|
||||
pub fn bg_hover_check(&self) -> Option<image::Handle> {
|
||||
self.background.as_ref().map(|b| b.hover_checked)
|
||||
}
|
||||
|
||||
pub fn bg_default(&self) -> Option<image::Handle> {
|
||||
self.background.as_ref().map(|b| b.default)
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user