diff --git a/scripts/startup/bl_ui/space_node.py b/scripts/startup/bl_ui/space_node.py index da2df2f286f..3350c7b08e3 100644 --- a/scripts/startup/bl_ui/space_node.py +++ b/scripts/startup/bl_ui/space_node.py @@ -139,7 +139,8 @@ class NODE_HT_header(Header): layout.prop(snode_id, "use_nodes") elif snode.tree_type == 'GeometryNodeTree': - layout.prop(snode, "geometry_nodes_type", text="") + if context.preferences.experimental.use_node_group_operators: + layout.prop(snode, "geometry_nodes_type", text="") NODE_MT_editor_menus.draw_collapsible(context, layout) layout.separator_spacer() diff --git a/scripts/startup/bl_ui/space_userpref.py b/scripts/startup/bl_ui/space_userpref.py index 13d8c480248..81330ec7cbf 100644 --- a/scripts/startup/bl_ui/space_userpref.py +++ b/scripts/startup/bl_ui/space_userpref.py @@ -2419,6 +2419,7 @@ class USERPREF_PT_experimental_new_features(ExperimentalPanel, Panel): ({"property": "use_new_volume_nodes"}, ("blender/blender/issues/103248", "#103248")), ({"property": "use_node_panels"}, ("blender/blender/issues/105248", "#105248")), ({"property": "use_rotation_socket"}, ("/blender/blender/issues/92967", "#92967")), + ({"property": "use_node_group_operators"}, ("/blender/blender/issues/101778", "#101778")), ), ) diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index 6841ede11ae..e73af2e96a0 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -682,7 +682,8 @@ typedef struct UserDef_Experimental { char use_new_volume_nodes; char use_node_panels; char use_rotation_socket; - char _pad[2]; + char use_node_group_operators; + char _pad[1]; /** `makesdna` does not allow empty structs. */ } UserDef_Experimental; diff --git a/source/blender/makesrna/intern/rna_ui_api.cc b/source/blender/makesrna/intern/rna_ui_api.cc index 3b728602362..8538b8b32f4 100644 --- a/source/blender/makesrna/intern/rna_ui_api.cc +++ b/source/blender/makesrna/intern/rna_ui_api.cc @@ -738,13 +738,17 @@ static void rna_uiLayout_template_node_operator_asset_menu_items(uiLayout *layou bContext *C, const char *catalog_path) { - blender::ed::geometry::ui_template_node_operator_asset_menu_items( - *layout, *C, blender::StringRef(catalog_path)); + if (U.experimental.use_node_group_operators) { + blender::ed::geometry::ui_template_node_operator_asset_menu_items( + *layout, *C, blender::StringRef(catalog_path)); + } } static void rna_uiLayout_template_node_operator_root_items(uiLayout *layout, bContext *C) { - blender::ed::geometry::ui_template_node_operator_asset_root_items(*layout, *C); + if (U.experimental.use_node_group_operators) { + blender::ed::geometry::ui_template_node_operator_asset_root_items(*layout, *C); + } } static int rna_ui_get_rnaptr_icon(bContext *C, PointerRNA *ptr_icon) diff --git a/source/blender/makesrna/intern/rna_userdef.cc b/source/blender/makesrna/intern/rna_userdef.cc index 28e2afb0781..142771b5a8e 100644 --- a/source/blender/makesrna/intern/rna_userdef.cc +++ b/source/blender/makesrna/intern/rna_userdef.cc @@ -6744,6 +6744,10 @@ static void rna_def_userdef_experimental(BlenderRNA *brna) prop = RNA_def_property(srna, "use_rotation_socket", PROP_BOOLEAN, PROP_NONE); RNA_def_property_ui_text(prop, "Rotation Socket", "Enable the new rotation node socket type"); + + prop = RNA_def_property(srna, "use_node_group_operators", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_ui_text( + prop, "Node Group Operators", "Enable using geometry nodes as edit operators"); } static void rna_def_userdef_addon_collection(BlenderRNA *brna, PropertyRNA *cprop)