summaryrefslogtreecommitdiff
path: root/gtk/gtkaccelgroup.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2002-03-20 17:32:37 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-03-20 17:32:37 +0000
commitae735e1b2bb7b076b016fb03889c2736cbe3d564 (patch)
tree8102b58e3bea13ea23caca00493301ac351006f1 /gtk/gtkaccelgroup.c
parent3eacf2c33c7699100c83ec2174cf7b9f0d2d1bba (diff)
downloadgtk+-ae735e1b2bb7b076b016fb03889c2736cbe3d564.tar.gz
Allow arrow keys as accelerators, as long as some modifier is pressed.
Wed Mar 20 12:27:07 2002 Owen Taylor <otaylor@redhat.com> * gtk/gtkaccelgroup.c (gtk_accelerator_valid): Allow arrow keys as accelerators, as long as some modifier is pressed. (#75495) * gtk/gtkaccelgroup.c (gtk_accelerator_valid): Fix incorrect example in the docs.
Diffstat (limited to 'gtk/gtkaccelgroup.c')
-rw-r--r--gtk/gtkaccelgroup.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/gtk/gtkaccelgroup.c b/gtk/gtkaccelgroup.c
index 0cfa9e685c..a3cf12d55a 100644
--- a/gtk/gtkaccelgroup.c
+++ b/gtk/gtkaccelgroup.c
@@ -798,8 +798,8 @@ gtk_accel_groups_activate (GObject *object,
* Determines whether a given keyval and modifier mask constitute
* a valid keyboard accelerator. For example, the #GDK_a keyval
* plus #GDK_CONTROL_MASK is valid - this is a "Ctrl+a" accelerator.
- * But by default (see gtk_accelerator_set_default_mod_mask()) you
- * cannot use the NumLock key as an accelerator modifier.
+ * But, you can't, for instance, use the #GDL_Control_L keyval
+ * as an accelerator.
*/
gboolean
gtk_accelerator_valid (guint keyval,
@@ -813,13 +813,17 @@ gtk_accelerator_valid (guint keyval,
GDK_ISO_First_Group, GDK_ISO_Last_Group,
GDK_Mode_switch, GDK_Num_Lock, GDK_Multi_key,
GDK_Scroll_Lock, GDK_Sys_Req,
- GDK_Up, GDK_Down, GDK_Left, GDK_Right, GDK_Tab, GDK_ISO_Left_Tab,
- GDK_KP_Up, GDK_KP_Down, GDK_KP_Left, GDK_KP_Right, GDK_KP_Tab,
+ GDK_Tab, GDK_ISO_Left_Tab, GDK_KP_Tab,
GDK_First_Virtual_Screen, GDK_Prev_Virtual_Screen,
GDK_Next_Virtual_Screen, GDK_Last_Virtual_Screen,
GDK_Terminate_Server, GDK_AudibleBell_Enable,
0
};
+ static const guint invalid_unmodified_vals[] = {
+ GDK_Up, GDK_Down, GDK_Left, GDK_Right,
+ GDK_KP_Up, GDK_KP_Down, GDK_KP_Left, GDK_KP_Right,
+ 0
+ };
const guint *ac_val;
modifiers &= GDK_MODIFIER_MASK;
@@ -834,6 +838,16 @@ gtk_accelerator_valid (guint keyval,
return FALSE;
}
+ if (!modifiers)
+ {
+ ac_val = invalid_unmodified_vals;
+ while (*ac_val)
+ {
+ if (keyval == *ac_val++)
+ return FALSE;
+ }
+ }
+
return TRUE;
}