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.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,16 +1797,23 @@ 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;
|
||||
}
|
||||
|
||||
const int def_nr = ob->actdef - 1;
|
||||
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;
|
||||
|
||||
const int def_nr = ob->actdef - 1;
|
||||
if (!BLI_findlink(&ob->defbase, def_nr))
|
||||
return OPERATOR_CANCELLED;
|
||||
|
||||
CTX_DATA_BEGIN(C, bGPDstroke *, gps, editable_gpencil_strokes)
|
||||
{
|
||||
if (gps->dvert == NULL) {
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user