diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 7a10f9082e5..649b3e3ad9b 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -67,7 +67,7 @@ static void brush_set_defaults(Brush *brush) brush->blend = 0; brush->flag = 0; - brush->ob_mode = (OB_MODE_SCULPT|OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT); + brush->ob_mode = OB_MODE_ALL_PAINT; /* BRUSH SCULPT TOOL SETTINGS */ brush->size= 35; /* radius of the brush in pixels */ diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 595781ac9bd..a9fd383114f 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -11124,7 +11124,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main) Brush *br; for(br= main->brush.first; br; br= br->id.next) { if(br->ob_mode==0) - br->ob_mode= (OB_MODE_SCULPT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT|OB_MODE_VERTEX_PAINT); + br->ob_mode= OB_MODE_ALL_PAINT; } } diff --git a/source/blender/editors/space_info/info_stats.c b/source/blender/editors/space_info/info_stats.c index 846812cc1f0..7a6e5dad017 100644 --- a/source/blender/editors/space_info/info_stats.c +++ b/source/blender/editors/space_info/info_stats.c @@ -339,7 +339,7 @@ static void stats_update(Scene *scene) /* Pose Mode */ stats_object_pose(ob, &stats); } - else if(ob && (ob->flag & (OB_MODE_SCULPT|OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT))) { + else if(ob && (ob->flag & OB_MODE_ALL_PAINT)) { /* Sculpt and Paint Mode */ stats_object_paint(ob, &stats); } diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index b3dbf3c853a..23b4cf5fd99 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -443,7 +443,7 @@ int calc_manipulator_stats(const bContext *C) mul_m4_v3(ob->obmat, scene->twmax); } } - else if(ob && (ob->mode & (OB_MODE_SCULPT|OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT))) { + else if(ob && (ob->mode & OB_MODE_ALL_PAINT)) { ; } else if(ob && ob->mode & OB_MODE_PARTICLE_EDIT) { diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c index 2d936460c53..085b784b6f0 100644 --- a/source/blender/editors/transform/transform_orientations.c +++ b/source/blender/editors/transform/transform_orientations.c @@ -884,7 +884,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3], result = ORIENTATION_EDGE; } } - else if(ob && (ob->mode & (OB_MODE_SCULPT|OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT|OB_MODE_PARTICLE_EDIT))) + else if(ob && (ob->mode & (OB_MODE_ALL_PAINT|OB_MODE_PARTICLE_EDIT))) { } else { diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index 60b4f6a51b6..a5e8e1545b0 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -557,6 +557,9 @@ typedef enum ObjectMode { OB_MODE_POSE = 64 } ObjectMode; +/* any mode where the brush system is used */ +#define OB_MODE_ALL_PAINT (OB_MODE_SCULPT|OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT) + #define MAX_DUPLI_RECUR 8 #ifdef __cplusplus diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c index 3b83ec2d3ad..0fe3972104e 100644 --- a/source/blender/makesrna/intern/rna_sculpt_paint.c +++ b/source/blender/makesrna/intern/rna_sculpt_paint.c @@ -162,8 +162,19 @@ static int rna_Brush_mode_poll(PointerRNA *ptr, PointerRNA value) Scene *scene= (Scene *)ptr->id.data; Object *ob = OBACT; Brush *brush= value.id.data; - return ob->mode & brush->ob_mode; + + /* weak, for object painting we need to check against the object mode + * but for 2D view image painting we always want texture brushes + * this is not quite correct since you could be in object weightpaint + * mode at the same time as the 2D image view, but for now its *good enough* */ + if(ob->mode & OB_MODE_ALL_PAINT) { + return ob->mode & brush->ob_mode; + } + else { + return OB_MODE_TEXTURE_PAINT & brush->ob_mode; + } } + #else static void rna_def_paint(BlenderRNA *brna)