[gtk+/composite-templates] XIM: Don't force random windows to become native



commit 659046468339a093aeae95604c0d1e290e6534ca
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Sep 30 20:33:38 2012 -0400

    XIM: Don't force random windows to become native
    
    GDK_WINDOW_XID() has the side-effect of turning a window native;
    this in turn can have unexpected effects such as black backgrounds.
    Avoid this by using the XID of the toplevel.
    https://bugzilla.gnome.org/show_bug.cgi?id=682395

 modules/input/gtkimcontextxim.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/modules/input/gtkimcontextxim.c b/modules/input/gtkimcontextxim.c
index 1a32e5a..6a20b60 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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]