[Bf-blender-cvs] [65b42d8c575] master: Fix T101709: Proportional editing being disabled in NLA Editor redo panel

Germano Cavalcante noreply at git.blender.org
Tue Oct 11 17:47:44 CEST 2022


Commit: 65b42d8c57537098828fd6acca6793aa9a093474
Author: Germano Cavalcante
Date:   Tue Oct 11 12:47:19 2022 -0300
Branches: master
https://developer.blender.org/rB65b42d8c57537098828fd6acca6793aa9a093474

Fix T101709: Proportional editing being disabled in NLA Editor redo panel

Do not save the "use_proportional_edit" property if it is not supported.
This prevents it from being automatically disabled.

And hide "use_proportional_edit" in `SPACE_NLA`

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

M	source/blender/editors/transform/transform.c
M	source/blender/editors/transform/transform_ops.c

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

diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 6f7eb317b42..93e99f97387 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -1518,26 +1518,26 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
     }
   }
 
-  bool use_prop_edit = false;
-  int prop_edit_flag = 0;
-  if (t->flag & T_PROP_EDIT_ALL) {
-    if (t->flag & T_PROP_EDIT) {
-      use_prop_edit = true;
-    }
-    if (t->flag & T_PROP_CONNECTED) {
-      prop_edit_flag |= PROP_EDIT_CONNECTED;
-    }
-    if (t->flag & T_PROP_PROJECTED) {
-      prop_edit_flag |= PROP_EDIT_PROJECTED;
+  /* Save proportional edit settings.
+   * Skip saving proportional edit if it was not actually used. */
+  if (!(t->options & CTX_NO_PET)) {
+    bool use_prop_edit = false;
+    int prop_edit_flag = 0;
+    if (t->flag & T_PROP_EDIT_ALL) {
+      if (t->flag & T_PROP_EDIT) {
+        use_prop_edit = true;
+      }
+      if (t->flag & T_PROP_CONNECTED) {
+        prop_edit_flag |= PROP_EDIT_CONNECTED;
+      }
+      if (t->flag & T_PROP_PROJECTED) {
+        prop_edit_flag |= PROP_EDIT_PROJECTED;
+      }
     }
-  }
 
-  /* If modal, save settings back in scene if not set as operator argument */
-  if ((t->flag & T_MODAL) || (op->flag & OP_IS_REPEAT)) {
-    /* save settings if not set in operator */
-
-    /* skip saving proportional edit if it was not actually used */
-    if (!(t->options & CTX_NO_PET)) {
+    /* If modal, save settings back in scene if not set as operator argument */
+    if ((t->flag & T_MODAL) || (op->flag & OP_IS_REPEAT)) {
+      /* save settings if not set in operator */
       if ((prop = RNA_struct_find_property(op->ptr, "use_proportional_edit")) &&
           !RNA_property_is_set(op->ptr, prop)) {
         BKE_view_layer_synced_ensure(t->scene, t->view_layer);
@@ -1576,6 +1576,14 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
         ts->prop_mode = t->prop_mode;
       }
     }
+
+    if ((prop = RNA_struct_find_property(op->ptr, "use_proportional_edit"))) {
+      RNA_property_boolean_set(op->ptr, prop, use_prop_edit);
+      RNA_boolean_set(op->ptr, "use_proportional_connected", prop_edit_flag & PROP_EDIT_CONNECTED);
+      RNA_boolean_set(op->ptr, "use_proportional_projected", prop_edit_flag & PROP_EDIT_PROJECTED);
+      RNA_enum_set(op->ptr, "proportional_edit_falloff", t->prop_mode);
+      RNA_float_set(op->ptr, "proportional_size", t->prop_size);
+    }
   }
 
   /* Save snapping settings. */
@@ -1635,14 +1643,6 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
     }
   }
 
-  if ((prop = RNA_struct_find_property(op->ptr, "use_proportional_edit"))) {
-    RNA_property_boolean_set(op->ptr, prop, use_prop_edit);
-    RNA_boolean_set(op->ptr, "use_proportional_connected", prop_edit_flag & PROP_EDIT_CONNECTED);
-    RNA_boolean_set(op->ptr, "use_proportional_projected", prop_edit_flag & PROP_EDIT_PROJECTED);
-    RNA_enum_set(op->ptr, "proportional_edit_falloff", t->prop_mode);
-    RNA_float_set(op->ptr, "proportional_size", t->prop_size);
-  }
-
   if ((prop = RNA_struct_find_property(op->ptr, "mirror"))) {
     RNA_property_boolean_set(op->ptr, prop, (t->flag & T_NO_MIRROR) == 0);
   }
diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c
index dbda9a26bbf..82791b2a9f5 100644
--- a/source/blender/editors/transform/transform_ops.c
+++ b/source/blender/editors/transform/transform_ops.c
@@ -523,9 +523,7 @@ static int transform_invoke(bContext *C, wmOperator *op, const wmEvent *event)
   return OPERATOR_RUNNING_MODAL;
 }
 
-static bool transform_poll_property(const bContext *UNUSED(C),
-                                    wmOperator *op,
-                                    const PropertyRNA *prop)
+static bool transform_poll_property(const bContext *C, wmOperator *op, const PropertyRNA *prop)
 {
   const char *prop_id = RNA_property_identifier(prop);
 
@@ -559,12 +557,21 @@ static bool transform_poll_property(const bContext *UNUSED(C),
   }
 
   /* Proportional Editing. */
-  {
+  if (STRPREFIX(prop_id, "proportional") || STRPREFIX(prop_id, "use_proportional")) {
+    ScrArea *area = CTX_wm_area(C);
+    if (area->spacetype == SPACE_NLA) {
+      /* Hide properties that are not supported in some spaces. */
+      return false;
+    }
+
     PropertyRNA *prop_pet = RNA_struct_find_property(op->ptr, "use_proportional_edit");
-    if (prop_pet && (prop_pet != prop) && (RNA_property_boolean_get(op->ptr, prop_pet) == false)) {
-      if (STRPREFIX(prop_id, "proportional") || STRPREFIX(prop_id, "use_proportional")) {
-        return false;
-      }
+    if ((prop_pet != prop) && (RNA_property_boolean_get(op->ptr, prop_pet) == false)) {
+      /* If "use_proportional_edit" is false, hide:
+       * - "proportional_edit_falloff",
+       * - "proportional_size",
+       * - "use_proportional_connected",
+       * - "use_proportional_projected". */
+      return false;
     }
   }



More information about the Bf-blender-cvs mailing list