mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-18 07:40:06 +00:00
gdk: exclude MOD1 from the virtual modifier mapping
which effectively nails down the MOD1 == ALT assumption that is valid
in all other parts of GTK+. After the modifier abstraction fixes for
OSX, the virtual mapping is now (correctly) used in more places, and
caused problems with the common default PC keyboard layout on X11 that
colocates ALT and META on the same key.
(cherry picked from commit ac943bf69a
)
This commit is contained in:
parent
c3601481b7
commit
32b70a56d1
@ -1684,13 +1684,12 @@ _gdk_keymap_add_virtual_modifiers_compat (GdkKeymap *keymap,
|
||||
keymap = GET_EFFECTIVE_KEYMAP (keymap);
|
||||
keymap_x11 = GDK_KEYMAP_X11 (keymap);
|
||||
|
||||
for (i = 3; i < 8; i++)
|
||||
/* See comment in add_virtual_modifiers() */
|
||||
for (i = 4; i < 8; i++)
|
||||
{
|
||||
if ((1 << i) & *modifiers)
|
||||
{
|
||||
if (keymap_x11->modmap[i] & GDK_MOD1_MASK)
|
||||
*modifiers |= GDK_MOD1_MASK;
|
||||
else if (keymap_x11->modmap[i] & GDK_SUPER_MASK)
|
||||
if (keymap_x11->modmap[i] & GDK_SUPER_MASK)
|
||||
*modifiers |= GDK_SUPER_MASK;
|
||||
else if (keymap_x11->modmap[i] & GDK_HYPER_MASK)
|
||||
*modifiers |= GDK_HYPER_MASK;
|
||||
@ -1729,12 +1728,16 @@ gdk_keymap_add_virtual_modifiers (GdkKeymap *keymap,
|
||||
keymap = GET_EFFECTIVE_KEYMAP (keymap);
|
||||
keymap_x11 = GDK_KEYMAP_X11 (keymap);
|
||||
|
||||
for (i = 3; i < 8; i++)
|
||||
/* This loop used to start at 3, which included MOD1 in the
|
||||
* virtual mapping. However, all of GTK+ treats MOD1 as a
|
||||
* synonym for Alt, and does not expect it to be mapped around,
|
||||
* therefore it's more sane to simply treat MOD1 like SHIFT and
|
||||
* CONTROL, which are not mappable either.
|
||||
*/
|
||||
for (i = 4; i < 8; i++)
|
||||
{
|
||||
if ((1 << i) & *state)
|
||||
{
|
||||
if (keymap_x11->modmap[i] & GDK_MOD1_MASK)
|
||||
*state |= GDK_MOD1_MASK;
|
||||
if (keymap_x11->modmap[i] & GDK_SUPER_MASK)
|
||||
*state |= GDK_SUPER_MASK;
|
||||
if (keymap_x11->modmap[i] & GDK_HYPER_MASK)
|
||||
@ -1822,7 +1825,8 @@ gdk_keymap_map_virtual_modifiers (GdkKeymap *keymap,
|
||||
{
|
||||
if (*state & vmods[j])
|
||||
{
|
||||
for (i = 3; i < 8; i++)
|
||||
/* See comment in add_virtual_modifiers() */
|
||||
for (i = 4; i < 8; i++)
|
||||
{
|
||||
if (keymap_x11->modmap[i] & vmods[j])
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user