Refuse to bind letter keys without a modifier (Closes: #86956)

2006-01-22  Bastien Nocera  <hadess@hadess.net>

	* gnome-keybinding-properties.c: (accel_edited_callback):
	Refuse to bind letter keys without a modifier (Closes: #86956)
This commit is contained in:
Bastien Nocera 2006-01-22 11:55:14 +00:00 committed by Bastien Nocera
parent f2bd50a8a5
commit c7b0d35b2f
2 changed files with 43 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2006-01-22 Bastien Nocera <hadess@hadess.net>
* gnome-keybinding-properties.c: (accel_edited_callback):
Refuse to bind letter keys without a modifier (Closes: #86956)
2006-01-11 Sebastien Bacher <seb128@debian.org>
* gnome-keybinding-properties.c:

View file

@ -645,6 +645,44 @@ accel_edited_callback (GtkCellRendererText *cell,
(GtkTreeModelForeachFunc) cb_check_for_uniqueness,
&tmp_key);
/* Check for unmodified keys */
if (tmp_key.mask == 0 && tmp_key.keycode != 0)
{
if ((tmp_key.keyval >= GDK_a && tmp_key.keyval <= GDK_z)
|| (tmp_key.keyval >= GDK_A && tmp_key.keyval <= GDK_Z)
|| (tmp_key.keyval >= GDK_kana_fullstop && tmp_key.keyval <= GDK_kana_switch)
|| (tmp_key.keyval >= GDK_Arabic_comma && tmp_key.keyval <= GDK_Arabic_switch)
|| (tmp_key.keyval >= GDK_Serbian_dje && tmp_key.keyval <= GDK_Cyrillic_HARDSIGN)
|| (tmp_key.keyval >= GDK_Greek_ALPHAaccent && tmp_key.keyval <= GDK_Greek_switch)
|| (tmp_key.keyval >= GDK_hebrew_doublelowline && tmp_key.keyval <= GDK_Hebrew_switch)
|| (tmp_key.keyval >= GDK_Thai_kokai && tmp_key.keyval <= GDK_Thai_lekkao)
|| (tmp_key.keyval >= GDK_Hangul && tmp_key.keyval <= GDK_Hangul_J_YeorinHieuh)) {
GtkWidget *dialog;
char *name;
name = egg_virtual_accelerator_name (keyval, keycode, mask);
dialog =
gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (view))),
GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_CANCEL,
_("The shortcut \"%s\" cannot be used because it will become unusable to type using this key.\n"
"Please try with a key such as Control, Alt or Shift at the same time.\n"),
name);
g_free (name);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
/* set it back to its previous value. */
egg_cell_renderer_keys_set_accelerator
(EGG_CELL_RENDERER_KEYS (cell),
key_entry->keyval, key_entry->keycode, key_entry->mask);
return;
}
}
/* flag to see if the new accelerator was in use by something */
if (!tmp_key.editable)
{