diff --git a/gnome-settings-daemon/ChangeLog b/gnome-settings-daemon/ChangeLog index 7f572a7d9..8f5c4caa5 100644 --- a/gnome-settings-daemon/ChangeLog +++ b/gnome-settings-daemon/ChangeLog @@ -1,3 +1,9 @@ +2003-01-19 Alex Duggan + + * gnome-settings-mouse.c (filter), (set_locate_pointer): + make the right control key also locate the mouse pointer. + Fixes #87426 + Thu Jan 16 02:41:09 2003 Jonathan Blandford * Release 2.1.7 diff --git a/gnome-settings-daemon/gnome-settings-mouse.c b/gnome-settings-daemon/gnome-settings-mouse.c index 65f962fe4..a1b7ff92d 100644 --- a/gnome-settings-daemon/gnome-settings-mouse.c +++ b/gnome-settings-daemon/gnome-settings-mouse.c @@ -121,7 +121,7 @@ filter (GdkXEvent *xevent, group, &keyval, NULL, NULL, NULL); - if (keyval == GDK_Control_L) + if (keyval == GDK_Control_L || keyval == GDK_Control_R) { if (xev->type == KeyPress) { @@ -157,37 +157,41 @@ set_locate_pointer (gboolean locate_pointer) GdkKeymapKey *keys; int n_keys; gboolean has_entries; + static const guint keyvals[] = { GDK_Control_L, GDK_Control_R }; + unsigned j; - has_entries = gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (), - GDK_Control_L, - &keys, - &n_keys); - if (has_entries) + for (j = 0 ; j < G_N_ELEMENTS (keyvals) ; j++) { + has_entries = gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (), + keyvals[j], + &keys, + &n_keys); + if (has_entries) { gint i; for (i = 0; i < n_keys; i++) - { - if (locate_pointer) - XGrabKey (gdk_x11_get_default_xdisplay (), + { + if (locate_pointer) + XGrabKey (gdk_x11_get_default_xdisplay (), keys[i].keycode, AnyModifier, GDK_ROOT_WINDOW (), False, GrabModeAsync, GrabModeSync); - else - XUngrabKey (gdk_x11_get_default_xdisplay (), - keys[i].keycode, - AnyModifier, - GDK_ROOT_WINDOW ()); - } - g_free (keys); - if (locate_pointer) - gdk_window_add_filter (gdk_get_default_root_window (), filter, NULL); - else - gdk_window_remove_filter (gdk_get_default_root_window (), filter, NULL); + else + XUngrabKey (gdk_x11_get_default_xdisplay (), + keys[i].keycode, + AnyModifier, + GDK_ROOT_WINDOW ()); + } + g_free (keys); + if (locate_pointer) + gdk_window_add_filter (gdk_get_default_root_window (), filter, NULL); + else + gdk_window_remove_filter (gdk_get_default_root_window (), filter, NULL); } + } } static void