[Spice-devel] [spice-gtk] widget: Disable IME context on display widget

Pavel Grunt pgrunt at redhat.com
Wed Jun 15 11:04:46 UTC 2016


Hi Frediano,

On Wed, 2016-06-15 at 11:54 +0100, Frediano Ziglio wrote:
> This prevent Windows to handle IME on the widget which cause the
> application to not receive keyboard events.
> 
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  src/spice-widget.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/src/spice-widget.c b/src/spice-widget.c
> index c528614..595c8f5 100644
> --- a/src/spice-widget.c
> +++ b/src/spice-widget.c
> @@ -1687,6 +1687,15 @@ static gboolean focus_in_event(GtkWidget *widget,
> GdkEventFocus *focus G_GNUC_UN
>          return true;
>  
>      release_keys(display);
> +#ifdef G_OS_WIN32
> +    /* Reset the IME context of the focused window.
> +     * Note that the focused window can be different from SpiceDisplay
> +     * one but the events are received and forwarder by this window. */

Does it mean that events intended to be for the window but not for SpiceDisplay
will be now forwarded to SpiceDisplay ? e.g.: navigation in menu items using
accelerators (alt+v to open the view menu)

Pavel

> +    HWND hwnd_focused = GetFocus();
> +    if (hwnd_focused != NULL) {
> +        ImmAssociateContext(hwnd_focused, NULL);
> +    }
> +#endif
>      if (!d->disable_inputs)
>          spice_gtk_session_sync_keyboard_modifiers(d->gtk_session);
>      if (d->keyboard_grab_released)


More information about the Spice-devel mailing list