diff options
author | 2020-03-18 07:10:36 +0100 | |
---|---|---|
committer | 2020-03-18 07:10:36 +0100 | |
commit | 50b02d41a01ad66e08045b320a30a0f5d76ee2f9 (patch) | |
tree | b5e5847cf32d54aeae327828422d13d53b1b56bb /core | |
parent | eba2ded88a92479bee93b727b31f5f84899339cf (diff) | |
download | iced-50b02d41a01ad66e08045b320a30a0f5d76ee2f9.tar.gz iced-50b02d41a01ad66e08045b320a30a0f5d76ee2f9.tar.bz2 iced-50b02d41a01ad66e08045b320a30a0f5d76ee2f9.zip |
Check only for partial match of modifier keys
Diffstat (limited to 'core')
-rw-r--r-- | core/src/keyboard/modifiers_state.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/core/src/keyboard/modifiers_state.rs b/core/src/keyboard/modifiers_state.rs index 3058c065..0cfc6d69 100644 --- a/core/src/keyboard/modifiers_state.rs +++ b/core/src/keyboard/modifiers_state.rs @@ -1,5 +1,5 @@ /// The current state of the keyboard modifiers. -#[derive(Debug, Clone, Copy, PartialEq, Default)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)] pub struct ModifiersState { /// Whether a shift key is pressed pub shift: bool, @@ -13,3 +13,18 @@ pub struct ModifiersState { /// Whether a logo key is pressed (e.g. windows key, command key...) pub logo: bool, } + +impl ModifiersState { + /// Returns true if the current [`ModifiersState`] has at least the same + /// modifiers enabled as the given value, and false otherwise. + /// + /// [`ModifiersState`]: struct.ModifiersState.html + pub fn matches(&self, modifiers: ModifiersState) -> bool { + let shift = !modifiers.shift || modifiers.shift && self.shift; + let control = !modifiers.control || modifiers.control && self.control; + let alt = !modifiers.alt || modifiers.alt && self.alt; + let logo = !modifiers.logo || modifiers.logo && self.logo; + + shift && control && alt && logo + } +} |