Index: source/blender/editors/space_view3d/drawobject.c =================================================================== --- source/blender/editors/space_view3d/drawobject.c (revision 31446) +++ source/blender/editors/space_view3d/drawobject.c (working copy) @@ -5538,9 +5538,13 @@ /* don't do xray in particle mode, need the z-buffer */ if(!(ob->mode & OB_MODE_PARTICLE_EDIT)) { /* xray and transp are set when it is drawing the 2nd/3rd pass */ - if(!v3d->xray && !v3d->transp && (ob->dtx & OB_DRAWXRAY) && !(ob->dtx & OB_DRAWTRANSP)) { + if(!v3d->xray && !v3d->transp && (ob->dtx & OB_DRAWXRAY)) { add_view3d_after(v3d, base, V3D_XRAY, flag); - return; + + if(ob->dtx & OB_DRAWTRANSP) { + add_view3d_after(v3d, base, V3D_XRAYTRANSP, flag); + } + return; } } } Index: source/blender/editors/space_view3d/view3d_draw.c =================================================================== --- source/blender/editors/space_view3d/view3d_draw.c (revision 31446) +++ source/blender/editors/space_view3d/view3d_draw.c (working copy) @@ -1440,7 +1440,7 @@ int doit= 0; for(v3da= v3d->afterdraw.first; v3da; v3da= v3da->next) - if(v3da->type==V3D_XRAY) doit= 1; + if(v3da->type==V3D_XRAY || v3da->type==V3D_XRAYTRANSP) doit= 1; if(doit) { if(clear && v3d->zbuf) glClear(GL_DEPTH_BUFFER_BIT); @@ -1453,6 +1453,13 @@ BLI_remlink(&v3d->afterdraw, v3da); MEM_freeN(v3da); } + else if(v3da->type==V3D_XRAYTRANSP){ + v3d->transp= TRUE; + draw_object(scene, ar, v3d, v3da->base, v3da->flag); + BLI_remlink(&v3d->afterdraw, v3da); + MEM_freeN(v3da); + v3d->transp= FALSE; + } } v3d->xray= FALSE; } @@ -1767,6 +1774,8 @@ v3d->xray= TRUE; v3d->transp= FALSE; } else if (v3da->type==V3D_TRANSP) { v3d->xray= FALSE; v3d->transp= TRUE; + } else if (v3da->type == V3D_XRAYTRANSP) { + v3d->xray= TRUE; v3d->transp= TRUE; } draw_object(scene, ar, v3d, v3da->base, 0); /* Draw Xray or Transp objects normally */ Index: source/blender/editors/space_view3d/view3d_intern.h =================================================================== --- source/blender/editors/space_view3d/view3d_intern.h (revision 31446) +++ source/blender/editors/space_view3d/view3d_intern.h (working copy) @@ -56,6 +56,7 @@ #define V3D_XRAY 1 #define V3D_TRANSP 2 +#define V3D_XRAYTRANSP 4 #define V3D_SELECT_MOUSE 1