With reference to the linked thread, I've managed to implement z-ordering successfully in my application by modifying the order which is returned by getModelChildren().

I have an diagram editpart A, with child edit parts B(Rectangles), which have a user defined z-order. The problem is I have child edit parts for B, which contribute to the figure for A. I've overwritten getContentPane() on B to return the figure of parent edit part A, but this messes up ordering which I've implemented previously.

I found it this is caused by refreshChildren() on A performing some ordering of the elements of it's children. If I overwrite addChildVisual() on B to add the child figure to index -1(on A), there is no problem with the original ordering, except the child visuals are drawn on top of everything. I would want the child visuals to be added at the same index as its parent(B).