--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/patches/control-center-19-trusted-extensions.diff Wed Jul 19 15:48:48 2006 +0000
@@ -0,0 +1,90 @@
+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
+--- control-center-2.14.1/gnome-settings-daemon/gnome-settings-keybindings.c 2006-06-12 12:33:36.567877000 +0100
++++ ../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
+@@ -19,7 +19,10 @@
+ * for these set */
+ #define USED_MODS (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)
+
+-#define GCONF_BINDING_DIR "/desktop/gnome/keybindings"
++#define GCONF_BINDING_DIR "/desktop/gnome/keybindings"
++
++extern gboolean gnome_desktop_tsol_is_multi_label_session (void);
++extern void gnome_desktop_tsol_proxy_app_launch (gchar *);
+
+ typedef struct {
+ guint keysym;
+@@ -366,6 +369,7 @@
+ XEvent *xevent = (XEvent *)gdk_xevent;
+ guint keycode, state;
+ GSList *li;
++ int i = (int)data;
+
+ if(xevent->type != KeyPress)
+ return GDK_FILTER_CONTINUE;
+@@ -384,6 +388,7 @@
+ gboolean retval;
+ gchar **argv = NULL;
+ gchar **envp = NULL;
++ char *tsolcmd;
+
+ g_return_val_if_fail (binding->action != NULL, GDK_FILTER_CONTINUE);
+
+@@ -394,6 +399,12 @@
+
+ envp = get_exec_environment (xevent);
+
++ if (gnome_desktop_tsol_is_multi_label_session ()) {
++ tsolcmd = g_strdup_printf ("%d:%s", i, argv[0]);
++ gnome_desktop_tsol_proxy_app_launch (tsolcmd);
++ g_free (tsolcmd);
++ return GDK_FILTER_CONTINUE;
++ }
+
+ retval = g_spawn_async (NULL,
+ argv,
+@@ -437,12 +448,12 @@
+
+ gdk_window_add_filter (gdk_get_default_root_window (),
+ keybindings_filter,
+- NULL);
++ 0);
+ for (i = 0; i < screen_num; i++)
+ {
+ screen = gdk_display_get_screen (dpy, i);
+ gdk_window_add_filter (gdk_screen_get_root_window (screen),
+- keybindings_filter, NULL);
++ keybindings_filter, i);
+ }
+ }
+
+diff -urN control-center-2.14.1/gnome-settings-daemon/gnome-settings-multimedia-keys.c ../SUNWgnome-desktop-prefs-2.14.1.hacked/control-center-2.14.1/gnome-settings-daemon/gnome-settings-multimedia-keys.c
+--- control-center-2.14.1/gnome-settings-daemon/gnome-settings-multimedia-keys.c 2006-06-12 12:33:36.585316000 +0100
++++ ../SUNWgnome-desktop-prefs-2.14.1.hacked/control-center-2.14.1/gnome-settings-daemon/gnome-settings-multimedia-keys.c 2006-06-12 12:48:57.372499000 +0100
+@@ -57,6 +57,9 @@
+ * for these set */
+ #define USED_MODS (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)
+
++extern gboolean gnome_desktop_tsol_is_multi_label_session (void);
++extern void gnome_desktop_tsol_proxy_app_launch (gchar *);
++
+ typedef struct {
+ AcmeVolume *volobj;
+ #ifdef USE_FBLEVEL
+@@ -104,7 +107,16 @@
+ gboolean retval;
+ gchar **argv;
+ gint argc;
+-
++
++ if (gnome_desktop_tsol_is_multi_label_session ()) {
++ char *tsolcmd;
++ /* FIXME: assume the screen 0 since ACME does not support multi-head */
++ tsolcmd = g_strdup_printf ("0:%s", cmd);
++ gnome_desktop_tsol_proxy_app_launch (tsolcmd);
++ g_free (tsolcmd);
++ return;
++ }
++
+ retval = FALSE;
+
+ if (g_shell_parse_argv (cmd, &argc, &argv, NULL)) {