This patch implements two new functions, void gdk_window_shape_combine_rectangles (GdkWindow *window, GdkRectangle *rectangles, gint nrectangles, gint offset_x, gint offset_y); void gdk_window_shape_combine_region (GdkWindow *window, GdkRegion *region, gint offset_x, gint offset_y); These work the same as gdk_window_shape_combine_mask, except they use an array of GdkRectangle or a GdkRegion, respectively. This patch also includes changes on the back end, so that the implementation dependent code only has to implement one of the three gdk_window_shape functions. Note that I've only tested this under X, so I'd be grateful if someone could test the other implementations. The win32 and linux-fb implementations should be fine, since they're implemented in a similar enough way to x11. I would particularly like someone to look at the nanox implementation. If you run it and get something like "unimplemented gdk_window_impl_nanox_shape_combine_mask", you're hitting the nanox function stub, and everything's fine. If you get "Shaped windows not implemented." or a seg fault, I'm defining the values of some pointers to functions in the wrong place. This patch requires gtk-rsteinke-001205-0.patch and gtk-rsteinke-001222-2.patch. Ron Steinke