quartz: add a special case to GtkIMContextSimply for entering '"'
Turn dead_doubleacute plus space into '"' and not into a double acute because that's the way to enter double quotes on the US-International keyboard layout. (cherry picked from commit 71164e57b9b999f07a613806058ee87b9cbf882d)
This commit is contained in:
committed by
Michael Natterer
parent
cc057d5c4e
commit
c1cfcd03a5
@ -364,6 +364,40 @@ check_win32_special_case_after_compact_match (GtkIMContextSimple *context_sim
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef GDK_WINDOWING_QUARTZ
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
check_quartz_special_cases (GtkIMContextSimple *context_simple,
|
||||||
|
gint n_compose)
|
||||||
|
{
|
||||||
|
GtkIMContextSimplePrivate *priv = context_simple->priv;
|
||||||
|
|
||||||
|
if (n_compose == 2 &&
|
||||||
|
priv->compose_buffer[1] == GDK_KEY_space)
|
||||||
|
{
|
||||||
|
gunichar value = 0;
|
||||||
|
|
||||||
|
switch (priv->compose_buffer[0])
|
||||||
|
{
|
||||||
|
case GDK_KEY_dead_doubleacute:
|
||||||
|
value = '"'; break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value > 0)
|
||||||
|
{
|
||||||
|
gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple), value);
|
||||||
|
priv->compose_buffer[0] = 0;
|
||||||
|
|
||||||
|
GTK_NOTE (MISC, g_print ("quartz: U+%04X\n", value));
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
check_compact_table (GtkIMContextSimple *context_simple,
|
check_compact_table (GtkIMContextSimple *context_simple,
|
||||||
const GtkComposeTableCompact *table,
|
const GtkComposeTableCompact *table,
|
||||||
@ -1068,6 +1102,11 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef GDK_WINDOWING_QUARTZ
|
||||||
|
if (check_quartz_special_cases (context_simple, n_compose))
|
||||||
|
return TRUE;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (check_compact_table (context_simple, >k_compose_table_compact, n_compose))
|
if (check_compact_table (context_simple, >k_compose_table_compact, n_compose))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user