imcontextsimple: ensure W32 code only runs on W32 displays

gdk_win32_keymap_check_compose() shouldn't be called for
non-W32 displays (i.e. when using broadway or other backends
that could be made to run on Windows).
This commit is contained in:
Руслан Ижбулатов 2018-04-26 17:42:49 +00:00
parent b0bb7f3da4
commit 76855e8999

View File

@ -1238,28 +1238,31 @@ gtk_im_context_simple_filter_keypress (GtkIMContext *context,
gboolean success = FALSE;
#ifdef GDK_WINDOWING_WIN32
guint16 output[2];
gsize output_size = 2;
switch (gdk_win32_keymap_check_compose (GDK_WIN32_KEYMAP (keymap),
priv->compose_buffer,
n_compose,
output, &output_size))
if (GDK_IS_WIN32_DISPLAY (display))
{
case GDK_WIN32_KEYMAP_MATCH_NONE:
break;
case GDK_WIN32_KEYMAP_MATCH_EXACT:
case GDK_WIN32_KEYMAP_MATCH_PARTIAL:
for (i = 0; i < output_size; i++)
guint16 output[2];
gsize output_size = 2;
switch (gdk_win32_keymap_check_compose (GDK_WIN32_KEYMAP (keymap),
priv->compose_buffer,
n_compose,
output, &output_size))
{
output_char = gdk_keyval_to_unicode (output[i]);
gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple),
output_char);
case GDK_WIN32_KEYMAP_MATCH_NONE:
break;
case GDK_WIN32_KEYMAP_MATCH_EXACT:
case GDK_WIN32_KEYMAP_MATCH_PARTIAL:
for (i = 0; i < output_size; i++)
{
output_char = gdk_keyval_to_unicode (output[i]);
gtk_im_context_simple_commit_char (GTK_IM_CONTEXT (context_simple),
output_char);
}
priv->compose_buffer[0] = 0;
return TRUE;
case GDK_WIN32_KEYMAP_MATCH_INCOMPLETE:
return TRUE;
}
priv->compose_buffer[0] = 0;
return TRUE;
case GDK_WIN32_KEYMAP_MATCH_INCOMPLETE:
return TRUE;
}
#endif