public static Gdk.Window TopWindowAtPosition (int px, int py)
{
var windowStack = Gdk.Screen.Default.WindowStack;
Gdk.Window ret = null;
foreach (Gdk.Window win in windowStack) {
//The latter item in "windowStack" has higher z-order
if (win.IsViewable && win.FrameExtents.Contains (px, py))
ret = win;
}
return ret;
}