[gnome-shell] Deal with unknown flags from ClutterEvent.get_state()
- From: Owen Taylor <otaylor src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-shell] Deal with unknown flags from ClutterEvent.get_state()
- Date: Wed, 7 Oct 2009 21:25:58 +0000 (UTC)
commit ff39edd1ee48ebe96a6441707f518af5c4ba1db0
Author: Owen W. Taylor <otaylor fishsoup net>
Date: Wed Oct 7 17:20:33 2009 -0400
Deal with unknown flags from ClutterEvent.get_state()
When we get a ClutterModifierType from Clutter, it might contain
bits not in the enumeration. See bug 59771 for a similar problem
with GdkModifierType.
Add a wrapper Shell.get_event_state() around clutter_event_get_state()
to mask these bits out and only return approved bits.
https://bugzilla.gnome.org/show_bug.cgi?id=597735
js/ui/altTab.js | 2 +-
js/ui/appDisplay.js | 2 +-
js/ui/main.js | 2 +-
src/shell-global.c | 19 +++++++++++++++++++
src/shell-global.h | 2 ++
5 files changed, 24 insertions(+), 3 deletions(-)
---
diff --git a/js/ui/altTab.js b/js/ui/altTab.js
index a437313..90e7562 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 f114b51..e24ffc2 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 2a0d73b..6235846 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 65688e7..bad1706 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 fe01aeb..d081cff 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__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]