[Bf-blender-cvs] [12ca26afc27] master: Fix T104089: Removing greasepencil vertex group can leave no active

Philipp Oeser noreply at git.blender.org
Wed Jan 25 13:53:54 CET 2023


Commit: 12ca26afc272b883455bb99ee2add5deedcf740d
Author: Philipp Oeser
Date:   Mon Jan 23 13:50:34 2023 +0100
Branches: master
https://developer.blender.org/rB12ca26afc272b883455bb99ee2add5deedcf740d

Fix T104089: Removing greasepencil vertex group can leave no active

We should always have an active vertexgroup (making sure this is the
case was just not happening on the greasepencil side).

Now do this (similar to what is done for other object types in
`object_defgroup_remove_common`).

Maniphest Tasks: T104089

Differential Revision: https://developer.blender.org/D17091

===================================================================

M	source/blender/blenkernel/intern/gpencil.c

===================================================================

diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 97e3ff43cd9..b77f43276e7 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -1861,6 +1861,18 @@ void BKE_gpencil_vgroup_remove(Object *ob, bDeformGroup *defgroup)
 
   /* Remove the group */
   BLI_freelinkN(&gpd->vertex_group_names, defgroup);
+
+  /* Update the active deform index if necessary. */
+  const int active_index = BKE_object_defgroup_active_index_get(ob);
+  if (active_index > def_nr) {
+    BKE_object_defgroup_active_index_set(ob, active_index - 1);
+  }
+  /* Keep a valid active index if we still have some vertex groups. */
+  if (!BLI_listbase_is_empty(&gpd->vertex_group_names) &&
+      BKE_object_defgroup_active_index_get(ob) < 1) {
+    BKE_object_defgroup_active_index_set(ob, 1);
+  }
+
   DEG_id_tag_update(&gpd->id, ID_RECALC_TRANSFORM | ID_RECALC_GEOMETRY);
 }



More information about the Bf-blender-cvs mailing list