Fix T77003: GPencil Paint presets not initializated
In som ecases, the Paint was not ready when the brushes and palette were created. Now, first the paint is checked.
This commit is contained in:
parent
6f8d99322c
commit
22462fed00
Notes:
blender-bot
2023-04-19 16:51:29 +02:00
Referenced by issue #77003, GPencil: Crash on Draw mode with custom startup file
Referenced by pull request #107131, Fix #107125: Entering Grease Pencil Vertex Paint mode crashes
Referenced by commit 45c0762f1b
, Fix #107125: Entering Grease Pencil Vertex Paint mode crashes
|
@ -337,10 +337,6 @@ static int gpencil_paintmode_toggle_exec(bContext *C, wmOperator *op)
|
|||
/* set mode */
|
||||
if (gpd->flag & GP_DATA_STROKE_PAINTMODE) {
|
||||
mode = OB_MODE_PAINT_GPENCIL;
|
||||
BKE_brush_gpencil_paint_presets(bmain, ts, false);
|
||||
|
||||
/* Ensure Palette by default. */
|
||||
BKE_gpencil_palette_ensure(bmain, CTX_data_scene(C));
|
||||
}
|
||||
else {
|
||||
mode = OB_MODE_OBJECT;
|
||||
|
@ -356,8 +352,16 @@ static int gpencil_paintmode_toggle_exec(bContext *C, wmOperator *op)
|
|||
}
|
||||
|
||||
if (mode == OB_MODE_PAINT_GPENCIL) {
|
||||
/* be sure we have brushes */
|
||||
/* Be sure we have brushes and Paint settings.
|
||||
* Need Draw and Vertex (used fro Tint). */
|
||||
BKE_paint_ensure(ts, (Paint **)&ts->gp_paint);
|
||||
BKE_paint_ensure(ts, (Paint **)&ts->gp_vertexpaint);
|
||||
|
||||
BKE_brush_gpencil_paint_presets(bmain, ts, false);
|
||||
|
||||
/* Ensure Palette by default. */
|
||||
BKE_gpencil_palette_ensure(bmain, CTX_data_scene(C));
|
||||
|
||||
Paint *paint = &ts->gp_paint->paint;
|
||||
/* if not exist, create a new one */
|
||||
if ((paint->brush == NULL) || (paint->brush->gpencil_settings == NULL)) {
|
||||
|
@ -445,7 +449,6 @@ static int gpencil_sculptmode_toggle_exec(bContext *C, wmOperator *op)
|
|||
/* set mode */
|
||||
if (gpd->flag & GP_DATA_STROKE_SCULPTMODE) {
|
||||
mode = OB_MODE_SCULPT_GPENCIL;
|
||||
BKE_brush_gpencil_sculpt_presets(bmain, ts, false);
|
||||
}
|
||||
else {
|
||||
mode = OB_MODE_OBJECT;
|
||||
|
@ -464,6 +467,8 @@ static int gpencil_sculptmode_toggle_exec(bContext *C, wmOperator *op)
|
|||
/* be sure we have brushes */
|
||||
BKE_paint_ensure(ts, (Paint **)&ts->gp_sculptpaint);
|
||||
BKE_paint_toolslots_brush_validate(bmain, &ts->gp_sculptpaint->paint);
|
||||
|
||||
BKE_brush_gpencil_sculpt_presets(bmain, ts, false);
|
||||
}
|
||||
|
||||
/* setup other modes */
|
||||
|
@ -545,7 +550,6 @@ static int gpencil_weightmode_toggle_exec(bContext *C, wmOperator *op)
|
|||
/* set mode */
|
||||
if (gpd->flag & GP_DATA_STROKE_WEIGHTMODE) {
|
||||
mode = OB_MODE_WEIGHT_GPENCIL;
|
||||
BKE_brush_gpencil_weight_presets(bmain, ts, false);
|
||||
}
|
||||
else {
|
||||
mode = OB_MODE_OBJECT;
|
||||
|
@ -564,6 +568,8 @@ static int gpencil_weightmode_toggle_exec(bContext *C, wmOperator *op)
|
|||
/* be sure we have brushes */
|
||||
BKE_paint_ensure(ts, (Paint **)&ts->gp_weightpaint);
|
||||
BKE_paint_toolslots_brush_validate(bmain, &ts->gp_weightpaint->paint);
|
||||
|
||||
BKE_brush_gpencil_weight_presets(bmain, ts, false);
|
||||
}
|
||||
|
||||
/* setup other modes */
|
||||
|
@ -644,10 +650,6 @@ static int gpencil_vertexmode_toggle_exec(bContext *C, wmOperator *op)
|
|||
/* set mode */
|
||||
if (gpd->flag & GP_DATA_STROKE_VERTEXMODE) {
|
||||
mode = OB_MODE_VERTEX_GPENCIL;
|
||||
BKE_brush_gpencil_vertex_presets(bmain, ts, false);
|
||||
|
||||
/* Ensure Palette by default. */
|
||||
BKE_gpencil_palette_ensure(bmain, CTX_data_scene(C));
|
||||
}
|
||||
else {
|
||||
mode = OB_MODE_OBJECT;
|
||||
|
@ -666,6 +668,11 @@ static int gpencil_vertexmode_toggle_exec(bContext *C, wmOperator *op)
|
|||
/* be sure we have brushes */
|
||||
BKE_paint_ensure(ts, (Paint **)&ts->gp_vertexpaint);
|
||||
BKE_paint_toolslots_brush_validate(bmain, &ts->gp_vertexpaint->paint);
|
||||
|
||||
BKE_brush_gpencil_vertex_presets(bmain, ts, false);
|
||||
|
||||
/* Ensure Palette by default. */
|
||||
BKE_gpencil_palette_ensure(bmain, CTX_data_scene(C));
|
||||
}
|
||||
|
||||
/* setup other modes */
|
||||
|
|
Loading…
Reference in New Issue