Commit: 5494926ee564dcde052e875debb90e27c60cd6aa Author: Antonioya Date: Tue Apr 16 11:27:36 2019 +0200 Branches: master https://developer.blender.org/rB5494926ee564dcde052e875debb90e27c60cd6aa
GPencil: Add lock icon to Vertex Groups list Also check this flag in operators. Note: This is required for the development of the new Normalize All operator. =================================================================== M release/scripts/startup/bl_ui/properties_data_gpencil.py M source/blender/editors/gpencil/gpencil_brush.c M source/blender/editors/gpencil/gpencil_data.c =================================================================== diff --git a/release/scripts/startup/bl_ui/properties_data_gpencil.py b/release/scripts/startup/bl_ui/properties_data_gpencil.py index 0348b2452da..5d11373b2e9 100644 --- a/release/scripts/startup/bl_ui/properties_data_gpencil.py +++ b/release/scripts/startup/bl_ui/properties_data_gpencil.py @@ -342,8 +342,8 @@ class GPENCIL_UL_vgroups(UIList): vgroup = item if self.layout_type in {'DEFAULT', 'COMPACT'}: layout.prop(vgroup, "name", text="", emboss=False, icon_value=icon) - # icon = 'LOCKED' if vgroup.lock_weight else 'UNLOCKED' - # layout.prop(vgroup, "lock_weight", text="", icon=icon, emboss=False) + icon = 'LOCKED' if vgroup.lock_weight else 'UNLOCKED' + layout.prop(vgroup, "lock_weight", text="", icon=icon, emboss=False) elif self.layout_type == 'GRID': layout.alignment = 'CENTER' layout.label(text="", icon_value=icon) diff --git a/source/blender/editors/gpencil/gpencil_brush.c b/source/blender/editors/gpencil/gpencil_brush.c index e7e6d7a5f7f..8f64ec1c868 100644 --- a/source/blender/editors/gpencil/gpencil_brush.c +++ b/source/blender/editors/gpencil/gpencil_brush.c @@ -929,6 +929,12 @@ static bool gp_brush_weight_apply( gso->vrgroup = 0; } } + else { + bDeformGroup *defgroup = BLI_findlink(&gso->object->defbase, gso->vrgroup); + if (defgroup->flag & DG_LOCK_WEIGHT) { + return false; + } + } /* get current weight */ MDeformWeight *dw = defvert_verify_index(dvert, gso->vrgroup); float curweight = dw ? dw->weight : 0.0f; diff --git a/source/blender/editors/gpencil/gpencil_data.c b/source/blender/editors/gpencil/gpencil_data.c index 81da4ab8bc9..52c4354697e 100644 --- a/source/blender/editors/gpencil/gpencil_data.c +++ b/source/blender/editors/gpencil/gpencil_data.c @@ -1725,19 +1725,26 @@ void GPENCIL_OT_vertex_group_deselect(wmOperatorType *ot) } /* invert */ -static int gpencil_vertex_group_invert_exec(bContext *C, wmOperator *UNUSED(op)) +static int gpencil_vertex_group_invert_exec(bContext *C, wmOperator *op) { ToolSettings *ts = CTX_data_tool_settings(C); Object *ob = CTX_data_active_object(C); /* sanity checks */ - if (ELEM(NULL, ts, ob, ob->data)) + if (ELEM(NULL, ts, ob, ob->data)) { return OPERATOR_CANCELLED; + } MDeformVert *dvert; const int def_nr = ob->actdef - 1; - if (!BLI_findlink(&ob->defbase, def_nr)) + bDeformGroup *defgroup = BLI_findlink(&ob->defbase, def_nr); + if (defgroup == NULL) { + return OPERATOR_CANCELLED; + } + if (defgroup->flag & DG_LOCK_WEIGHT) { + BKE_report(op->reports, RPT_ERROR, "Current Vertex Group is locked"); return OPERATOR_CANCELLED; + } CTX_DATA_BEGIN(C, bGPDstroke *, gps, editable_gpencil_strokes) { @@ -1790,15 +1797,22 @@ static int gpencil_vertex_group_smooth_exec(bContext *C, wmOperator *op) Object *ob = CTX_data_active_object(C); /* sanity checks */ - if (ELEM(NULL, ts, ob, ob->data)) + if (ELEM(NULL, ts, ob, ob->data)) { return OPERATOR_CANCELLED; - - bGPDspoint *pta, *ptb, *ptc; - MDeformVert *dverta, *dvertb; + } const int def_nr = ob->actdef - 1; - if (!BLI_findlink(&ob->defbase, def_nr)) + bDeformGroup *defgroup = BLI_findlink(&ob->defbase, def_nr); + if (defgroup == NULL) { return OPERATOR_CANCELLED; + } + if (defgroup->flag & DG_LOCK_WEIGHT) { + BKE_report(op->reports, RPT_ERROR, "Current Vertex Group is locked"); + return OPERATOR_CANCELLED; + } + + bGPDspoint *pta, *ptb, *ptc; + MDeformVert *dverta, *dvertb; CTX_DATA_BEGIN(C, bGPDstroke *, gps, editable_gpencil_strokes) { @@ -1874,19 +1888,26 @@ void GPENCIL_OT_vertex_group_smooth(wmOperatorType *ot) } /* normalize */ -static int gpencil_vertex_group_normalize_exec(bContext *C, wmOperator *UNUSED(op)) +static int gpencil_vertex_group_normalize_exec(bContext *C, wmOperator *op) { ToolSettings *ts = CTX_data_tool_settings(C); Object *ob = CTX_data_active_object(C); /* sanity checks */ - if (ELEM(NULL, ts, ob, ob->data)) + if (ELEM(NULL, ts, ob, ob->data)) { return OPERATOR_CANCELLED; + } MDeformVert *dvert; const int def_nr = ob->actdef - 1; - if (!BLI_findlink(&ob->defbase, def_nr)) + bDeformGroup *defgroup = BLI_findlink(&ob->defbase, def_nr); + if (defgroup == NULL) { return OPERATOR_CANCELLED; + } + if (defgroup->flag & DG_LOCK_WEIGHT) { + BKE_report(op->reports, RPT_ERROR, "Current Vertex Group is locked"); + return OPERATOR_CANCELLED; + } CTX_DATA_BEGIN(C, bGPDstroke *, gps, editable_gpencil_strokes) { _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs