Don't filter control-shift+[non-hex]. (#80252, reported by Nalin
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com> * gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress): Don't filter control-shift+[non-hex]. (#80252, reported by Nalin Dahyabhai)
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||||
|
Don't filter control-shift+[non-hex].
|
||||||
|
(#80252, reported by Nalin Dahyabhai)
|
||||||
|
|
||||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes for #78258
|
Fixes for #78258
|
||||||
|
|||||||
@ -1,3 +1,9 @@
|
|||||||
|
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||||
|
Don't filter control-shift+[non-hex].
|
||||||
|
(#80252, reported by Nalin Dahyabhai)
|
||||||
|
|
||||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes for #78258
|
Fixes for #78258
|
||||||
|
|||||||
@ -1,3 +1,9 @@
|
|||||||
|
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||||
|
Don't filter control-shift+[non-hex].
|
||||||
|
(#80252, reported by Nalin Dahyabhai)
|
||||||
|
|
||||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes for #78258
|
Fixes for #78258
|
||||||
|
|||||||
@ -1,3 +1,9 @@
|
|||||||
|
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||||
|
Don't filter control-shift+[non-hex].
|
||||||
|
(#80252, reported by Nalin Dahyabhai)
|
||||||
|
|
||||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes for #78258
|
Fixes for #78258
|
||||||
|
|||||||
@ -1,3 +1,9 @@
|
|||||||
|
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||||
|
Don't filter control-shift+[non-hex].
|
||||||
|
(#80252, reported by Nalin Dahyabhai)
|
||||||
|
|
||||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes for #78258
|
Fixes for #78258
|
||||||
|
|||||||
@ -1,3 +1,9 @@
|
|||||||
|
Tue May 7 15:50:51 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkimcontextsimple.c (gtk_im_context_simple_filter_keypress):
|
||||||
|
Don't filter control-shift+[non-hex].
|
||||||
|
(#80252, reported by Nalin Dahyabhai)
|
||||||
|
|
||||||
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
Thu May 16 14:51:14 2002 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
Fixes for #78258
|
Fixes for #78258
|
||||||
|
|||||||
@ -1103,10 +1103,9 @@ canonical_hex_keyval (GdkEventKey *event)
|
|||||||
if (keyval)
|
if (keyval)
|
||||||
return keyval;
|
return keyval;
|
||||||
else
|
else
|
||||||
/* just return the keyval unchanged, we couldn't figure
|
/* No way to make it a hex digit
|
||||||
* out a way to make it a hex digit
|
|
||||||
*/
|
*/
|
||||||
return event->keyval;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -1116,6 +1115,8 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
|
|||||||
GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
|
GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
|
||||||
GSList *tmp_list;
|
GSList *tmp_list;
|
||||||
int n_compose = 0;
|
int n_compose = 0;
|
||||||
|
gboolean have_hex_mods;
|
||||||
|
guint hex_keyval;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (event->type == GDK_KEY_RELEASE)
|
if (event->type == GDK_KEY_RELEASE)
|
||||||
@ -1144,30 +1145,31 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
|
|||||||
if (event->keyval == gtk_compose_ignore[i])
|
if (event->keyval == gtk_compose_ignore[i])
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
have_hex_mods = (event->state & (ISO_14755_MOD_MASK)) == ISO_14755_MOD_MASK;
|
||||||
|
hex_keyval = canonical_hex_keyval (event);
|
||||||
|
|
||||||
while (context_simple->compose_buffer[n_compose] != 0)
|
while (context_simple->compose_buffer[n_compose] != 0)
|
||||||
n_compose++;
|
n_compose++;
|
||||||
|
|
||||||
/* First key in sequence; decide if it's a 14755 hex sequence */
|
|
||||||
if (n_compose == 0)
|
|
||||||
context_simple->in_hex_sequence =
|
|
||||||
((event->state & (ISO_14755_MOD_MASK)) == ISO_14755_MOD_MASK);
|
|
||||||
|
|
||||||
/* If we are already in a non-hex sequence, or
|
/* If we are already in a non-hex sequence, or
|
||||||
* the 14755 modifiers are not held down, filter all
|
* this keystroke is not 14755 modifiers + hex digit, don't filter
|
||||||
* key events with accelerator modifiers held down.
|
* key events with accelerator modifiers held down.
|
||||||
*/
|
*/
|
||||||
if (!context_simple->in_hex_sequence ||
|
if ((n_compose > 0 && !context_simple->in_hex_sequence) || !have_hex_mods || !hex_keyval)
|
||||||
((event->state & (ISO_14755_MOD_MASK)) != ISO_14755_MOD_MASK))
|
|
||||||
{
|
{
|
||||||
if (event->state &
|
if (event->state &
|
||||||
(gtk_accelerator_get_default_mod_mask () & ~GDK_SHIFT_MASK))
|
(gtk_accelerator_get_default_mod_mask () & ~GDK_SHIFT_MASK))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* First key in sequence; decide if it's a 14755 hex sequence */
|
||||||
|
if (n_compose == 0)
|
||||||
|
context_simple->in_hex_sequence = have_hex_mods;
|
||||||
|
|
||||||
/* Then, check for compose sequences
|
/* Then, check for compose sequences
|
||||||
*/
|
*/
|
||||||
if (context_simple->in_hex_sequence)
|
if (context_simple->in_hex_sequence)
|
||||||
context_simple->compose_buffer[n_compose++] = canonical_hex_keyval (event);
|
context_simple->compose_buffer[n_compose++] = hex_keyval ? hex_keyval : event->keyval;
|
||||||
else
|
else
|
||||||
context_simple->compose_buffer[n_compose++] = event->keyval;
|
context_simple->compose_buffer[n_compose++] = event->keyval;
|
||||||
|
|
||||||
@ -1176,7 +1178,7 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
|
|||||||
if (context_simple->in_hex_sequence)
|
if (context_simple->in_hex_sequence)
|
||||||
{
|
{
|
||||||
/* If the modifiers are still held down, consider the sequence again */
|
/* If the modifiers are still held down, consider the sequence again */
|
||||||
if ((event->state & (ISO_14755_MOD_MASK)) == ISO_14755_MOD_MASK)
|
if (have_hex_mods)
|
||||||
{
|
{
|
||||||
/* space ends the sequence, and we eat the space */
|
/* space ends the sequence, and we eat the space */
|
||||||
if (n_compose > 1 &&
|
if (n_compose > 1 &&
|
||||||
@ -1228,7 +1230,7 @@ gtk_im_context_simple_get_preedit_string (GtkIMContext *context,
|
|||||||
PangoAttrList **attrs,
|
PangoAttrList **attrs,
|
||||||
gint *cursor_pos)
|
gint *cursor_pos)
|
||||||
{
|
{
|
||||||
char outbuf[25]; /* up to 4 hex digits */
|
char outbuf[37]; /* up to 6 hex digits */
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
|
||||||
GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
|
GtkIMContextSimple *context_simple = GTK_IM_CONTEXT_SIMPLE (context);
|
||||||
|
|||||||
Reference in New Issue
Block a user