[Bf-blender-cvs] [c5bdbc340a2] master: Fix T62463: unable to select anim channel for unselected node

Sybren A. Stüvel noreply at git.blender.org
Fri Oct 16 10:21:45 CEST 2020


Commit: c5bdbc340a2113f15803115f6d3db72082a49473
Author: Sybren A. Stüvel
Date:   Fri Oct 16 10:15:24 2020 +0200
Branches: master
https://developer.blender.org/rBc5bdbc340a2113f15803115f6d3db72082a49473

Fix T62463: unable to select anim channel for unselected node

Remove the code that synchronises selection state of shader node animation
channels. This code is only used in a few cases where selection of these
animation channels is changed, and then potentially does the wrong thing
and disallows selection of animation channels altogether.

This removal is meant to be a temporary situation, to unblock animation
channel selection. See T74159 for the overall effort to improve selection
sync.

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

M	source/blender/editors/animation/anim_deps.c

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

diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c
index 9e81880984b..b2225ec138f 100644
--- a/source/blender/editors/animation/anim_deps.c
+++ b/source/blender/editors/animation/anim_deps.c
@@ -233,57 +233,8 @@ static void animchan_sync_fcurve_scene(bAnimListElem *ale)
   }
 }
 
-static void animchan_sync_fcurve_nodetree(bAnimListElem *ale, FCurve **active_fcurve)
-{
-  ID *owner_id = ale->id;
-  BLI_assert(GS(owner_id->name) == ID_NT);
-  bNodeTree *ntree = (bNodeTree *)owner_id;
-  FCurve *fcu = (FCurve *)ale->data;
-
-  /* check for selected nodes */
-  if (!strstr(fcu->rna_path, "nodes")) {
-    return;
-  }
-
-  /* get strip name, and check if this strip is selected */
-  char *node_name = BLI_str_quoted_substrN(fcu->rna_path, "nodes[");
-  bNode *node = nodeFindNodebyName(ntree, node_name);
-  if (node_name) {
-    MEM_freeN(node_name);
-  }
-  if (node == NULL) {
-    return;
-  }
-
-  /* update selection status */
-  if (node->flag & NODE_SELECT) {
-    fcu->flag |= FCURVE_SELECTED;
-  }
-  else {
-    fcu->flag &= ~FCURVE_SELECTED;
-  }
-
-  /* update active status */
-  /* XXX: this may interfere with setting bones as active if both exist at once;
-   * then again, if that's the case, production setups aren't likely to be animating
-   * nodes while working with bones?
-   */
-  if (node->flag & NODE_ACTIVE) {
-    if (*active_fcurve == NULL) {
-      fcu->flag |= FCURVE_ACTIVE;
-      *active_fcurve = fcu;
-    }
-    else {
-      fcu->flag &= ~FCURVE_ACTIVE;
-    }
-  }
-  else {
-    fcu->flag &= ~FCURVE_ACTIVE;
-  }
-}
-
 /* perform syncing updates for F-Curves */
-static void animchan_sync_fcurve(bAnimListElem *ale, FCurve **active_fcurve)
+static void animchan_sync_fcurve(bAnimListElem *ale)
 {
   FCurve *fcu = (FCurve *)ale->data;
   ID *owner_id = ale->id;
@@ -299,9 +250,6 @@ static void animchan_sync_fcurve(bAnimListElem *ale, FCurve **active_fcurve)
     case ID_SCE:
       animchan_sync_fcurve_scene(ale);
       break;
-    case ID_NT:
-      animchan_sync_fcurve_nodetree(ale, active_fcurve);
-      break;
     default:
       break;
   }
@@ -340,7 +288,6 @@ void ANIM_sync_animchannels_to_data(const bContext *C)
   int filter;
 
   bActionGroup *active_agrp = NULL;
-  FCurve *active_fcurve = NULL;
 
   /* get animation context info for filtering the channels */
   if (ANIM_animdata_get_context(C, &ac) == 0) {
@@ -364,7 +311,7 @@ void ANIM_sync_animchannels_to_data(const bContext *C)
         break;
 
       case ANIMTYPE_FCURVE:
-        animchan_sync_fcurve(ale, &active_fcurve);
+        animchan_sync_fcurve(ale);
         break;
 
       case ANIMTYPE_GPLAYER:



More information about the Bf-blender-cvs mailing list