GtkCellRendererAccel adds GDK_SHIFT_MASK for Caps Lock
GtkCellRendererAccel
adds GDK_SHIFT_MASK
if (keyval != gdk_keyval_to_lower (keyval))
, without checking that the input event actually has GDK_SHIFT_MASK
. This leads to unexpected results when Caps Lock is on.
Related Inkscape issue: https://gitlab.com/inkscape/inbox/issues/581
Possible fix:
--- a/gtk/gtkcellrendereraccel.c
+++ b/gtk/gtkcellrendereraccel.c
@@ -601,7 +601,8 @@ gtk_cell_editable_event_box_key_press_event (GtkWidget *widget,
/* Put shift back if it changed the case of the key, not otherwise.
*/
- if (accel_key != keyval)
+ if ((GDK_SHIFT_MASK & event->state) &&
+ accel_key != gdk_keyval_to_upper(keyval))
accel_mods |= GDK_SHIFT_MASK;
if (accel_mods == 0)