Try to always keep the server window Z-order in sync with the X11 one
using a heuristic based on mouse and expose events.

diff --git a/server/trace.c b/server/trace.c
index 266673f..a07a54c 100644
--- a/server/trace.c
+++ b/server/trace.c
@@ -2302,6 +2302,13 @@
     dump_varargs_rectangles( cur_size );
 }
 
+static void dump_update_window_zorder_request( const struct update_window_zorder_request *req )
+{
+    fprintf( stderr, " window=%p,", req->window );
+    fprintf( stderr, " rect=" );
+    dump_rectangle( &req->rect );
+}
+
 static void dump_redraw_window_request( const struct redraw_window_request *req )
 {
     fprintf( stderr, " window=%p,", req->window );
@@ -2839,6 +2846,7 @@
     (dump_func)dump_get_window_region_request,
     (dump_func)dump_set_window_region_request,
     (dump_func)dump_get_update_region_request,
+    (dump_func)dump_update_window_zorder_request,
     (dump_func)dump_redraw_window_request,
     (dump_func)dump_set_window_property_request,
     (dump_func)dump_remove_window_property_request,
@@ -3027,6 +3035,7 @@
     (dump_func)dump_get_update_region_reply,
     (dump_func)0,
     (dump_func)0,
+    (dump_func)0,
     (dump_func)dump_remove_window_property_reply,
     (dump_func)dump_get_window_property_reply,
     (dump_func)dump_get_window_properties_reply,
@@ -3211,6 +3220,7 @@
     "get_window_region",
     "set_window_region",
     "get_update_region",
+    "update_window_zorder",
     "redraw_window",
     "set_window_property",
     "remove_window_property",