Fix #22645: Texture paint: soften tool does draw brushes

Disable projection painting for soften tools.

Also it looks like smear tools support projection in the code, so
enabled project paint menu for such tools
This commit is contained in:
2010-11-17 06:30:06 +00:00
parent 1bb98b4194
commit d0d16ecaee
2 changed files with 13 additions and 1 deletions

View File

@@ -1159,7 +1159,7 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel, bpy.types.Panel):
@classmethod
def poll(cls, context):
brush = context.tool_settings.image_paint.brush
return (brush and brush.imagepaint_tool != 'SMEAR')
return (brush and brush.imagepaint_tool != 'SOFTEN')
def draw_header(self, context):
ipaint = context.tool_settings.image_paint

View File

@@ -4526,6 +4526,8 @@ typedef struct PaintOperation {
ViewContext vc;
wmTimer *timer;
short restore_projection;
} PaintOperation;
static void paint_redraw(bContext *C, ImagePaintState *s, int final)
@@ -4611,6 +4613,13 @@ static int texture_paint_init(bContext *C, wmOperator *op)
pop->first= 1;
op->customdata= pop;
/* XXX: Soften tool does not support projection painting atm, so just disable
projection for this brush */
if(brush->imagepaint_tool == PAINT_TOOL_SOFTEN) {
settings->imapaint.flag |= IMAGEPAINT_PROJECT_DISABLE;
pop->restore_projection = 1;
}
/* initialize from context */
if(CTX_wm_region_view3d(C)) {
pop->mode= PAINT_MODE_3D;
@@ -4731,6 +4740,9 @@ static void paint_exit(bContext *C, wmOperator *op)
if(pop->timer)
WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), pop->timer);
if(pop->restore_projection)
settings->imapaint.flag &= ~IMAGEPAINT_PROJECT_DISABLE;
settings->imapaint.flag &= ~IMAGEPAINT_DRAWING;
imapaint_canvas_free(&pop->s);
brush_painter_free(pop->painter);