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

Reply via email to