Migrating to client-side windows In version 2.18, GDK has been changed to use client-side windows. This means that there is no longer a 1-1 correspondence between #GdkWindows and windows in the underlying window system. In particular, it is no longer correct to assume that each window has an associated XID. Code that makes this assumption can sometimes be fixed by calling gdk_window_ensure_native() on the windows in question. GDK looks for the GDK_NATIVE_WINDOWS environment variable and makes all windows native if it is set. It also tries to be more compatible with the way prior versions worked in some other ways. Some applications assume that they can just operate on the X windows corresponding to their GDK windows without ever telling GDK. One example that we've seen is changing the child window stacking order using XRestackWindows(). Fixing this properly requires to fix the code to use GDK functions to achieve whatever it is trying to achieve. One change that can cause problems for some applications is that GDK is more aggressive about optimizing away expose events. Code that does more than just repainting exposed areas in response to expose events may be affected by this.