diff --git a/js/ui/altTab.js b/js/ui/altTab.js index a43731355..90e7562ce 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -148,7 +148,7 @@ AltTabPopup.prototype = { _keyPressEvent : function(actor, event) { let keysym = event.get_key_symbol(); - let shift = (event.get_state() & Clutter.ModifierType.SHIFT_MASK); + let shift = (Shell.get_event_state(event) & Clutter.ModifierType.SHIFT_MASK); // The WASD stuff is for debugging in Xephyr, where the arrow // keys aren't mapped correctly diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index f114b519d..e24ffc2ba 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -554,7 +554,7 @@ RunningWellItem.prototype = { }, _onActivate: function (actor, event) { - let modifiers = event.get_state(); + let modifiers = Shell.get_event_state(event); if (modifiers & Clutter.ModifierType.CONTROL_MASK) { this.appInfo.launch(); diff --git a/js/ui/main.js b/js/ui/main.js index 2a0d73bf8..623584692 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -201,7 +201,7 @@ function _globalKeyPressHandler(actor, event) { overview.hide(); return true; - } else if (symbol == Clutter.F2 && (event.get_state() & Clutter.ModifierType.MOD1_MASK)) { + } else if (symbol == Clutter.F2 && (Shell.get_event_state(event) & Clutter.ModifierType.MOD1_MASK)) { getRunDialog().open(); } } diff --git a/src/shell-global.c b/src/shell-global.c index 65688e728..bad17065c 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -998,3 +998,22 @@ shell_global_get_modifier_keys (ShellGlobal *global) gdk_display_get_pointer (gdk_display_get_default (), NULL, NULL, NULL, &mods); return mods & GDK_MODIFIER_MASK; } + +/** + * shell_get_event_state: + * @event: a #ClutterEvent + * + * Gets the current state of the event (the set of modifier keys that + * are pressed down). Thhis is a wrapper around + * clutter_event_get_state() that strips out any un-declared modifier + * flags, to make gjs happy; see + * https://bugzilla.gnome.org/show_bug.cgi?id=597292. + * + * Return value: the state from the event + */ +ClutterModifierType +shell_get_event_state (ClutterEvent *event) +{ + ClutterModifierType state = clutter_event_get_state (event); + return state & CLUTTER_MODIFIER_MASK; +} diff --git a/src/shell-global.h b/src/shell-global.h index fe01aeb3d..d081cffba 100644 --- a/src/shell-global.h +++ b/src/shell-global.h @@ -79,6 +79,8 @@ GdkRectangle *shell_global_get_focus_monitor (ShellGlobal *global); GdkModifierType shell_global_get_modifier_keys (ShellGlobal *global); +ClutterModifierType shell_get_event_state (ClutterEvent *event); + G_END_DECLS #endif /* __SHELL_GLOBAL_H__ */