Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonioya <blendergit@gmail.com>2019-04-16 12:27:36 +0300
committerAntonioya <blendergit@gmail.com>2019-04-16 14:10:04 +0300
commit5494926ee564dcde052e875debb90e27c60cd6aa (patch)
treec7fa42b881c7940b93219a22ff30b4c5ca21bf38
parenta8852ade8aa65cc591d1fa20d732bb766aefe60a (diff)
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.
-rw-r--r--release/scripts/startup/bl_ui/properties_data_gpencil.py4
-rw-r--r--source/blender/editors/gpencil/gpencil_brush.c6
-rw-r--r--source/blender/editors/gpencil/gpencil_data.c43
3 files changed, 40 insertions, 13 deletions
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)
{