#[allow(clippy::struct_excessive_bools)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub struct Response {
pub(crate) hovered: bool,
pub(crate) pressed: bool,
pub(crate) released: bool,
pub(crate) clicked: bool,
pub(crate) held: bool,
pub(crate) dragging: bool,
pub(crate) focused: bool,
pub(crate) secondary_clicked: bool,
pub(crate) scroll_delta: i32,
}
impl Response {
#[must_use]
pub const fn hovered(&self) -> bool {
self.hovered
}
#[must_use]
pub const fn pressed(&self) -> bool {
self.pressed
}
#[must_use]
pub const fn released(&self) -> bool {
self.released
}
#[must_use]
pub const fn clicked(&self) -> bool {
self.clicked
}
#[must_use]
pub const fn held(&self) -> bool {
self.held
}
#[must_use]
pub const fn dragging(&self) -> bool {
self.dragging
}
#[must_use]
pub const fn focused(&self) -> bool {
self.focused
}
#[must_use]
pub const fn secondary_clicked(&self) -> bool {
self.secondary_clicked
}
#[must_use]
pub const fn scroll_delta(&self) -> i32 {
self.scroll_delta
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_is_all_falsy() {
let r = Response::default();
assert!(!r.hovered());
assert!(!r.pressed());
assert!(!r.released());
assert!(!r.clicked());
assert!(!r.held());
assert!(!r.dragging());
assert!(!r.focused());
assert!(!r.secondary_clicked());
assert_eq!(r.scroll_delta(), 0);
}
}