diff src/gui_gtk_x11.c @ 20935:d64520bfafa0 v8.2.1019

patch 8.2.1019: mapping <M-S-a> does not work in the GUI Commit: https://github.com/vim/vim/commit/ef6746f637adbdb6860b4fa0266c43c49fa498bc Author: Bram Moolenaar <Bram@vim.org> Date: Sat Jun 20 14:43:23 2020 +0200 patch 8.2.1019: mapping <M-S-a> does not work in the GUI Problem: Mapping <M-S-a> does not work in the GUI. Solution: Move the logic to remove the shift modifier to may_remove_shift_modifier() and also use it in the GUI.
author Bram Moolenaar <Bram@vim.org>
date Sat, 20 Jun 2020 14:45:03 +0200
parents 9f5f64cc9720
children 64c1b0796c46
line wrap: on
line diff
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -1211,15 +1211,16 @@ key_press_event(GtkWidget *widget UNUSED
     if (len == 0)   // Unrecognized key
 	return TRUE;
 
-    // Handle modifiers.
-    modifiers = modifiers_gdk2vim(state);
-
     // For some keys a shift modifier is translated into another key code.
     if (len == -3)
 	key = TO_SPECIAL(string[1], string[2]);
     else
 	key = string[0];
 
+    // Handle modifiers.
+    modifiers = modifiers_gdk2vim(state);
+
+    // Recognize special keys.
     key = simplify_key(key, &modifiers);
     if (key == CSI)
 	key = K_CSI;
@@ -1235,6 +1236,10 @@ key_press_event(GtkWidget *widget UNUSED
 	// <C-H> and <C-h> mean the same thing, always use "H"
 	if ((modifiers & MOD_MASK_CTRL) && ASCII_ISALPHA(key))
 	    key = TOUPPER_ASC(key);
+
+	// May remove the shift modifier if it's included in the key.
+	modifiers = may_remove_shift_modifier(modifiers, key);
+
 	string[0] = key;
 	len = 1;
     }