Commit f619f91a authored by Michael Natterer's avatar Michael Natterer Committed by Michael Natterer

gtk: add more OSX special casing for the deadacute and deaddoubleacute keys

So " plus foo prduces foo-with-diaereses and ' plus c produces
c-with-cedilla.
(cherry picked from commit c0102b30)
parent e36f80f0
...@@ -371,26 +371,51 @@ check_quartz_special_cases (GtkIMContextSimple *context_simple, ...@@ -371,26 +371,51 @@ check_quartz_special_cases (GtkIMContextSimple *context_simple,
gint n_compose) gint n_compose)
{ {
GtkIMContextSimplePrivate *priv = context_simple->priv; GtkIMContextSimplePrivate *priv = context_simple->priv;
gunichar value = 0;
if (n_compose == 2 && if (n_compose == 2)
priv->compose_buffer[1] == GDK_KEY_space)
{ {
gunichar value = 0;
switch (priv->compose_buffer[0]) switch (priv->compose_buffer[0])
{ {
case GDK_KEY_dead_doubleacute: case GDK_KEY_dead_doubleacute:
value = '"'; break; switch (priv->compose_buffer[1])
{
case GDK_KEY_dead_doubleacute:
case GDK_KEY_space:
value = '"'; break;
case 'a': value = GDK_KEY_adiaeresis; break;
case 'A': value = GDK_KEY_Adiaeresis; break;
case 'e': value = GDK_KEY_ediaeresis; break;
case 'E': value = GDK_KEY_Ediaeresis; break;
case 'i': value = GDK_KEY_idiaeresis; break;
case 'I': value = GDK_KEY_Idiaeresis; break;
case 'o': value = GDK_KEY_odiaeresis; break;
case 'O': value = GDK_KEY_Odiaeresis; break;
case 'u': value = GDK_KEY_udiaeresis; break;
case 'U': value = GDK_KEY_Udiaeresis; break;
case 'y': value = GDK_KEY_ydiaeresis; break;
case 'Y': value = 0x0178; break; /* should be GDK_KEY_Ydiaeresis ?? */
}
break;
case GDK_KEY_dead_acute:
switch (priv->compose_buffer[1])
{
case 'c': value = GDK_KEY_ccedilla; break;
case 'C': value = GDK_KEY_Ccedilla; break;
}
break;
} }
}
if (value > 0) if (value > 0)
{ {
gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple), value); gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple), value);
priv->compose_buffer[0] = 0; priv->compose_buffer[0] = 0;
GTK_NOTE (MISC, g_print ("quartz: U+%04X\n", value)); GTK_NOTE (MISC, g_print ("quartz: U+%04X\n", value));
return TRUE; return TRUE;
}
} }
return FALSE; return FALSE;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment