Commit ff8e482 1 parent 268a63f commit ff8e482 Copy full SHA for ff8e482
File tree 1 file changed +59
-0
lines changed
1 file changed +59
-0
lines changed Original file line number Diff line number Diff line change @@ -510,6 +510,65 @@ impl Modifiers {
510
510
511
511
true
512
512
}
513
+
514
+ /// Whether another set of modifiers is contained in this set of modifiers with proper handling of [`Self::command`].
515
+ ///
516
+ /// ```
517
+ /// # use egui::Modifiers;
518
+ /// assert!(Modifiers::default().contains(Modifiers::default()));
519
+ /// assert!(Modifiers::CTRL.contains(Modifiers::default()));
520
+ /// assert!(Modifiers::CTRL.contains(Modifiers::CTRL));
521
+ /// assert!(Modifiers::CTRL.contains(Modifiers::COMMAND));
522
+ /// assert!(Modifiers::MAC_CMD.contains(Modifiers::COMMAND));
523
+ /// assert!(Modifiers::COMMAND.contains(Modifiers::MAC_CMD));
524
+ /// assert!(Modifiers::COMMAND.contains(Modifiers::CTRL));
525
+ /// assert!(!(Modifiers::ALT | Modifiers::CTRL).contains(Modifiers::SHIFT));
526
+ /// assert!((Modifiers::CTRL | Modifiers::SHIFT).contains(Modifiers::CTRL));
527
+ /// assert!(!Modifiers::CTRL.contains(Modifiers::CTRL | Modifiers::SHIFT));
528
+ /// ```
529
+ pub fn contains ( & self , query : Modifiers ) -> bool {
530
+ if query == Modifiers :: default ( ) {
531
+ return true ;
532
+ }
533
+
534
+ let Modifiers {
535
+ alt,
536
+ ctrl,
537
+ shift,
538
+ mac_cmd,
539
+ command,
540
+ } = * self ;
541
+
542
+ if alt && query. alt {
543
+ return self . contains ( Modifiers {
544
+ alt : false ,
545
+ ..query
546
+ } ) ;
547
+ }
548
+ if shift && query. shift {
549
+ return self . contains ( Modifiers {
550
+ shift : false ,
551
+ ..query
552
+ } ) ;
553
+ }
554
+
555
+ if ( ctrl || command) && ( query. ctrl || query. command ) {
556
+ return self . contains ( Modifiers {
557
+ command : false ,
558
+ ctrl : false ,
559
+ ..query
560
+ } ) ;
561
+ }
562
+ if ( mac_cmd || command) && ( query. mac_cmd || query. command ) {
563
+ return self . contains ( Modifiers {
564
+ mac_cmd : false ,
565
+ command : false ,
566
+ ..query
567
+ } ) ;
568
+ }
569
+
570
+ false
571
+ }
513
572
}
514
573
515
574
impl std:: ops:: BitOr for Modifiers {
You can’t perform that action at this time.
0 commit comments