summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-03-18 07:10:36 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2020-03-18 07:10:36 +0100
commit50b02d41a01ad66e08045b320a30a0f5d76ee2f9 (patch)
treeb5e5847cf32d54aeae327828422d13d53b1b56bb /core
parenteba2ded88a92479bee93b727b31f5f84899339cf (diff)
downloadiced-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.rs17
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
+ }
+}