diff options
author | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2015-06-03 19:25:58 +0300 |
---|---|---|
committer | Alberts Muktupāvels <alberts.muktupavels@gmail.com> | 2015-06-03 19:25:58 +0300 |
commit | 6b6f38a9371646b747bbec132e842c7f3c82ebd1 (patch) | |
tree | 751a61986fa440d8bc9ef5e52d8c00d9e9224555 | |
parent | 3201830924f2c1ec0a763ebfd4d7250c95448cf3 (diff) | |
download | metacity-6b6f38a9371646b747bbec132e842c7f3c82ebd1.tar.gz |
display: return boolean in meta_display_devirtualize_modifiers
-rw-r--r-- | src/core/display-private.h | 6 | ||||
-rw-r--r-- | src/core/display.c | 54 |
2 files changed, 36 insertions, 24 deletions
diff --git a/src/core/display-private.h b/src/core/display-private.h index 85c98f8b..e85818ea 100644 --- a/src/core/display-private.h +++ b/src/core/display-private.h @@ -461,9 +461,9 @@ int meta_resize_gravity_from_grab_op (MetaGrabOp op); gboolean meta_grab_op_is_moving (MetaGrabOp op); gboolean meta_grab_op_is_resizing (MetaGrabOp op); -void meta_display_devirtualize_modifiers (MetaDisplay *display, - MetaVirtualModifier modifiers, - unsigned int *mask); +gboolean meta_display_devirtualize_modifiers (MetaDisplay *display, + MetaVirtualModifier modifiers, + unsigned int *mask); void meta_display_increment_focus_sentinel (MetaDisplay *display); void meta_display_decrement_focus_sentinel (MetaDisplay *display); diff --git a/src/core/display.c b/src/core/display.c index 8456f9b8..4db019ea 100644 --- a/src/core/display.c +++ b/src/core/display.c @@ -4791,33 +4791,45 @@ meta_display_stack_cmp (const void *a, return 0; /* not reached in theory, if windows on same display */ } -void +static gboolean +devirtualize_modifiers (MetaVirtualModifier modifiers, + MetaVirtualModifier virtual_mask, + unsigned int real_mask, + unsigned int *mask) +{ + if (modifiers & virtual_mask) + { + if (real_mask == 0) + return FALSE; + + *mask |= real_mask; + } + + return TRUE; +} + +gboolean meta_display_devirtualize_modifiers (MetaDisplay *display, MetaVirtualModifier modifiers, unsigned int *mask) { + gboolean devirtualized; + + devirtualized = TRUE; *mask = 0; - if (modifiers & META_VIRTUAL_SHIFT_MASK) - *mask |= ShiftMask; - if (modifiers & META_VIRTUAL_CONTROL_MASK) - *mask |= ControlMask; - if (modifiers & META_VIRTUAL_ALT_MASK) - *mask |= Mod1Mask; - if (modifiers & META_VIRTUAL_META_MASK) - *mask |= display->meta_mask; - if (modifiers & META_VIRTUAL_HYPER_MASK) - *mask |= display->hyper_mask; - if (modifiers & META_VIRTUAL_SUPER_MASK) - *mask |= display->super_mask; - if (modifiers & META_VIRTUAL_MOD2_MASK) - *mask |= Mod2Mask; - if (modifiers & META_VIRTUAL_MOD3_MASK) - *mask |= Mod3Mask; - if (modifiers & META_VIRTUAL_MOD4_MASK) - *mask |= Mod4Mask; - if (modifiers & META_VIRTUAL_MOD5_MASK) - *mask |= Mod5Mask; + devirtualized &= devirtualize_modifiers (modifiers, META_VIRTUAL_SHIFT_MASK, ShiftMask, mask); + devirtualized &= devirtualize_modifiers (modifiers, META_VIRTUAL_CONTROL_MASK, ControlMask, mask); + devirtualized &= devirtualize_modifiers (modifiers, META_VIRTUAL_ALT_MASK, Mod1Mask, mask); + devirtualized &= devirtualize_modifiers (modifiers, META_VIRTUAL_META_MASK, display->meta_mask, mask); + devirtualized &= devirtualize_modifiers (modifiers, META_VIRTUAL_HYPER_MASK, display->hyper_mask, mask); + devirtualized &= devirtualize_modifiers (modifiers, META_VIRTUAL_SUPER_MASK, display->super_mask, mask); + devirtualized &= devirtualize_modifiers (modifiers, META_VIRTUAL_MOD2_MASK, Mod2Mask, mask); + devirtualized &= devirtualize_modifiers (modifiers, META_VIRTUAL_MOD3_MASK, Mod3Mask, mask); + devirtualized &= devirtualize_modifiers (modifiers, META_VIRTUAL_MOD4_MASK, Mod4Mask, mask); + devirtualized &= devirtualize_modifiers (modifiers, META_VIRTUAL_MOD5_MASK, Mod5Mask, mask); + + return devirtualized; } static void |