[Spice-commits] src/spice-widget.c

Frediano Ziglio fziglio at kemper.freedesktop.org
Thu Jun 16 14:53:08 UTC 2016


 src/spice-widget.c |    9 +++++++++
 1 file changed, 9 insertions(+)

New commits:
commit 7d881d2193bf5598b888a48bb4d8d7ad2e62f443
Author: Frediano Ziglio <fziglio at redhat.com>
Date:   Wed Jun 15 11:49:53 2016 +0100

    widget: Disable IME context on display widget
    
    This prevent Windows to handle IME on the widget which cause the
    application to not receive keyboard events.
    
    To test this issue set keyboard layout to Japanese and Microsoft
    IME (the default one). Set the input method to full katakana, assure
    your remote-viewer is using this method and start pressing
    alphabetical keys. On the guest (open a terminal, an editor or
    a word processor to make easier) you won't see any character.
    
    Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
    Acked-by: Christophe Fergeau <cfergeau at redhat.com>

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. */
+    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-commits mailing list