Check if the object is in editmode with (ob->mode==OB_MODE_EDIT) rather then (ob==scene->obedit)

Was trying to fix a hard to redo crash with custom bone shapes in editmode but cant redo. still, will help with future multi-editmode.
This commit is contained in:
Campbell Barton 2009-10-07 11:36:29 +00:00
parent efe3858000
commit a899e9dd18
5 changed files with 12 additions and 12 deletions

@ -549,7 +549,7 @@ static void vertex_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, fl
/* mballs have a different dupli handling */ /* mballs have a different dupli handling */
if(ob->type!=OB_MBALL) ob->flag |= OB_DONE; /* doesnt render */ if(ob->type!=OB_MBALL) ob->flag |= OB_DONE; /* doesnt render */
if(par==scene->obedit) { if(par->mode==OB_MODE_EDIT) {
dm->foreachMappedVert(dm, vertex_dupli__mapFunc, (void*) &vdd); dm->foreachMappedVert(dm, vertex_dupli__mapFunc, (void*) &vdd);
} }
else { else {
@ -760,7 +760,7 @@ static void face_duplilist(ListBase *lb, ID *id, Scene *scene, Object *par, floa
else go= go->next; /* group loop */ else go= go->next; /* group loop */
} }
if(par==scene->obedit) { if(par->mode==OB_MODE_EDIT) {
MEM_freeN(mface); MEM_freeN(mface);
MEM_freeN(mvert); MEM_freeN(mvert);
} }

@ -9137,7 +9137,7 @@ int modifiers_isDeformed(Scene *scene, Object *ob)
ModifierData *md = modifiers_getVirtualModifierList(ob); ModifierData *md = modifiers_getVirtualModifierList(ob);
for (; md; md=md->next) { for (; md; md=md->next) {
if(ob==scene->obedit && (md->mode & eModifierMode_Editmode)==0); if(ob->mode==OB_MODE_EDIT && (md->mode & eModifierMode_Editmode)==0);
else else
if(modifier_isDeformer(md)) if(modifier_isDeformer(md))
return 1; return 1;

@ -2367,7 +2367,7 @@ void object_handle_update(Scene *scene, Object *ob)
EditMesh *em = BKE_mesh_get_editmesh(ob->data); EditMesh *em = BKE_mesh_get_editmesh(ob->data);
// here was vieweditdatamask? XXX // here was vieweditdatamask? XXX
if(ob==scene->obedit) { if(ob->mode==OB_MODE_EDIT) {
makeDerivedMesh(scene, ob, em, CD_MASK_BAREMESH); makeDerivedMesh(scene, ob, em, CD_MASK_BAREMESH);
BKE_mesh_end_editmesh(ob->data, em); BKE_mesh_end_editmesh(ob->data, em);
} else } else

@ -350,7 +350,7 @@ static void draw_textured_begin(Scene *scene, View3D *v3d, RegionView3D *rv3d, O
int istex, solidtex= 0; int istex, solidtex= 0;
// XXX scene->obedit warning // XXX scene->obedit warning
if(v3d->drawtype==OB_SOLID || (ob==scene->obedit && v3d->drawtype!=OB_TEXTURE)) { if(v3d->drawtype==OB_SOLID || (ob->mode==OB_MODE_EDIT && v3d->drawtype!=OB_TEXTURE)) {
/* draw with default lights in solid draw mode and edit mode */ /* draw with default lights in solid draw mode and edit mode */
solidtex= 1; solidtex= 1;
Gtexdraw.islit= -1; Gtexdraw.islit= -1;
@ -561,7 +561,7 @@ void draw_mesh_text(Scene *scene, Object *ob, int glsl)
return; return;
/* don't draw when editing */ /* don't draw when editing */
if(ob == scene->obedit) if(ob->mode==OB_MODE_EDIT)
return; return;
else if(ob==OBACT) else if(ob==OBACT)
if(paint_facesel_test(ob)) if(paint_facesel_test(ob))
@ -641,7 +641,7 @@ void draw_mesh_textured(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *o
/* draw the textured mesh */ /* draw the textured mesh */
draw_textured_begin(scene, v3d, rv3d, ob); draw_textured_begin(scene, v3d, rv3d, ob);
if(ob == scene->obedit) { if(ob->mode==OB_MODE_EDIT) {
glColor4f(1.0f,1.0f,1.0f,1.0f); glColor4f(1.0f,1.0f,1.0f,1.0f);
dm->drawMappedFacesTex(dm, draw_em_tf_mapped__set_draw, me->edit_mesh); dm->drawMappedFacesTex(dm, draw_em_tf_mapped__set_draw, me->edit_mesh);
} else if(faceselect) { } else if(faceselect) {

@ -5512,7 +5512,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
if(ob==OBACT && (ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT))) { if(ob==OBACT && (ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT))) {
if(ob->type==OB_MESH) { if(ob->type==OB_MESH) {
if(ob==scene->obedit); if(ob->mode==OB_MODE_EDIT);
else { else {
if(dt<OB_SOLID) if(dt<OB_SOLID)
zbufoff= 1; zbufoff= 1;
@ -5534,7 +5534,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
if(dt>=OB_BOUNDBOX ) { if(dt>=OB_BOUNDBOX ) {
dtx= ob->dtx; dtx= ob->dtx;
if(scene->obedit==ob) { if(ob->mode==OB_MODE_EDIT) {
// the only 2 extra drawtypes alowed in editmode // the only 2 extra drawtypes alowed in editmode
dtx= dtx & (OB_DRAWWIRE|OB_TEXSPACE); dtx= dtx & (OB_DRAWWIRE|OB_TEXSPACE);
} }
@ -5550,7 +5550,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag)
/* draw outline for selected solid objects, mesh does itself */ /* draw outline for selected solid objects, mesh does itself */
if((v3d->flag & V3D_SELECT_OUTLINE) && ob->type!=OB_MESH) { if((v3d->flag & V3D_SELECT_OUTLINE) && ob->type!=OB_MESH) {
if(dt>OB_WIRE && dt<OB_TEXTURE && ob!=scene->obedit && (flag && DRAW_SCENESET)==0) { if(dt>OB_WIRE && dt<OB_TEXTURE && ob->mode!=OB_MODE_EDIT && (flag && DRAW_SCENESET)==0) {
if (!(ob->dtx&OB_DRAWWIRE) && (ob->flag&SELECT) && !(flag&DRAW_PICKING)) { if (!(ob->dtx&OB_DRAWWIRE) && (ob->flag&SELECT) && !(flag&DRAW_PICKING)) {
drawSolidSelect(scene, v3d, ar, base); drawSolidSelect(scene, v3d, ar, base);
@ -6159,7 +6159,7 @@ void draw_object_backbufsel(Scene *scene, View3D *v3d, RegionView3D *rv3d, Objec
switch( ob->type) { switch( ob->type) {
case OB_MESH: case OB_MESH:
{ {
if(ob == scene->obedit) { if(ob->mode==OB_MODE_EDIT) {
Mesh *me= ob->data; Mesh *me= ob->data;
EditMesh *em= me->edit_mesh; EditMesh *em= me->edit_mesh;
@ -6215,7 +6215,7 @@ static void draw_object_mesh_instance(Scene *scene, View3D *v3d, RegionView3D *r
DerivedMesh *dm=NULL, *edm=NULL; DerivedMesh *dm=NULL, *edm=NULL;
int glsl; int glsl;
if(ob == scene->obedit) if(ob->mode == OB_MODE_EDIT)
edm= editmesh_get_derived_base(ob, me->edit_mesh); edm= editmesh_get_derived_base(ob, me->edit_mesh);
else else
dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH); dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH);