Skip to content

Commit cdc30a9

Browse files
Bishops-exeorhun
andauthored
feat: add MouseEventKind::get_button() (#1111)
* feat: add `MouseEventKind::get_button()` * style: fix formatting Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com> * docs: Document `get_button` method for `MouseEventKind` * Rename get_button to button in MouseEventKind --------- Co-authored-by: Bishops-exe <Bishops-exe@users.noreply.github.com> Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
1 parent 34636cf commit cdc30a9

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

src/event.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,21 @@ pub enum MouseEventKind {
799799
ScrollRight,
800800
}
801801

802+
impl MouseEventKind {
803+
/// Returns the mouse button connected with the event.
804+
///
805+
/// This will return `Some(MouseButton)` for `Down`, `Up`, and `Drag` events.
806+
/// For other events, like `Moved` or `Scroll...`, it returns `None`.
807+
pub fn button(&self) -> Option<MouseButton> {
808+
match self {
809+
MouseEventKind::Down(button)
810+
| MouseEventKind::Up(button)
811+
| MouseEventKind::Drag(button) => Some(*button),
812+
_ => None,
813+
}
814+
}
815+
}
816+
802817
/// Represents a mouse button.
803818
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
804819
#[cfg_attr(feature = "derive-more", derive(IsVariant))]
@@ -1708,4 +1723,19 @@ mod tests {
17081723
assert_eq!(event.as_key_event(), None);
17091724
}
17101725
}
1726+
1727+
#[test]
1728+
fn event_button() {
1729+
let event = MouseEventKind::Down(MouseButton::Left);
1730+
assert_eq!(event.button(), Some(MouseButton::Left));
1731+
1732+
let event = MouseEventKind::Up(MouseButton::Right);
1733+
assert_eq!(event.button(), Some(MouseButton::Right));
1734+
1735+
let event = MouseEventKind::Drag(MouseButton::Middle);
1736+
assert_eq!(event.button(), Some(MouseButton::Middle));
1737+
1738+
let event = MouseEventKind::Moved;
1739+
assert_eq!(event.button(), None);
1740+
}
17111741
}

0 commit comments

Comments
 (0)