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

Frediano Ziglio fziglio at redhat.com
Fri Jun 10 12:14:07 UTC 2016


> 
> On Fri, Jun 10, 2016 at 11:14:11AM +0100, Frediano Ziglio wrote:
> > This prevent Windows to handle IME on the widget which cause the
> > application to not receive keyboard event.
> 
> Would be slightly clearer as
> "This prevents Windows from handling IME on the SpiceDisplay widget. If
> IME is enabled, the widget is going to be unable to receive some
> keyboard events (such as XXX)"

Ehm... some... I think like 60% of the keyboard :-)
At least all alphabetical keys are not working.

> I assume this is equivalent to the IMEDisableIMM() patch, but not global
> to the application?
> 

Yes, and the icon stay active (which is the complaint about the ImmDisableIME
patch).
Yes, it's not global but window specific.

> > 
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> >  src/spice-widget.c | 4 ++++
> >  1 file changed, 4 insertions(+)
> > 
> > diff --git a/src/spice-widget.c b/src/spice-widget.c
> > index c528614..58a1307 100644
> > --- a/src/spice-widget.c
> > +++ b/src/spice-widget.c
> > @@ -1403,6 +1403,10 @@ static void update_display(SpiceDisplay *display)
> >  {
> >  #ifdef G_OS_WIN32
> >      win32_window = display ?
> >      GDK_WINDOW_HWND(gtk_widget_get_window(GTK_WIDGET(display))) : NULL;
> > +    if (win32_window) {
> > +        ImmAssociateContext(win32_window, NULL);
> > +        ImmAssociateContext(GetParent(win32_window), NULL);
> 
> Why do we need to do it on the parent too? The mapping from GtkWidget
> hierarchy to actual win32 window handles sounds like some private gtk+
> implementation detail to me.
> 
> Christophe
> 

Good question... using Spy or other tools looks like 2 windows are
created. Only win32_window does not work.

Frediano


More information about the Spice-devel mailing list