You can't draw a child behind it's parent, but you could make the parent transparent if you wanted to see what is behind the parent. GUIX only keeps views for the "top-level" children, i.e. children added to the root window. Views basically mean that top-level windows aren't allowed to draw over each other, so if one window is partially covering another, that window in the back will be forced to draw into views that don't overlap with the window in the front. It's a trade-off between optimizing drawing and the memory/time it takes to maintain the view list.
It's a bit odd if all the drawing is initiated from the root window, you generally have control over that in terms of what you are marking dirty. If the root window isn't dirty it shouldn't be redrawing from the bottom up like that. Of course a lot of APIs automatically mark the target widget dirty so keep that in mind.
Back to drawing a child below it's parent, I'm really not sure what you mean by that, because if you did that the parent would just draw over the child anyway right, so what's the point? But I have to add to my first answer in that you could override the drawing function the parent, call gx_widget_children_draw(), and then call the parent widget's draw function if you really wanted to draw the children first. The standard draw function is organize like
But nothing prevents you from defining your own drawing function and reversing that order. Again I'm not clear on what you are trying to accomplish so if this doesn't help please provide more details or maybe a picture. Thanks!