X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=modules%2Finput%2Fgtkimcontextxim.c;h=6a20b60e7f9c9bfcee491b9a2c4f9d8684920223;hb=d6809d050a8666f7c98ee4b74f22ff828782fe16;hp=1a32e5abfd5671efb4bed7e9e354567381c964ec;hpb=307a1dc638ca3ac71f1025655d7e82b4cd0825f2;p=~andy%2Fgtk diff --git a/modules/input/gtkimcontextxim.c b/modules/input/gtkimcontextxim.c index 1a32e5abf..6a20b60e7 100644 --- a/modules/input/gtkimcontextxim.c +++ b/modules/input/gtkimcontextxim.c @@ -697,18 +697,21 @@ gtk_im_context_xim_filter_keypress (GtkIMContext *context, KeySym keysym; Status status; gboolean result = FALSE; - GdkWindow *root_window = gdk_screen_get_root_window (gdk_window_get_screen (event->window)); - + GdkWindow *root_window; + GdkWindow *window; XKeyPressedEvent xevent; if (event->type == GDK_KEY_RELEASE && !context_xim->filter_key_release) return FALSE; + root_window = gdk_screen_get_root_window (gdk_window_get_screen (event->window)); + window = gdk_window_get_toplevel (event->window); + xevent.type = (event->type == GDK_KEY_PRESS) ? KeyPress : KeyRelease; xevent.serial = 0; /* hope it doesn't matter */ xevent.send_event = event->send_event; - xevent.display = GDK_WINDOW_XDISPLAY (event->window); - xevent.window = GDK_WINDOW_XID (event->window); + xevent.display = GDK_WINDOW_XDISPLAY (window); + xevent.window = GDK_WINDOW_XID (window); xevent.root = GDK_WINDOW_XID (root_window); xevent.subwindow = xevent.window; xevent.time = event->time;