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

Frediano Ziglio fziglio at redhat.com
Wed Jun 15 10:54:26 UTC 2016


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. */
+    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)
-- 
2.7.4



More information about the Spice-devel mailing list