diff options
author | Julian Eisel <julian@blender.org> | 2022-05-24 16:23:13 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2022-05-24 16:23:13 +0300 |
commit | 961db61fb87fb5400bc0080e6a4d2e3fc16c1761 (patch) | |
tree | 0b4a5972d3998771a1ae5c8c563b5973c6bcb62a | |
parent | 258f6cbf93678b7bfbd997a06ab0ec67571174b5 (diff) | |
parent | bc3dbf109c67fe2bced477774abdef7a53d66081 (diff) |
Merge branch 'blender-v3.2-release'
-rw-r--r-- | source/blender/editors/include/ED_object.h | 2 | ||||
-rw-r--r-- | source/blender/editors/object/object_add.cc | 6 | ||||
-rw-r--r-- | source/blender/editors/object/object_relations.c | 9 | ||||
-rw-r--r-- | source/blender/editors/space_view3d/space_view3d.c | 5 | ||||
-rw-r--r-- | source/blender/windowmanager/WM_api.h | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_dragdrop.c | 13 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operator_props.c | 14 |
7 files changed, 20 insertions, 31 deletions
diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 28452ba8db9..0078c1087a0 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -234,7 +234,7 @@ struct Base *ED_object_add_duplicate(struct Main *bmain, void ED_object_parent(struct Object *ob, struct Object *parent, int type, const char *substr); char *ED_object_ot_drop_named_material_tooltip(struct bContext *C, - struct PointerRNA *properties, + const char *name, const int mval[2]); /* bitflags for enter/exit editmode */ diff --git a/source/blender/editors/object/object_add.cc b/source/blender/editors/object/object_add.cc index 45b0214cbe8..1fb7d50856b 100644 --- a/source/blender/editors/object/object_add.cc +++ b/source/blender/editors/object/object_add.cc @@ -1653,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 *>( - WM_operator_properties_id_lookup_from_name_or_session_uuid(bmain, op, ID_GR)); + WM_operator_properties_id_lookup_from_name_or_session_uuid(bmain, op->ptr, ID_GR)); bool update_location_if_necessary = false; if (add_info.collection) { @@ -3801,7 +3801,7 @@ static int object_add_named_exec(bContext *C, wmOperator *op) /* Find object, create fake base. */ Object *ob = reinterpret_cast<Object *>( - WM_operator_properties_id_lookup_from_name_or_session_uuid(bmain, op, ID_OB)); + WM_operator_properties_id_lookup_from_name_or_session_uuid(bmain, op->ptr, ID_OB)); if (ob == nullptr) { BKE_report(op->reports, RPT_ERROR, "Object not found"); @@ -3913,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 *>( - WM_operator_properties_id_lookup_from_name_or_session_uuid(bmain, op, ID_OB)); + WM_operator_properties_id_lookup_from_name_or_session_uuid(bmain, op->ptr, 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 64ae425c9f4..abbde3b5b3a 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -2605,9 +2605,7 @@ void OBJECT_OT_make_single_user(wmOperatorType *ot) /** \name Drop Named Material on Object Operator * \{ */ -char *ED_object_ot_drop_named_material_tooltip(bContext *C, - PointerRNA *properties, - const int mval[2]) +char *ED_object_ot_drop_named_material_tooltip(bContext *C, const char *name, const int mval[2]) { int mat_slot = 0; Object *ob = ED_view3d_give_material_slot_under_cursor(C, mval, &mat_slot); @@ -2616,9 +2614,6 @@ char *ED_object_ot_drop_named_material_tooltip(bContext *C, } mat_slot = max_ii(mat_slot, 1); - char name[MAX_ID_NAME - 2]; - RNA_string_get(properties, "name", name); - Material *prev_mat = BKE_object_material_get(ob, mat_slot); char *result; @@ -2641,7 +2636,7 @@ static int drop_named_material_invoke(bContext *C, wmOperator *op, const wmEvent mat_slot = max_ii(mat_slot, 1); Material *ma = (Material *)WM_operator_properties_id_lookup_from_name_or_session_uuid( - bmain, op, ID_MA); + bmain, op->ptr, ID_MA); if (ob == NULL || ma == NULL) { return OPERATOR_CANCELLED; diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index e7732f07ed9..48abe71e35f 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -590,16 +590,15 @@ static bool view3d_mat_drop_poll(bContext *C, wmDrag *drag, const wmEvent *event static char *view3d_mat_drop_tooltip(bContext *C, wmDrag *drag, const int xy[2], - struct wmDropBox *drop) + wmDropBox *UNUSED(drop)) { const char *name = WM_drag_get_item_name(drag); ARegion *region = CTX_wm_region(C); - RNA_string_set(drop->ptr, "name", name); int mval[2] = { xy[0] - region->winrct.xmin, xy[1] - region->winrct.ymin, }; - return ED_object_ot_drop_named_material_tooltip(C, drop->ptr, mval); + return ED_object_ot_drop_named_material_tooltip(C, name, mval); } static bool view3d_world_drop_poll(bContext *C, wmDrag *drag, const wmEvent *event) diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index a29559e904e..8747acb5abe 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -786,7 +786,7 @@ void WM_operator_properties_id_lookup_set_from_id(PointerRNA *ptr, const ID *id) * helper to add the properties. */ struct ID *WM_operator_properties_id_lookup_from_name_or_session_uuid(struct Main *bmain, - const struct wmOperator *op, + PointerRNA *ptr, enum ID_Type type); /** * Adds "name" and "session_uuid" properties so the caller can tell the operator which ID to act diff --git a/source/blender/windowmanager/intern/wm_dragdrop.c b/source/blender/windowmanager/intern/wm_dragdrop.c index a98ded82a92..8f96080c810 100644 --- a/source/blender/windowmanager/intern/wm_dragdrop.c +++ b/source/blender/windowmanager/intern/wm_dragdrop.c @@ -683,15 +683,10 @@ void WM_drag_free_imported_drag_ID(struct Main *bmain, wmDrag *drag, wmDropBox * return; } - /* Get name from property, not asset data - it may have changed after importing to ensure - * uniqueness (name is assumed to be set from the imported ID name). */ - char name[MAX_ID_NAME - 2]; - RNA_string_get(drop->ptr, "name", name); - if (!name[0]) { - return; - } - - ID *id = BKE_libblock_find_name(bmain, asset_drag->id_type, name); + /* Try to find the imported ID. For this to work either a "session_uuid" or "name" property must + * have been defined (see #WM_operator_properties_id_lookup()). */ + ID *id = WM_operator_properties_id_lookup_from_name_or_session_uuid( + bmain, drop->ptr, asset_drag->id_type); if (id != NULL) { /* Do not delete the dragged ID if it has any user, otherwise if it is a 're-used' ID it will * cause T95636. Note that we need first to add the user that we want to remove in diff --git a/source/blender/windowmanager/intern/wm_operator_props.c b/source/blender/windowmanager/intern/wm_operator_props.c index 55544e9906d..3476a16b02a 100644 --- a/source/blender/windowmanager/intern/wm_operator_props.c +++ b/source/blender/windowmanager/intern/wm_operator_props.c @@ -243,20 +243,20 @@ void WM_operator_properties_id_lookup_set_from_id(PointerRNA *ptr, const ID *id) } ID *WM_operator_properties_id_lookup_from_name_or_session_uuid(Main *bmain, - const wmOperator *op, + PointerRNA *ptr, 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"); + PropertyRNA *prop_name = RNA_struct_find_property(ptr, "name"); + PropertyRNA *prop_session_uuid = RNA_struct_find_property(ptr, "session_uuid"); - if (prop_name && RNA_property_is_set(op->ptr, prop_name)) { + if (prop_name && RNA_property_is_set(ptr, prop_name)) { char name[MAX_ID_NAME - 2]; - RNA_property_string_get(op->ptr, prop_name, name); + RNA_property_string_get(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); + if (prop_session_uuid && RNA_property_is_set(ptr, prop_session_uuid)) { + const uint32_t session_uuid = (uint32_t)RNA_property_int_get(ptr, prop_session_uuid); return BKE_libblock_find_session_uuid(bmain, type, session_uuid); } |