[Bf-blender-cvs] [87db3423c98] blender-v2.92-release: Fix Lock to Selection does not work in mask mode

Sergey Sharybin noreply at git.blender.org
Wed Jan 20 13:48:35 CET 2021


Commit: 87db3423c98ea5d11a6bdbef6658b67970023a4e
Author: Sergey Sharybin
Date:   Wed Jan 20 12:52:12 2021 +0100
Branches: blender-v2.92-release
https://developer.blender.org/rB87db3423c98ea5d11a6bdbef6658b67970023a4e

Fix Lock to Selection does not work in mask mode

A regression since 2.80: need to use evaluated mask to calculate
its bounds. Non-evaluated mask does not contain state for the
current frame, so iterating over control points of the original
mask gives points state from the time they were edited last (aka,
not affected by the animation).

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

M	source/blender/editors/mask/mask_query.c

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

diff --git a/source/blender/editors/mask/mask_query.c b/source/blender/editors/mask/mask_query.c
index cf5997d8a18..cfd57ca3477 100644
--- a/source/blender/editors/mask/mask_query.c
+++ b/source/blender/editors/mask/mask_query.c
@@ -606,7 +606,14 @@ void ED_mask_point_pos__reverse(
 
 bool ED_mask_selected_minmax(const bContext *C, float min[2], float max[2])
 {
+  Depsgraph *depsgraph = CTX_data_depsgraph_pointer(C);
   Mask *mask = CTX_data_edit_mask(C);
+
+  /* Use evaluated mask to take animation into account.
+   * The animation of splies is not "flushed" back to original, so need to explicitly
+   * sue evaluated datablock here. */
+  Mask *mask_eval = (Mask *)DEG_get_evaluated_id(depsgraph, &mask->id);
+
   bool ok = false;
 
   if (mask == NULL) {
@@ -614,7 +621,7 @@ bool ED_mask_selected_minmax(const bContext *C, float min[2], float max[2])
   }
 
   INIT_MINMAX2(min, max);
-  for (MaskLayer *mask_layer = mask->masklayers.first; mask_layer != NULL;
+  for (MaskLayer *mask_layer = mask_eval->masklayers.first; mask_layer != NULL;
        mask_layer = mask_layer->next) {
     if (mask_layer->restrictflag & (MASK_RESTRICT_VIEW | MASK_RESTRICT_SELECT)) {
       continue;



More information about the Bf-blender-cvs mailing list