Fix #113090, #111450, #104909: node rna properties collide with built-in names

This fixes the following name collisions:
* Compositor Box/Ellipse Mask node: `width` -> `mask_width`
  (also renamed the `height` property accordingly)
* Shader AOV Output node: `name` -> `aov_name`
* Geometry Color node: `color` -> `value`.

Those are breaking changes unfortunately, because looking up those property
names yielded the node-specific and not the common property. Therefore, this is
targeted at `main` instead of `4.1`.

Pull Request: https://projects.blender.org/blender/blender/pulls/119284
This commit is contained in:
Jacques Lucke 2024-03-11 15:57:30 +01:00
parent 3c908dc7f5
commit deb332601c
6 changed files with 19 additions and 14 deletions

View File

@ -1064,7 +1064,7 @@ static ShaderNode *add_node(Scene *scene,
else if (b_node.is_a(&RNA_ShaderNodeOutputAOV)) {
BL::ShaderNodeOutputAOV b_aov_node(b_node);
OutputAOVNode *aov = graph->create_node<OutputAOVNode>();
aov->set_name(ustring(b_aov_node.name()));
aov->set_name(ustring(b_aov_node.aov_name()));
node = aov;
}

View File

@ -4545,7 +4545,7 @@ static void def_fn_input_color(StructRNA *srna)
RNA_def_struct_sdna_from(srna, "NodeInputColor", "storage");
prop = RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR);
prop = RNA_def_property(srna, "value", PROP_FLOAT, PROP_COLOR);
RNA_def_property_array(prop, 4);
RNA_def_property_float_sdna(prop, nullptr, "color");
RNA_def_property_ui_text(prop, "Color", "");
@ -5855,7 +5855,8 @@ static void def_sh_output_aov(StructRNA *srna)
RNA_def_struct_sdna_from(srna, "NodeShaderOutputAOV", "storage");
prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
prop = RNA_def_property(srna, "aov_name", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, nullptr, "name");
RNA_def_property_ui_text(prop, "Name", "Name of the AOV that this output writes to");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
@ -7854,14 +7855,14 @@ static void def_cmp_boxmask(StructRNA *srna)
RNA_def_property_ui_text(prop, "Y", "Y position of the middle of the box");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "width", PROP_FLOAT, PROP_NONE);
prop = RNA_def_property(srna, "mask_width", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, nullptr, "width");
RNA_def_property_float_default(prop, 0.3f);
RNA_def_property_range(prop, 0.0f, 2.0f);
RNA_def_property_ui_text(prop, "Width", "Width of the box");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "height", PROP_FLOAT, PROP_NONE);
prop = RNA_def_property(srna, "mask_height", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, nullptr, "height");
RNA_def_property_float_default(prop, 0.2f);
RNA_def_property_range(prop, 0.0f, 2.0f);
@ -7901,14 +7902,14 @@ static void def_cmp_ellipsemask(StructRNA *srna)
RNA_def_property_ui_text(prop, "Y", "Y position of the middle of the ellipse");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "width", PROP_FLOAT, PROP_NONE);
prop = RNA_def_property(srna, "mask_width", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, nullptr, "width");
RNA_def_property_float_default(prop, 0.3f);
RNA_def_property_range(prop, 0.0f, 2.0f);
RNA_def_property_ui_text(prop, "Width", "Width of the ellipse");
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "height", PROP_FLOAT, PROP_NONE);
prop = RNA_def_property(srna, "mask_height", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, nullptr, "height");
RNA_def_property_float_default(prop, 0.2f);
RNA_def_property_range(prop, 0.0f, 2.0f);

View File

@ -61,8 +61,10 @@ static void node_composit_buts_boxmask(uiLayout *layout, bContext * /*C*/, Point
uiItemR(row, ptr, "y", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
row = uiLayoutRow(layout, true);
uiItemR(row, ptr, "width", UI_ITEM_R_SPLIT_EMPTY_NAME | UI_ITEM_R_SLIDER, nullptr, ICON_NONE);
uiItemR(row, ptr, "height", UI_ITEM_R_SPLIT_EMPTY_NAME | UI_ITEM_R_SLIDER, nullptr, ICON_NONE);
uiItemR(
row, ptr, "mask_width", UI_ITEM_R_SPLIT_EMPTY_NAME | UI_ITEM_R_SLIDER, nullptr, ICON_NONE);
uiItemR(
row, ptr, "mask_height", UI_ITEM_R_SPLIT_EMPTY_NAME | UI_ITEM_R_SLIDER, nullptr, ICON_NONE);
uiItemR(layout, ptr, "rotation", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
uiItemR(layout, ptr, "mask_type", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);

View File

@ -59,8 +59,10 @@ static void node_composit_buts_ellipsemask(uiLayout *layout, bContext * /*C*/, P
uiItemR(row, ptr, "x", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
uiItemR(row, ptr, "y", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
row = uiLayoutRow(layout, true);
uiItemR(row, ptr, "width", UI_ITEM_R_SPLIT_EMPTY_NAME | UI_ITEM_R_SLIDER, nullptr, ICON_NONE);
uiItemR(row, ptr, "height", UI_ITEM_R_SPLIT_EMPTY_NAME | UI_ITEM_R_SLIDER, nullptr, ICON_NONE);
uiItemR(
row, ptr, "mask_width", UI_ITEM_R_SPLIT_EMPTY_NAME | UI_ITEM_R_SLIDER, nullptr, ICON_NONE);
uiItemR(
row, ptr, "mask_height", UI_ITEM_R_SPLIT_EMPTY_NAME | UI_ITEM_R_SLIDER, nullptr, ICON_NONE);
uiItemR(layout, ptr, "rotation", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
uiItemR(layout, ptr, "mask_type", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);

View File

@ -18,8 +18,8 @@ static void node_declare(NodeDeclarationBuilder &b)
static void node_layout(uiLayout *layout, bContext * /*C*/, PointerRNA *ptr)
{
uiTemplateColorPicker(layout, ptr, "color", true, false, false, true);
uiItemR(layout, ptr, "color", UI_ITEM_R_SPLIT_EMPTY_NAME, "", ICON_NONE);
uiTemplateColorPicker(layout, ptr, "value", true, false, false, true);
uiItemR(layout, ptr, "value", UI_ITEM_R_SPLIT_EMPTY_NAME, "", ICON_NONE);
}
static void node_build_multi_function(blender::nodes::NodeMultiFunctionBuilder &builder)

View File

@ -20,7 +20,7 @@ static void node_declare(NodeDeclarationBuilder &b)
static void node_shader_buts_output_aov(uiLayout *layout, bContext * /*C*/, PointerRNA *ptr)
{
uiItemR(layout, ptr, "name", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
uiItemR(layout, ptr, "aov_name", UI_ITEM_R_SPLIT_EMPTY_NAME, nullptr, ICON_NONE);
}
static void node_shader_init_output_aov(bNodeTree * /*ntree*/, bNode *node)