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.
This commit is contained in:
Michael Natterer 2012-05-10 10:57:16 +02:00 committed by Michael Natterer
parent b738cf85d9
commit 71164e57b9

View File

@ -337,6 +337,38 @@ 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)
{
if (n_compose == 2 &&
context_simple->compose_buffer[1] == GDK_space)
{
gunichar value = 0;
switch (context_simple->compose_buffer[0])
{
case GDK_dead_doubleacute:
value = '"'; break;
}
if (value > 0)
{
gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple), value);
context_simple->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,
@ -1026,6 +1058,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, &gtk_compose_table_compact, n_compose)) if (check_compact_table (context_simple, &gtk_compose_table_compact, n_compose))
return TRUE; return TRUE;