1
1

Merge remote-tracking branch 'origin/blender-v3.2-release'

This commit is contained in:
2022-05-16 18:17:37 +02:00
2 changed files with 32 additions and 13 deletions

View File

@@ -727,7 +727,20 @@ class NODE_UL_interface_sockets(bpy.types.UIList):
layout.template_node_socket(color=color)
class NodeTreeInterfacePanel:
class NodeTreeInterfacePanel(Panel):
@classmethod
def poll(cls, context):
snode = context.space_data
if snode is None:
return False
tree = snode.edit_tree
if tree is None:
return False
if tree.is_embedded_data:
return False
return True
def draw_socket_list(self, context, in_out, sockets_propname, active_socket_propname):
layout = self.layout
@@ -804,32 +817,22 @@ class NodeTreeInterfacePanel:
active_socket.draw(context, layout)
class NODE_PT_node_tree_interface_inputs(NodeTreeInterfacePanel, Panel):
class NODE_PT_node_tree_interface_inputs(NodeTreeInterfacePanel):
bl_space_type = 'NODE_EDITOR'
bl_region_type = 'UI'
bl_category = "Group"
bl_label = "Inputs"
@classmethod
def poll(cls, context):
snode = context.space_data
return snode.edit_tree is not None
def draw(self, context):
self.draw_socket_list(context, "IN", "inputs", "active_input")
class NODE_PT_node_tree_interface_outputs(NodeTreeInterfacePanel, Panel):
class NODE_PT_node_tree_interface_outputs(NodeTreeInterfacePanel):
bl_space_type = 'NODE_EDITOR'
bl_region_type = 'UI'
bl_category = "Group"
bl_label = "Outputs"
@classmethod
def poll(cls, context):
snode = context.space_data
return snode.edit_tree is not None
def draw(self, context):
self.draw_socket_list(context, "OUT", "outputs", "active_output")

View File

@@ -1693,6 +1693,22 @@ void DepsgraphRelationBuilder::build_driver_variables(ID *id, FCurve *fcu)
continue;
}
add_relation(variable_exit_key, driver_key, "RNA Target -> Driver");
/* The RNA getter for `object.data` can write to the mesh datablock due
* to the call to `BKE_mesh_wrapper_ensure_subdivision()`. This relation
* ensures it is safe to call when the driver is evaluated.
*
* For the sake of making the code more generic/defensive, the relation
* is added for any geometry type.
*
* See T96289 for more info. */
if (object != nullptr && OB_TYPE_IS_GEOMETRY(object->type)) {
StringRef rna_path(dtar->rna_path);
if (rna_path == "data" || rna_path.startswith("data.")) {
ComponentKey ob_key(target_id, NodeType::GEOMETRY);
add_relation(ob_key, driver_key, "ID -> Driver");
}
}
}
else {
/* If rna_path is nullptr, and DTAR_FLAG_STRUCT_REF isn't set, this