Object Mode: pass object mode to CTX_data_mode_enum_ex

This commit is contained in:
Campbell Barton
2018-02-06 16:16:50 +11:00
parent 28dfc47cf0
commit 91db372b48
3 changed files with 12 additions and 10 deletions

View File

@@ -260,7 +260,9 @@ struct RenderEngineType *CTX_data_engine_type(const bContext *C);
struct ToolSettings *CTX_data_tool_settings(const bContext *C);
const char *CTX_data_mode_string(const bContext *C);
int CTX_data_mode_enum_ex(const struct Object *obedit, const struct Object *ob);
int CTX_data_mode_enum_ex(
const struct Object *obedit, const struct Object *ob,
const short object_mode);
int CTX_data_mode_enum(const bContext *C);
void CTX_data_main_set(bContext *C, struct Main *bmain);

View File

@@ -997,7 +997,7 @@ SceneCollection *CTX_data_scene_collection(const bContext *C)
return BKE_collection_master(&scene->id);
}
int CTX_data_mode_enum_ex(const Object *obedit, const Object *ob)
int CTX_data_mode_enum_ex(const Object *obedit, const Object *ob, const short object_mode)
{
// Object *obedit = CTX_data_edit_object(C);
if (obedit) {
@@ -1021,12 +1021,12 @@ int CTX_data_mode_enum_ex(const Object *obedit, const Object *ob)
else {
// Object *ob = CTX_data_active_object(C);
if (ob) {
if (ob->mode & OB_MODE_POSE) return CTX_MODE_POSE;
else if (ob->mode & OB_MODE_SCULPT) return CTX_MODE_SCULPT;
else if (ob->mode & OB_MODE_WEIGHT_PAINT) return CTX_MODE_PAINT_WEIGHT;
else if (ob->mode & OB_MODE_VERTEX_PAINT) return CTX_MODE_PAINT_VERTEX;
else if (ob->mode & OB_MODE_TEXTURE_PAINT) return CTX_MODE_PAINT_TEXTURE;
else if (ob->mode & OB_MODE_PARTICLE_EDIT) return CTX_MODE_PARTICLE;
if (object_mode & OB_MODE_POSE) return CTX_MODE_POSE;
else if (object_mode & OB_MODE_SCULPT) return CTX_MODE_SCULPT;
else if (object_mode & OB_MODE_WEIGHT_PAINT) return CTX_MODE_PAINT_WEIGHT;
else if (object_mode & OB_MODE_VERTEX_PAINT) return CTX_MODE_PAINT_VERTEX;
else if (object_mode & OB_MODE_TEXTURE_PAINT) return CTX_MODE_PAINT_TEXTURE;
else if (object_mode & OB_MODE_PARTICLE_EDIT) return CTX_MODE_PARTICLE;
}
}
@@ -1037,7 +1037,7 @@ int CTX_data_mode_enum(const bContext *C)
{
Object *obedit = CTX_data_edit_object(C);
Object *obact = obedit ? NULL : CTX_data_active_object(C);
return CTX_data_mode_enum_ex(obedit, obact);
return CTX_data_mode_enum_ex(obedit, obact, obact ? obact->mode : OB_MODE_OBJECT);
}
/* would prefer if we can use the enum version below over this one - Campbell */

View File

@@ -3155,7 +3155,7 @@ static void drw_engines_enable_external(void)
static void drw_engines_enable(const Scene *scene, ViewLayer *view_layer, RenderEngineType *engine_type)
{
Object *obact = OBACT(view_layer);
const int mode = CTX_data_mode_enum_ex(scene->obedit, obact);
const int mode = CTX_data_mode_enum_ex(scene->obedit, obact, DST.draw_ctx.object_mode);
drw_engines_enable_from_engine(engine_type);