diff options
author | Julian Eisel <julian@blender.org> | 2022-05-23 22:01:11 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2022-05-23 22:08:01 +0300 |
commit | b2e5fc72c8c60ca03d2c82b44a0c8ca21ecae194 (patch) | |
tree | 3a15f31c1b68526ffa79dc53403c1f27f7508d56 /source/blender/editors | |
parent | 9039fbaa9ce171d40a75cc7fb56b2e3f004334bb (diff) | |
parent | 8f79fa9c6780dd5526dccce039c49bc7f69f47df (diff) |
Merge branch 'blender-v3.2-release'
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/object/object_add.cc | 67 | ||||
-rw-r--r-- | source/blender/editors/object/object_relations.c | 8 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/space_view3d.c | 6 |
3 files changed, 10 insertions, 71 deletions
diff --git a/source/blender/editors/object/object_add.cc b/source/blender/editors/object/object_add.cc index fe22cd63b74..45b0214cbe8 100644 --- a/source/blender/editors/object/object_add.cc +++ b/source/blender/editors/object/object_add.cc @@ -252,65 +252,6 @@ static int object_add_drop_xy_generic_invoke(bContext *C, wmOperator *op, const return op->type->exec(C, op); } -/** - * Tries to find an ID in \a bmain. Three needs to be either a "name" string or "session_uuid" int - * property defined and set. The former has priority. - * - * See #id_add_lookup_props for a helper to add the properties. - */ -static ID *id_add_lookup_from_name_or_session_uuid_props(Main *bmain, - const wmOperator *op, - const ID_Type type) -{ - PropertyRNA *prop_name = RNA_struct_find_property(op->ptr, "name"); - PropertyRNA *prop_session_uuid = RNA_struct_find_property(op->ptr, "session_uuid"); - - if (prop_name && RNA_property_is_set(op->ptr, prop_name)) { - char name[MAX_ID_NAME - 2]; - RNA_property_string_get(op->ptr, prop_name, name); - return BKE_libblock_find_name(bmain, type, name); - } - - if (prop_session_uuid && RNA_property_is_set(op->ptr, prop_session_uuid)) { - const uint32_t session_uuid = (uint32_t)RNA_property_int_get(op->ptr, prop_session_uuid); - return BKE_libblock_find_session_uuid(bmain, type, session_uuid); - } - - return nullptr; -} - -/** - * Adds "name" and "session_uuid" properties to the operator so the caller can tell the operator - * which ID to add. See #id_add_find_from_name_or_session_uuid_op_props(). Both properties will be - * hidden in the UI. - * - * \note New operators should probably use "session_uuid" only (set \a add_name_prop to #false), - * since this works with linked data and/or library overrides (in both cases, multiple IDs with the - * same name and type may be present). The "name" property is only kept to not break compatibility - * with old scripts using these operators. - */ -static void id_add_lookup_props(wmOperatorType *ot, const bool add_name_prop = false) -{ - PropertyRNA *prop; - - if (add_name_prop) { - prop = RNA_def_string( - ot->srna, "name", nullptr, MAX_ID_NAME - 2, "Name", "Name of the data-block to add"); - RNA_def_property_flag(prop, (PropertyFlag)(PROP_SKIP_SAVE | PROP_HIDDEN)); - } - - prop = RNA_def_int(ot->srna, - "session_uuid", - 0, - INT32_MIN, - INT32_MAX, - "Session UUID", - "Session UUID of the data-block to add", - INT32_MIN, - INT32_MAX); - RNA_def_property_flag(prop, (PropertyFlag)(PROP_SKIP_SAVE | PROP_HIDDEN)); -} - /** \} */ /* -------------------------------------------------------------------- */ @@ -1712,7 +1653,7 @@ static std::optional<CollectionAddInfo> collection_add_info_get_from_op(bContext PropertyRNA *prop_location = RNA_struct_find_property(op->ptr, "location"); add_info.collection = reinterpret_cast<Collection *>( - id_add_lookup_from_name_or_session_uuid_props(bmain, op, ID_GR)); + WM_operator_properties_id_lookup_from_name_or_session_uuid(bmain, op, ID_GR)); bool update_location_if_necessary = false; if (add_info.collection) { @@ -3860,7 +3801,7 @@ static int object_add_named_exec(bContext *C, wmOperator *op) /* Find object, create fake base. */ Object *ob = reinterpret_cast<Object *>( - id_add_lookup_from_name_or_session_uuid_props(bmain, op, ID_OB)); + WM_operator_properties_id_lookup_from_name_or_session_uuid(bmain, op, ID_OB)); if (ob == nullptr) { BKE_report(op->reports, RPT_ERROR, "Object not found"); @@ -3948,7 +3889,7 @@ void OBJECT_OT_add_named(wmOperatorType *ot) "Linked", "Duplicate object but not object data, linking to the original data"); - id_add_lookup_props(ot, true); + WM_operator_properties_id_lookup(ot, true); prop = RNA_def_float_matrix( ot->srna, "matrix", 4, 4, nullptr, 0.0f, 0.0f, "Matrix", "", 0.0f, 0.0f); @@ -3972,7 +3913,7 @@ static int object_transform_to_mouse_exec(bContext *C, wmOperator *op) ViewLayer *view_layer = CTX_data_view_layer(C); Object *ob = reinterpret_cast<Object *>( - id_add_lookup_from_name_or_session_uuid_props(bmain, op, ID_OB)); + WM_operator_properties_id_lookup_from_name_or_session_uuid(bmain, op, ID_OB)); if (!ob) { ob = OBACT(view_layer); diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 6e6dbc6837c..64ae425c9f4 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -2640,11 +2640,9 @@ static int drop_named_material_invoke(bContext *C, wmOperator *op, const wmEvent Object *ob = ED_view3d_give_material_slot_under_cursor(C, event->mval, &mat_slot); mat_slot = max_ii(mat_slot, 1); - Material *ma; - char name[MAX_ID_NAME - 2]; + Material *ma = (Material *)WM_operator_properties_id_lookup_from_name_or_session_uuid( + bmain, op, ID_MA); - RNA_string_get(op->ptr, "name", name); - ma = (Material *)BKE_libblock_find_name(bmain, ID_MA, name); if (ob == NULL || ma == NULL) { return OPERATOR_CANCELLED; } @@ -2674,7 +2672,7 @@ void OBJECT_OT_drop_named_material(wmOperatorType *ot) ot->flag = OPTYPE_UNDO | OPTYPE_INTERNAL; /* properties */ - RNA_def_string(ot->srna, "name", "Material", MAX_ID_NAME - 2, "Name", "Material name to assign"); + WM_operator_properties_id_lookup(ot, true); } /** \} */ diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 5ddfc4fe3cc..e7732f07ed9 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -823,15 +823,15 @@ static void view3d_id_drop_copy(bContext *UNUSED(C), wmDrag *drag, wmDropBox *dr { ID *id = WM_drag_get_local_ID_or_import_from_asset(drag, 0); - RNA_string_set(drop->ptr, "name", id->name + 2); + WM_operator_properties_id_lookup_set_from_id(drop->ptr, id); } static void view3d_id_drop_copy_with_type(bContext *UNUSED(C), wmDrag *drag, wmDropBox *drop) { ID *id = WM_drag_get_local_ID_or_import_from_asset(drag, 0); - RNA_string_set(drop->ptr, "name", id->name + 2); RNA_enum_set(drop->ptr, "type", GS(id->name)); + WM_operator_properties_id_lookup_set_from_id(drop->ptr, id); } static void view3d_id_path_drop_copy(bContext *UNUSED(C), wmDrag *drag, wmDropBox *drop) @@ -839,7 +839,7 @@ static void view3d_id_path_drop_copy(bContext *UNUSED(C), wmDrag *drag, wmDropBo ID *id = WM_drag_get_local_ID_or_import_from_asset(drag, 0); if (id) { - RNA_string_set(drop->ptr, "name", id->name + 2); + WM_operator_properties_id_lookup_set_from_id(drop->ptr, id); RNA_struct_property_unset(drop->ptr, "filepath"); } else if (drag->path[0]) { |