#include "gtkmarshalers.h"
#include "gtksignal.h"
-#include <ctype.h>
#include <string.h>
#include <stdlib.h>
g_object_ref (accel_group);
if (!closure->is_invalid)
- quick_accel_add (accel_group, accel_key, accel_mods, accel_flags, closure, 0);
+ quick_accel_add (accel_group,
+ gdk_keyval_to_lower (accel_key),
+ accel_mods, accel_flags, closure, 0);
g_object_unref (accel_group);
}
if (gtk_accel_map_lookup_entry (accel_path, &key))
{
- accel_key = key.accel_key;
+ accel_key = gdk_keyval_to_lower (key.accel_key);
accel_mods = key.accel_mods;
}
g_object_ref (accel_group);
+ accel_key = gdk_keyval_to_lower (accel_key);
entries = quick_accel_find (accel_group, accel_key, accel_mods, &n);
while (n--)
{
g_return_val_if_fail (closure != NULL, NULL);
- /* a few remarks on wat we do here. in general, we need a way to reverse lookup
+ /* a few remarks on what we do here. in general, we need a way to reverse lookup
* accel_groups from closures that are being used in accel groups. this could
* be done e.g via a hashtable. it is however cheaper (memory wise) to just
* use the invalidation notifier on the closure itself (which we need to install
GQuark accel_quark;
GSList *slist;
- accel_name = gtk_accelerator_name (accel_key, accel_mods);
+ accel_name = gtk_accelerator_name (accel_key, (accel_mods & gtk_accelerator_get_default_mod_mask ()));
accel_quark = g_quark_from_string (accel_name);
g_free (accel_name);
GdkModifierType modifiers)
{
static const guint invalid_accelerator_vals[] = {
- GDK_BackSpace, GDK_Delete, GDK_KP_Delete,
GDK_Shift_L, GDK_Shift_R, GDK_Shift_Lock, GDK_Caps_Lock, GDK_ISO_Lock,
GDK_Control_L, GDK_Control_R, GDK_Meta_L, GDK_Meta_R,
GDK_Alt_L, GDK_Alt_R, GDK_Super_L, GDK_Super_R, GDK_Hyper_L, GDK_Hyper_R,
+ GDK_ISO_Level3_Shift, GDK_ISO_Next_Group, GDK_ISO_Prev_Group,
+ 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,
* accelerators. The default mod mask is #GDK_CONTROL_MASK |
* #GDK_SHIFT_MASK | #GDK_MOD1_MASK, that is, Control, Shift, and Alt.
* Other modifiers will by default be ignored by #GtkAccelGroup.
+ * You must include at least the three default modifiers in any
+ * value you pass to this function.
*
* The default mod mask should be changed on application startup,
* before using any accelerator groups.
void
gtk_accelerator_set_default_mod_mask (GdkModifierType default_mod_mask)
{
- default_accel_mod_mask = default_mod_mask & GDK_MODIFIER_MASK;
+ default_accel_mod_mask = (default_mod_mask & GDK_MODIFIER_MASK) |
+ (GDK_CONTROL_MASK | GDK_SHIFT_MASK | GDK_MOD1_MASK);
}
/**