1 diff -urN control-center-2.14.1/gnome-settings-daemon/gnome-settings-keybindings.c ../SUNWgnome-desktop-prefs-2.14.1.hacked/control-center-2.14.1/gnome-settings-daemon/gnome-settings-keybindings.c 2 --- control-center-2.14.1/gnome-settings-daemon/gnome-settings-keybindings.c 2006-06-12 12:33:36.567877000 +0100 3 +++ ../SUNWgnome-desktop-prefs-2.14.1.hacked/control-center-2.14.1/gnome-settings-daemon/gnome-settings-keybindings.c 2006-06-12 12:48:38.094184000 +0100 4 @@ -19,7 +19,10 @@ 5 * for these set */ 6 #define USED_MODS (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK) 7 8 -#define GCONF_BINDING_DIR "/desktop/gnome/keybindings" 9 +#define GCONF_BINDING_DIR "/desktop/gnome/keybindings" 10 + 11 +extern gboolean gnome_desktop_tsol_is_multi_label_session (void); 12 +extern void gnome_desktop_tsol_proxy_app_launch (gchar *); 13 14 typedef struct { 15 guint keysym; 16 @@ -366,6 +369,7 @@ 17 XEvent *xevent = (XEvent *)gdk_xevent; 18 guint keycode, state; 19 GSList *li; 20 + int i = (int)data; 21 22 if(xevent->type != KeyPress) 23 return GDK_FILTER_CONTINUE; 24 @@ -384,6 +388,7 @@ 25 gboolean retval; 26 gchar **argv = NULL; 27 gchar **envp = NULL; 28 + char *tsolcmd; 29 30 g_return_val_if_fail (binding->action != NULL, GDK_FILTER_CONTINUE); 31 32 @@ -394,6 +399,12 @@ 33 34 envp = get_exec_environment (xevent); 35 36 + if (gnome_desktop_tsol_is_multi_label_session ()) { 37 + tsolcmd = g_strdup_printf ("%d:%s", i, argv[0]); 38 + gnome_desktop_tsol_proxy_app_launch (tsolcmd); 39 + g_free (tsolcmd); 40 + return GDK_FILTER_CONTINUE; 41 + } 42 43 retval = g_spawn_async (NULL, 44 argv, 45 @@ -437,12 +448,12 @@ 46 47 gdk_window_add_filter (gdk_get_default_root_window (), 48 keybindings_filter, 49 - NULL); 50 + 0); 51 for (i = 0; i < screen_num; i++) 52 { 53 screen = gdk_display_get_screen (dpy, i); 54 gdk_window_add_filter (gdk_screen_get_root_window (screen), 55 - keybindings_filter, NULL); 56 + keybindings_filter, i); 57 } 58 } 59 60 diff -u control-center-2.16.1/gnome-settings-daemon/gnome-settings-multimedia-keys.c-orig5 control-center-2.16.1/gnome-settings-daemon/gnome-settings-multimedia-keys.c 61 --- control-center-2.16.1/gnome-settings-daemon/gnome-settings-multimedia-keys.c-orig5 2006-10-20 14:15:53.071533000 +0100 62 +++ control-center-2.16.1/gnome-settings-daemon/gnome-settings-multimedia-keys.c 2006-10-20 14:17:28.745941000 +0100 63 @@ -50,6 +50,9 @@ 64 * for these set */ 65 #define USED_MODS (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK) 66 67 +extern gboolean gnome_desktop_tsol_is_multi_label_session (void); 68 +extern void gnome_desktop_tsol_proxy_app_launch (gchar *); 69 + 70 typedef struct { 71 AcmeVolume *volobj; 72 GladeXML *xml; 73 @@ -93,7 +96,16 @@ 74 gboolean retval; 75 gchar **argv; 76 gint argc; 77 - 78 + 79 + if (gnome_desktop_tsol_is_multi_label_session ()) { 80 + char *tsolcmd; 81 + /* FIXME: assume the screen 0 since ACME does not support multi-head */ 82 + tsolcmd = g_strdup_printf ("0:%s", cmd); 83 + gnome_desktop_tsol_proxy_app_launch (tsolcmd); 84 + g_free (tsolcmd); 85 + return; 86 + } 87 + 88 retval = FALSE; 89 90 if (g_shell_parse_argv (cmd, &argc, &argv, NULL)) { 91 92