patches/control-center-19-trusted-extensions.diff
changeset 7666 145a64a74db2
--- /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)) {