[gnome-settings-daemon/shell-keygrab: 5/5] media-keys: Pass appropriate GrabModes to grab_key_unsafe()



commit c183e4f4537b806b15c346798e1f5c11fef37cae
Author: Florian MÃllner <fmuellner gnome org>
Date:   Mon Dec 3 00:04:46 2012 +0100

    media-keys: Pass appropriate GrabModes to grab_key_unsafe()

 plugins/media-keys/gsd-media-keys-manager.c |    5 +-
 plugins/media-keys/shortcuts-list.h         |  127 +++++++++++++++------------
 2 files changed, 73 insertions(+), 59 deletions(-)
---
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index f95d118..af9d8d2 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -117,6 +117,7 @@ typedef struct {
 
 typedef struct {
         MediaKeyType key_type;
+        GsdKeygrabModes modes;
         const char *settings_key;
         const char *hard_coded;
         char *custom_path;
@@ -411,7 +412,7 @@ grab_media_key (MediaKey            *key,
 		return need_flush;
 	}
 
-	grab_key_unsafe (key->key, GSD_KEYGRAB_NORMAL, ~0, manager->priv->screens);
+	grab_key_unsafe (key->key, GSD_KEYGRAB_NORMAL, key->modes, manager->priv->screens);
 
 	g_free (tmp);
 
@@ -487,6 +488,7 @@ media_key_new_for_path (GsdMediaKeysManager *manager,
 
         key = g_new0 (MediaKey, 1);
         key->key_type = CUSTOM_KEY;
+        key->modes = GSD_KEYGRAB_MODE_NORMAL | GSD_KEYGRAB_MODE_OVERVIEW;
         key->custom_path = g_strdup (path);
         key->custom_command = command;
 
@@ -614,6 +616,7 @@ add_key (GsdMediaKeysManager *manager, guint i)
 	key->key_type = media_keys[i].key_type;
 	key->settings_key = media_keys[i].settings_key;
 	key->hard_coded = media_keys[i].hard_coded;
+        key->modes = media_keys[i].modes;
 
 	g_ptr_array_add (manager->priv->keys, key);
 
diff --git a/plugins/media-keys/shortcuts-list.h b/plugins/media-keys/shortcuts-list.h
index a16d0e7..07b8c90 100644
--- a/plugins/media-keys/shortcuts-list.h
+++ b/plugins/media-keys/shortcuts-list.h
@@ -85,72 +85,83 @@ typedef enum {
         CUSTOM_KEY
 } MediaKeyType;
 
+
+#define ALL_MODES ~0
+#define WINDOW_MODES (GSD_KEYGRAB_MODE_NORMAL | GSD_KEYGRAB_MODE_OVERVIEW)
+#define SCREENSAVER_MODES ALL_MODES & ~(GSD_KEYGRAB_MODE_LOCK_SCREEN | \
+                                        GSD_KEYGRAB_MODE_UNLOCK_SCREEN)
+
 static struct {
         MediaKeyType key_type;
         const char *settings_key;
         const char *hard_coded;
+        GsdKeygrabModes modes;
 } media_keys[] = {
-        { TOUCHPAD_KEY, NULL, "XF86TouchpadToggle" },
-        { TOUCHPAD_ON_KEY, NULL, "XF86TouchpadOn" },
-        { TOUCHPAD_OFF_KEY, NULL, "XF86TouchpadOff" },
-        { MUTE_KEY, "volume-mute", NULL },
-        { VOLUME_DOWN_KEY, "volume-down", NULL },
-        { VOLUME_UP_KEY, "volume-up", NULL },
-        { MUTE_QUIET_KEY, NULL, "<Alt>XF86AudioMute" },
-        { VOLUME_DOWN_QUIET_KEY, NULL, "<Alt>XF86AudioLowerVolume" },
-        { VOLUME_UP_QUIET_KEY, NULL, "<Alt>XF86AudioRaiseVolume" },
-        { LOGOUT_KEY, "logout", NULL },
-        { EJECT_KEY, "eject", NULL },
-        { HOME_KEY, "home", NULL },
-        { MEDIA_KEY, "media", NULL },
-        { CALCULATOR_KEY, "calculator", NULL },
-        { SEARCH_KEY, "search", NULL },
-        { EMAIL_KEY, "email", NULL },
-        { SCREENSAVER_KEY, "screensaver", NULL },
-        { SCREENSAVER_KEY, NULL, "XF86ScreenSaver" },
-        { HELP_KEY, "help", NULL },
-        { SCREENSHOT_KEY, "screenshot", NULL },
-        { WINDOW_SCREENSHOT_KEY, "window-screenshot", NULL },
-        { AREA_SCREENSHOT_KEY, "area-screenshot", NULL },
-        { SCREENSHOT_CLIP_KEY, "screenshot-clip", NULL },
-        { WINDOW_SCREENSHOT_CLIP_KEY, "window-screenshot-clip", NULL },
-        { AREA_SCREENSHOT_CLIP_KEY, "area-screenshot-clip", NULL },
-        { WWW_KEY, "www", NULL },
-        { PLAY_KEY, "play", NULL },
-        { PAUSE_KEY, "pause", NULL },
-        { STOP_KEY, "stop", NULL },
-        { PREVIOUS_KEY, "previous", NULL },
-        { NEXT_KEY, "next", NULL },
-        { REWIND_KEY, NULL, "XF86AudioRewind" },
-        { FORWARD_KEY, NULL, "XF86AudioForward" },
-        { REPEAT_KEY, NULL, "XF86AudioRepeat" },
-        { RANDOM_KEY, NULL, "XF86AudioRandomPlay"},
-        { VIDEO_OUT_KEY, NULL, "<Super>p" },
+        { TOUCHPAD_KEY, NULL, "XF86TouchpadToggle", ALL_MODES },
+        { TOUCHPAD_ON_KEY, NULL, "XF86TouchpadOn", ALL_MODES },
+        { TOUCHPAD_OFF_KEY, NULL, "XF86TouchpadOff", ALL_MODES },
+        { MUTE_KEY, "volume-mute", NULL, ALL_MODES },
+        { VOLUME_DOWN_KEY, "volume-down", NULL, ALL_MODES },
+        { VOLUME_UP_KEY, "volume-up", NULL, ALL_MODES },
+        { MUTE_QUIET_KEY, NULL, "<Alt>XF86AudioMute", ALL_MODES },
+        { VOLUME_DOWN_QUIET_KEY, NULL, "<Alt>XF86AudioLowerVolume", ALL_MODES },
+        { VOLUME_UP_QUIET_KEY, NULL, "<Alt>XF86AudioRaiseVolume", ALL_MODES },
+        { LOGOUT_KEY, "logout", NULL, WINDOW_MODES },
+        { EJECT_KEY, "eject", NULL, ALL_MODES },
+        { HOME_KEY, "home", NULL, WINDOW_MODES },
+        { MEDIA_KEY, "media", NULL, WINDOW_MODES },
+        { CALCULATOR_KEY, "calculator", NULL, WINDOW_MODES },
+        { SEARCH_KEY, "search", NULL, WINDOW_MODES },
+        { EMAIL_KEY, "email", NULL, WINDOW_MODES },
+        { SCREENSAVER_KEY, "screensaver", NULL, SCREENSAVER_MODES },
+        { SCREENSAVER_KEY, NULL, "XF86ScreenSaver", SCREENSAVER_MODES },
+        { HELP_KEY, "help", NULL, WINDOW_MODES },
+        { SCREENSHOT_KEY, "screenshot", NULL, ALL_MODES },
+        { WINDOW_SCREENSHOT_KEY, "window-screenshot", NULL, GSD_KEYGRAB_MODE_NORMAL },
+        { AREA_SCREENSHOT_KEY, "area-screenshot", NULL, ALL_MODES },
+        { SCREENSHOT_CLIP_KEY, "screenshot-clip", NULL, ALL_MODES },
+        { WINDOW_SCREENSHOT_CLIP_KEY, "window-screenshot-clip", NULL, GSD_KEYGRAB_MODE_NORMAL },
+        { AREA_SCREENSHOT_CLIP_KEY, "area-screenshot-clip", NULL, ALL_MODES },
+        { WWW_KEY, "www", NULL, WINDOW_MODES },
+        { PLAY_KEY, "play", NULL, ALL_MODES },
+        { PAUSE_KEY, "pause", NULL, ALL_MODES },
+        { STOP_KEY, "stop", NULL, ALL_MODES },
+        { PREVIOUS_KEY, "previous", NULL, ALL_MODES },
+        { NEXT_KEY, "next", NULL, ALL_MODES },
+        { REWIND_KEY, NULL, "XF86AudioRewind", ALL_MODES },
+        { FORWARD_KEY, NULL, "XF86AudioForward", ALL_MODES },
+        { REPEAT_KEY, NULL, "XF86AudioRepeat", ALL_MODES },
+        { RANDOM_KEY, NULL, "XF86AudioRandomPlay", ALL_MODES },
+        { VIDEO_OUT_KEY, NULL, "<Super>p", ALL_MODES },
         /* Key code of the XF86Display key (Fn-F7 on Thinkpads, Fn-F4 on HP machines, etc.) */
-        { VIDEO_OUT_KEY, NULL, "XF86Display" },
+        { VIDEO_OUT_KEY, NULL, "XF86Display", ALL_MODES },
         /* Key code of the XF86RotateWindows key (present on some tablets) */
-        { ROTATE_VIDEO_KEY, NULL, "XF86RotateWindows" },
-        { MAGNIFIER_KEY, "magnifier", NULL },
-        { SCREENREADER_KEY, "screenreader", NULL },
-        { ON_SCREEN_KEYBOARD_KEY, "on-screen-keyboard", NULL },
-        { INCREASE_TEXT_KEY, "increase-text-size", NULL },
-        { DECREASE_TEXT_KEY, "decrease-text-size", NULL },
-        { TOGGLE_CONTRAST_KEY, "toggle-contrast", NULL },
-        { MAGNIFIER_ZOOM_IN_KEY, "magnifier-zoom-in", NULL },
-        { MAGNIFIER_ZOOM_OUT_KEY, "magnifier-zoom-out", NULL },
-        { POWER_KEY, NULL, "XF86PowerOff" },
+        { ROTATE_VIDEO_KEY, NULL, "XF86RotateWindows", GSD_KEYGRAB_MODE_NORMAL },
+        { MAGNIFIER_KEY, "magnifier", NULL, ALL_MODES },
+        { SCREENREADER_KEY, "screenreader", NULL, ALL_MODES },
+        { ON_SCREEN_KEYBOARD_KEY, "on-screen-keyboard", NULL, ALL_MODES },
+        { INCREASE_TEXT_KEY, "increase-text-size", NULL, ALL_MODES },
+        { DECREASE_TEXT_KEY, "decrease-text-size", NULL, ALL_MODES },
+        { TOGGLE_CONTRAST_KEY, "toggle-contrast", NULL, ALL_MODES },
+        { MAGNIFIER_ZOOM_IN_KEY, "magnifier-zoom-in", NULL, ALL_MODES },
+        { MAGNIFIER_ZOOM_OUT_KEY, "magnifier-zoom-out", NULL, ALL_MODES },
+        { POWER_KEY, NULL, "XF86PowerOff", WINDOW_MODES },
         /* the kernel / Xorg names really are like this... */
-        { SLEEP_KEY, NULL, "XF86Suspend" },
-        { SUSPEND_KEY, NULL, "XF86Sleep" },
-        { HIBERNATE_KEY, NULL, "XF86Hibernate" },
-        { SCREEN_BRIGHTNESS_UP_KEY, NULL, "XF86MonBrightnessUp" },
-        { SCREEN_BRIGHTNESS_DOWN_KEY, NULL, "XF86MonBrightnessDown" },
-        { KEYBOARD_BRIGHTNESS_UP_KEY, NULL, "XF86KbdBrightnessUp" },
-        { KEYBOARD_BRIGHTNESS_DOWN_KEY, NULL, "XF86KbdBrightnessDown" },
-        { KEYBOARD_BRIGHTNESS_TOGGLE_KEY, NULL, "XF86KbdLightOnOff" },
-        { SWITCH_INPUT_SOURCE_KEY, "switch-input-source", NULL },
-        { SWITCH_INPUT_SOURCE_BACKWARD_KEY, "switch-input-source-backward", NULL },
-        { BATTERY_KEY, NULL, "XF86Battery" },
+        { SLEEP_KEY, NULL, "XF86Suspend", ALL_MODES },
+        { SUSPEND_KEY, NULL, "XF86Sleep", ALL_MODES },
+        { HIBERNATE_KEY, NULL, "XF86Hibernate", ALL_MODES },
+        { SCREEN_BRIGHTNESS_UP_KEY, NULL, "XF86MonBrightnessUp", ALL_MODES },
+        { SCREEN_BRIGHTNESS_DOWN_KEY, NULL, "XF86MonBrightnessDown", ALL_MODES },
+        { KEYBOARD_BRIGHTNESS_UP_KEY, NULL, "XF86KbdBrightnessUp", ALL_MODES },
+        { KEYBOARD_BRIGHTNESS_DOWN_KEY, NULL, "XF86KbdBrightnessDown", ALL_MODES },
+        { KEYBOARD_BRIGHTNESS_TOGGLE_KEY, NULL, "XF86KbdLightOnOff", ALL_MODES },
+        { SWITCH_INPUT_SOURCE_KEY, "switch-input-source", NULL, ALL_MODES },
+        { SWITCH_INPUT_SOURCE_BACKWARD_KEY, "switch-input-source-backward", NULL, ALL_MODES },
+        { BATTERY_KEY, NULL, "XF86Battery", WINDOW_MODES },
 };
 
+#undef ALL_MODES
+#undef WINDOW_MODES
+#undef SCREENSAVER_MODES
+
 #endif /* __ACME_H__ */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]