mirror of
https://github.com/vim/vim.git
synced 2025-07-26 11:04:33 -04:00
patch 8.2.0770: cannot map CTRL-B when using the GUI
Problem: Cannot map CTRL-B when using the GUI. Solution: Reset the CTRL modifier when used. (closes #6092)
This commit is contained in:
parent
129d6bf6b3
commit
aa5fc4ec51
@ -1023,7 +1023,7 @@ focus_out_event(GtkWidget *widget UNUSED,
|
|||||||
* http://developer.gnome.org/doc/API/2.0/gdk/gdk-Event-Structures.html#GdkEventKey
|
* http://developer.gnome.org/doc/API/2.0/gdk/gdk-Event-Structures.html#GdkEventKey
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
keyval_to_string(unsigned int keyval, unsigned int state, char_u *string)
|
keyval_to_string(unsigned int keyval, unsigned int *state, char_u *string)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
guint32 uc;
|
guint32 uc;
|
||||||
@ -1031,8 +1031,8 @@ keyval_to_string(unsigned int keyval, unsigned int state, char_u *string)
|
|||||||
uc = gdk_keyval_to_unicode(keyval);
|
uc = gdk_keyval_to_unicode(keyval);
|
||||||
if (uc != 0)
|
if (uc != 0)
|
||||||
{
|
{
|
||||||
// Check for CTRL-foo
|
// Check for CTRL-char
|
||||||
if ((state & GDK_CONTROL_MASK) && uc >= 0x20 && uc < 0x80)
|
if ((*state & GDK_CONTROL_MASK) && uc >= 0x20 && uc < 0x80)
|
||||||
{
|
{
|
||||||
// These mappings look arbitrary at the first glance, but in fact
|
// These mappings look arbitrary at the first glance, but in fact
|
||||||
// resemble quite exactly the behaviour of the GTK+ 1.2 GUI on my
|
// resemble quite exactly the behaviour of the GTK+ 1.2 GUI on my
|
||||||
@ -1051,6 +1051,10 @@ keyval_to_string(unsigned int keyval, unsigned int state, char_u *string)
|
|||||||
else
|
else
|
||||||
string[0] = uc;
|
string[0] = uc;
|
||||||
len = 1;
|
len = 1;
|
||||||
|
|
||||||
|
if (string[0] != uc)
|
||||||
|
// The modifier was used, remove it.
|
||||||
|
*state = *state & ~GDK_CONTROL_MASK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1169,7 +1173,7 @@ key_press_event(GtkWidget *widget UNUSED,
|
|||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
len = keyval_to_string(key_sym, state, string2);
|
len = keyval_to_string(key_sym, &state, string2);
|
||||||
|
|
||||||
// Careful: convert_input() doesn't handle the NUL character.
|
// Careful: convert_input() doesn't handle the NUL character.
|
||||||
// No need to convert pure ASCII anyway, thus the len > 1 check.
|
// No need to convert pure ASCII anyway, thus the len > 1 check.
|
||||||
|
@ -746,6 +746,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
770,
|
||||||
/**/
|
/**/
|
||||||
769,
|
769,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user