|
Blender V5.0
|
#include <RNA_types.hh>
Public Member Functions | |
| PointerRNA ()=default | |
| PointerRNA (const PointerRNA &)=default | |
| PointerRNA (PointerRNA &&)=default | |
| PointerRNA & | operator= (const PointerRNA &other)=default |
| PointerRNA & | operator= (PointerRNA &&other)=default |
| PointerRNA (ID *owner_id, StructRNA *type, void *data) | |
| PointerRNA (ID *owner_id, StructRNA *type, void *data, const PointerRNA &parent) | |
| PointerRNA (ID *owner_id, StructRNA *type, void *data, blender::Span< AncestorPointerRNA > parents) | |
| void | reset () |
| void | invalidate () |
| template<typename T> | |
| T * | data_as () const |
| PointerRNA | parent () const |
Public Attributes | |
| ID * | owner_id = nullptr |
| StructRNA * | type = nullptr |
| void * | data = nullptr |
| blender::Vector< AncestorPointerRNA, ANCESTOR_POINTERRNA_DEFAULT_SIZE > | ancestors = {} |
Pointer
RNA pointers are not a single C pointer but include the type, and a pointer to the ID struct that owns the struct, since in some cases this information is needed to correctly get/set the properties and validate them.
Definition at line 50 of file RNA_types.hh.
|
default |
Referenced by operator=(), operator=(), parent(), PointerRNA(), PointerRNA(), and PointerRNA().
|
default |
References PointerRNA().
|
default |
References PointerRNA().
|
inline |
Definition at line 88 of file RNA_types.hh.
References ancestors, blender::Vector< T, InlineBufferCapacity, Allocator >::append(), data, owner_id, parent(), PointerRNA(), and type.
|
inline |
Get the data as a specific type. This expects that the caller knows what the type is and has undefined behavior otherwise. Using this method is less verbose than casting the type at the call-site and allows us to potentially add run-time type checks in the future.
This method is intentionally const while still returning a non-const pointer. This is because the constness of the PointerRNA is not propagated to the data it references. One can always just copy the PointerRNA to get a non-const version of it.
Definition at line 124 of file RNA_types.hh.
References T.
Referenced by blender::nodes::draw_geometry_nodes_modifier_ui(), menu_item_enum_opname_menu(), blender::nodes::node_composite_file_output_cc::node_init(), blender::nodes::node_composite_file_output_cc::node_layout_ex(), blender::nodes::node_geo_closure_cc::node_layout_ex(), blender::nodes::node_geo_combine_bundle_cc::node_layout_ex(), blender::nodes::node_geo_evaluate_closure_cc::node_layout_ex(), blender::nodes::node_geo_separate_bundle_cc::node_layout_ex(), uiLayout::op_enum_items(), and RNA_property_pointer_set().
|
inline |
Make the pointer invalid.
This is especially important for the Python API, as any access to an invalid PointerRNA should raise an exception in bpy code.
Definition at line 110 of file RNA_types.hh.
References reset().
Referenced by rna_path_parse(), rna_property_override_collection_subitem_lookup(), and rna_property_override_collection_subitem_name_index_lookup().
|
default |
References PointerRNA().
|
default |
References PointerRNA().
|
inline |
Get the immediate parent pointer, if any.
Definition at line 132 of file RNA_types.hh.
References ancestors, owner_id, and PointerRNA().
Referenced by PointerRNA().
|
inline |
Reset the pointer to its initial empty state, such that it equals to PointerRNA_NULL.
Definition at line 99 of file RNA_types.hh.
Referenced by invalidate().
| blender::Vector<AncestorPointerRNA, ANCESTOR_POINTERRNA_DEFAULT_SIZE> PointerRNA::ancestors = {} |
A chain of ancestors of this PointerRNA, if known. The last item is the closest ancestor.
E.g. Parsing vgroup = C.object.data.vertices[0].groups[0] would result in the PointerRNA of vgroup having two ancestors: vertices[0] and data (aka the Mesh ID).
By definition, PointerRNA of IDs are currently always 'discrete', i.e. do not have ancestors information, since an ID PointerRNA should always be its own root.
There is no guarantee that this chain is always (fully) valid and will lead to the root owner of the wrapped data (an ID). Depending on how the PointerRNA was created, and the available information at that time, it could be empty or only feature a partial ancestors chain. This can happen if the initial pointer is created as discrete (e.g. from an operator that does not have access to/knowledge of the whole ancestor chain), and a sub-struct is accessed through regular RNA property access (like a call to RNA_property_pointer_get etc.).
Definition at line 76 of file RNA_types.hh.
Referenced by parent(), PointerRNA(), PointerRNA(), and PointerRNA().
| void* PointerRNA::data = nullptr |
Definition at line 53 of file RNA_types.hh.
Referenced by blender::ed::asset::shelf::active_shelf_from_context(), add_driver_with_target(), blender::nodes::socket_items::ops::add_item(), ANIM_nla_context_strip(), ANIM_nla_context_track(), animsys_construct_orig_pointer_rna(), blender::animrig::animsys_construct_orig_pointer_rna(), blender::ed::asset::shelf::asset_shelf_header_draw(), background_image_camera_from_context(), BKE_lib_override_library_property_operation_operands_validate(), BKE_lib_override_rna_property_find(), blender::ui::bonedropper_sample(), bpy_context_temp_override(), blender::deg::DepsgraphRelationBuilder::build_driver_data(), buttons_context(), buttons_context_path_bone(), buttons_context_path_brush(), buttons_context_path_collection(), buttons_context_path_data(), buttons_context_path_linestyle(), buttons_context_path_material(), buttons_context_path_modifier(), buttons_context_path_particle(), buttons_context_path_pose_bone(), buttons_context_path_shaderfx(), buttons_context_path_strip(), buttons_context_path_strip_modifier(), buttons_context_path_view_layer(), buttons_context_path_world(), buttons_texture_context_compute(), buttons_texture_modifier_geonodes_users_add(), camera_background_image_remove_exec(), blender::ed::asset::can_mark_single_from_context(), blender::ed::object::collection_remove_exec(), colorband_buttons_layout(), colorband_tools_fn(), colorband_update_cb(), constraint_reorder(), blender::ed::animrig::construct_pose_rna_paths(), blender::ed::object::context_object(), uiLayout::context_set_from_but(), blender::animrig::versioning::convert_legacy_action_assignments(), copy_material_exec(), copy_particle_systems_exec(), ctx_wm_python_context_get(), curve_profile_presets_fn(), curve_profile_tools_fn(), curvemap_tools_func(), blender::ed::curves::convert_from_particle_system::curves_convert_from_particle_system_exec(), datadropper_init(), blender::animrig::default_channel_group_for_path(), DEG_get_evaluated_rna_pointer(), depthdropper_init(), blender::nodes::draw_bake_data_block_list_item(), blender::nodes::node_geo_bake_cc::draw_bake_items(), blender::nodes::draw_data_blocks(), blender::ui::nodes::draw_node_input(), driverdropper_init(), duplicate_particle_systems_exec(), ED_armature_context(), ED_mesh_context(), ED_operator_camera_poll(), ED_operator_single_id_from_context_as_vec(), blender::edge_types_panel_draw(), blender::ed::object::edit_constraint_invoke_properties(), blender::ed::object::edit_modifier_invoke_properties(), blender::ed::object::edit_modifier_invoke_properties_with_hover(), blender::ed::object::edit_shaderfx_invoke_properties(), blender::ed::outliner::TreeElementRNAProperty::expand(), blender::ed::outliner::TreeElementRNAStruct::expand(), eyedropper_get_property_button_under_mouse(), eyedropper_init(), file_browse_exec(), blender::ed::spreadsheet::filter_reorder(), find_property_rgba(), blender::ed::greasepencil::from_context(), get_constraint_expand_flag(), blender::ed::spreadsheet::get_filter_expand_flag(), get_modifier_expand_flag(), blender::deg::DepsgraphBuilder::get_rna_path_relative_to_scene_camera(), get_shaderfx_expand_flag(), blender::seq::get_strip_modifier_expand_flag(), gizmo_tweak_start_and_finish(), id_search_menu(), image_from_context(), image_match_len_exec(), image_open_exec(), image_open_init(), image_open_invoke(), image_user_from_context(), blender::animrig::insert_keyframes(), blender::ui::is_bone_dropper_valid(), blender::deg::AnimatedPropertyStorage::isAnyPropertyAnimated(), lib_id_fake_user_toggle_exec(), lib_id_load_custom_preview_id_get(), lib_id_override_editable_toggle_exec(), lib_id_override_editable_toggle_poll(), lib_id_preview_editing_poll(), blender::ed::object::light_linking_unlink_from_collection_exec(), minimal_operator_create(), blender::seq::modifier_reorder(), modifier_reorder(), blender::nodes::socket_items::ops::move_active_item(), new_material_exec(), new_texture_exec(), new_world_exec(), nla_action_unlink_exec(), nla_action_unlink_poll(), nla_panel_actclip(), nla_panel_modifiers(), nlaevalchan_keyhash(), nlatracks_pushdown_exec(), blender::ed::space_node::node_buts_image_user(), blender::ed::space_node::node_buts_image_views(), blender::ed::space_node::node_draw_basis(), blender::ed::space_node::node_geometry_add_attribute_search_button(), blender::ed::space_node::node_geometry_add_layer_search_button(), blender::ed::space_node::node_geometry_add_volume_grid_search_button(), blender::nodes::node_geo_closure_cc::node_layout_ex(), blender::nodes::node_geo_combine_bundle_cc::node_layout_ex(), blender::nodes::node_geo_foreach_geometry_element_cc::node_layout_ex(), blender::nodes::node_geo_repeat_cc::node_layout_ex(), blender::nodes::node_geo_separate_bundle_cc::node_layout_ex(), blender::nodes::node_geo_simulation_cc::node_layout_ex(), blender::nodes::node_shader_normal_map_cc::node_shader_buts_normal_map(), blender::nodes::node_shader_tangent_cc::node_shader_buts_tangent(), blender::nodes::node_shader_uvmap_cc::node_shader_buts_uvmap(), blender::nodes::node_shader_vertex_color_cc::node_shader_buts_vertex_color(), blender::ed::space_node::node_shader_script_update_exec(), blender::ed::space_node::node_shader_script_update_poll(), uiLayout::op_menu_enum(), blender::options_light_reference_draw(), blender::ed::outliner::outliner_id_relocate_invoke(), override_idtemplate_ids_get(), panel_draw(), panel_draw(), paste_material_exec(), paste_mtex_exec(), PointerRNA(), PointerRNA(), PointerRNA(), blender::ed::object::pose_constraint_list(), pyrna_driver_is_equal_anim_rna(), pyrna_param_to_py(), pyrna_prop_collection_idprop_add(), pyrna_prop_to_py(), pyrna_struct_getattro(), radial_control_get_properties(), radial_control_paint_cursor(), radial_control_set_tex(), blender::nodes::socket_items::ops::remove_active_item(), blender::nodes::socket_items::ops::remove_item_by_index(), rna_path_parse(), rna_path_parse_collection_key(), RNA_path_resolve(), RNA_path_resolve_full(), RNA_path_resolve_property(), RNA_path_resolve_property_and_item_pointer(), RNA_path_resolve_property_and_item_pointer_full(), RNA_path_resolve_property_full(), RNA_pointer_as_string(), RNA_property_collection_lookup_index(), RNA_property_collection_lookup_string_index(), RNA_property_collection_raw_array(), rna_property_override_collection_subitem_lookup(), rna_property_override_collection_subitem_name_id_lookup(), rna_property_override_collection_subitem_name_id_match(), RNA_property_pointer_set(), RNA_struct_equals(), RNA_struct_find_property(), RNA_struct_override_apply(), RNA_struct_override_matches(), rna_struct_update_when_changed(), rnapointer_pchan_to_bone(), blender::ui::sample_data_from_outliner(), blender::ed::object::select_grouped_exec(), blender::ed::vse::sequencer_add_unassigned_assets_draw(), set_constraint_expand_flag(), blender::ed::spreadsheet::set_filter_expand_flag(), set_modifier_expand_flag(), set_shaderfx_expand_flag(), blender::seq::set_strip_modifier_expand_flag(), shaderfx_reorder(), shortcut_get_operator_property(), blender::ed::spreadsheet::spreadsheet_filter_panel_draw(), blender::ed::spreadsheet::spreadsheet_filter_panel_draw_header(), blender::ed::space_node::std_node_socket_draw(), template_add_button_search_menu(), template_ID(), template_id_cb(), template_id_liboverride_hierarchy_make(), template_ID_tabs(), template_id_workspace_pin_extra_icon(), template_keymap_item_properties(), template_search_add_button_name(), template_search_buttons(), template_search_get_searchprop(), template_search_menu(), template_texture_select(), template_texture_show(), template_texture_user_menu(), blender::ed::outliner::TreeElementRNAProperty::TreeElementRNAProperty(), ui_apply_but_funcs_after(), ui_block_message_subscribe(), ui_but_anim_decorate_find_attached_button(), ui_but_anim_decorate_update_from_flag(), ui_but_anim_expression_create(), ui_but_copy(), ui_but_event_operator_string_from_operator(), ui_but_has_array_value(), ui_but_is_pushed_ex(), UI_but_online_manual_id(), ui_but_paste(), ui_but_rna_equals_ex(), UI_but_string_get_rna_struct_identifier(), ui_but_string_set(), ui_but_user_menu_add(), ui_but_user_menu_find(), ui_but_value_get(), UI_context_copy_to_selected_check(), UI_context_copy_to_selected_list(), ui_def_but_rna(), ui_do_but_COLOR(), ui_drag_toggle_but_pushed_state(), ui_drop_material_exec(), ui_drop_material_poll(), ui_drop_material_tooltip(), ui_handler_wait_for_input_remove(), UI_icon_from_rnaptr(), ui_palette_set_active(), ui_popup_context_menu_for_button(), UI_region_active_but_prop_get(), ui_template_list_collect_display_items(), ui_template_list_data_retrieve(), ui_template_list_layout_draw(), ui_tooltip_data_from_gizmo(), ui_tooltip_data_from_tool(), uiItemFullO_ptr_ex(), uilist_item_use_dynamic_tooltip(), uiTemplateCacheFile(), uiTemplateCacheFileLayers(), uiTemplateColormanagedViewSettings(), uiTemplateColorRamp(), uiTemplateCurveMapping(), uiTemplateCurveProfile(), uiTemplateHistogram(), uiTemplateImage(), uiTemplateImageFormatViews(), uiTemplateImageSettings(), uiTemplateImageStereo3d(), uiTemplateImageViews(), uiTemplateKeymapItemProperties(), uiTemplateLightLinkingCollection(), uiTemplateMarker(), uiTemplateMovieClip(), uiTemplateMovieclipInformation(), uiTemplatePalette(), uiTemplateTextureShow(), uiTemplateTrack(), uiTemplateVectorscope(), uiTemplateWaveform(), unpack_item_invoke(), blender::ed::object::bake_simulation::unpack_single_bake_invoke(), blender::nodes::socket_items::ops::update_after_node_change(), v3d_transform_butsR(), wm_drop_item_clear_runtime(), wm_dropbox_item_update_ot(), wm_enum_search_menu(), wm_gizmo_create(), WM_gizmo_operator_invoke(), WM_gizmo_operator_set(), WM_gizmo_properties_reset(), wm_keymap_item_clear_runtime(), wm_keymap_item_copy(), wm_keymap_item_find(), wm_keymap_item_properties_update_ot(), WM_keymap_item_restore_to_default(), WM_menu_invoke_ex(), WM_msg_publish_rna_params(), wm_msg_rna_gset_cmp(), wm_msg_rna_update_by_id(), WM_msg_subscribe_rna_params(), wm_operator_create(), WM_operator_free(), WM_operator_name_call_ptr_with_depends_on_cursor(), WM_operator_properties_reset(), WM_toolsystem_ref_properties_init_for_keymap(), wm_xr_actionmap_item_copy(), and WM_xr_actionmap_item_properties_update_ot().
Definition at line 51 of file RNA_types.hh.
Referenced by action_new_exec(), blender::nodes::socket_items::ops::add_item(), animsys_construct_orig_pointer_rna(), blender::animrig::animsys_construct_orig_pointer_rna(), BKE_animsys_nla_remap_keyframe_values(), blender::ui::bonedropper_sample(), blender::deg::DepsgraphRelationBuilder::build_driver_data(), blender::deg::DepsgraphRelationBuilder::build_driver_rna_path_variable(), blender::deg::DepsgraphNodeBuilder::build_driver_variables(), blender::deg::DepsgraphRelationBuilder::build_driver_variables(), buttons_id_remap(), colorband_buttons_layout(), copy_mtex_exec(), copy_mtex_poll(), datadropper_id_set(), DEG_get_evaluated_rna_pointer(), blender::nodes::node_geo_bake_cc::draw_bake_items(), blender::nodes::draw_data_blocks(), blender::nodes::draw_geometry_nodes_modifier_ui(), blender::ui::nodes::draw_node_input(), driver_get_variable_property(), driverdropper_sample(), dtar_get_prop_val(), blender::animrig::evaluate_keyframe_data(), blender::ed::outliner::TreeElementRNAProperty::expand(), file_browse_exec(), id_search_allows_id(), id_search_cb_objects_from_scene(), image_open_exec(), image_open_invoke(), blender::deg::AnimatedPropertyStorage::initializeFromID(), blender::animrig::insert_keyframes(), blender::ui::is_bone_dropper_valid(), is_pointer_in_path(), lib_override_library_id_reset_do(), nla_action_unlink_exec(), nla_animdata_panel_poll(), nla_panel_actclip(), nla_panel_animdata(), nla_panel_modifiers(), nlaevalchan_validate_index_ex(), nlatracks_pushdown_exec(), blender::nodes::node_composite_file_output_cc::node_init(), blender::nodes::node_composite_file_output_cc::node_layout_ex(), blender::nodes::node_geo_closure_cc::node_layout_ex(), blender::nodes::node_geo_combine_bundle_cc::node_layout_ex(), blender::nodes::node_geo_foreach_geometry_element_cc::node_layout_ex(), blender::nodes::node_geo_repeat_cc::node_layout_ex(), blender::nodes::node_geo_separate_bundle_cc::node_layout_ex(), blender::nodes::node_geo_simulation_cc::node_layout_ex(), blender::ed::space_node::node_shader_script_update_exec(), blender::ed::object::object_unlink_data_exec(), open_invoke(), override_apply_property_check_skip(), override_idtemplate_ids_get(), parent(), paste_mtex_exec(), blender::interface::internal::paste_property_drivers(), PointerRNA(), PointerRNA(), PointerRNA(), pydriver_error(), pyrna_driver_is_equal_anim_rna(), pyrna_func_vectorcall(), pyrna_struct_anim_args_parse_ex(), pyrna_struct_getattro(), radial_control_modal(), rna_pointer_create_with_ancestors(), rna_property_override_apply_ex(), rna_property_override_collection_subitem_lookup(), RNA_property_pointer_poll(), RNA_property_pointer_set(), RNA_struct_override_apply(), RNA_struct_override_matches(), RNA_struct_override_store(), rnapointer_pchan_to_bone(), blender::ui::sample_data_from_3d_view(), blender::ui::sample_data_from_outliner(), blender::ed::space_node::std_node_socket_draw(), template_ID(), template_id_def_new_but(), template_id_liboverride_hierarchy_make(), template_texture_select(), texture_slot_move_exec(), ui_apply_but_undo(), ui_block_message_subscribe(), ui_but_anim_expression_create(), ui_but_is_rna_undo(), ui_but_string_get_ex(), ui_but_string_set(), UI_context_copy_to_selected_check(), ui_do_but_COLOR(), blender::ed::space_node::ui_node_draw_input(), ui_palette_set_active(), ui_tooltip_data_from_button_or_extra_icon(), UI_tooltip_uibut_python_add(), uiTemplateColorRamp(), uiTemplateCurveMapping(), uiTemplateCurveProfile(), uiTemplateImageSettings(), blender::nodes::socket_items::ops::update_after_node_change(), view_curve_in_graph_editor_exec(), widget_swatch(), WM_dropbox_add(), wm_dropbox_item_update_ot(), wm_keymap_item_copy(), wm_keymap_item_properties_set(), wm_keymap_item_properties_update_ot(), WM_msg_publish_rna_params(), wm_msg_rna_gset_cmp(), wm_msg_rna_remove_by_id(), wm_msg_rna_update_by_id(), and WM_msg_subscribe_rna_params().
Definition at line 52 of file RNA_types.hh.
Referenced by acf_generic_idblock_name_prop(), acf_generic_idfill_name_prop(), acf_gpl_name_prop_legacy(), acf_group_name_prop(), acf_masklay_name_prop(), acf_nlaaction_name_prop(), acf_nlatrack_name_prop(), acf_object_name_prop(), acf_shapekey_name_prop(), add_driver_with_target(), BKE_lib_override_rna_property_find(), blender::ui::bonedropper_sample(), bpy_class_validate(), blender::deg::DepsgraphRelationBuilder::build_driver_data(), buttons_texture_context_compute(), buttons_texture_modifier_geonodes_users_add(), blender::ed::animrig::construct_pose_rna_paths(), blender::ui::context_path_add_generic(), CTX_data_dir_get_ex(), ctx_wm_python_context_get(), blender::animrig::default_channel_group_for_path(), DEG_get_evaluated_rna_pointer(), blender::ed::object::edit_constraint_invoke_properties(), blender::ed::object::edit_modifier_invoke_properties_with_hover(), blender::ed::object::edit_shaderfx_invoke_properties(), eyedropper_init(), blender::deg::DepsgraphBuilder::get_rna_path_relative_to_scene_camera(), graph_region_message_subscribe(), blender::ui::is_bone_dropper_valid(), blender::ed::animation::greasepencil::layer_name_prop(), lib_id_fake_user_toggle_exec(), lib_id_preview_editing_poll(), lib_id_unlink_exec(), lib_override_library_id_reset_do(), nla_panel_animdata(), nla_track_region_message_subscribe(), blender::ed::space_node::node_socket_color_get(), blender::ed::outliner::outliner_draw_tree_element(), PointerRNA(), PointerRNA(), PointerRNA(), uiLayout::prop_search(), uiLayout::prop_search(), py_msgbus_rna_key_from_py(), pyrna_driver_is_equal_anim_rna(), pyrna_func_error_prefix(), pyrna_func_vectorcall(), pyrna_prop_collection_getattro(), pyrna_prop_collection_subscript_str(), pyrna_prop_str(), pyrna_py_to_prop(), radial_control_get_properties(), radial_control_paint_cursor(), radial_control_set_tex(), RNA_function_as_string_keywords(), RNA_pointer_create_from_ancestor(), RNA_pointer_recast(), rna_pointer_refine(), RNA_property_collection_lookup_string_index(), RNA_property_collection_type_get(), rna_property_override_collection_subitem_lookup(), rna_property_override_collection_subitem_name_id_lookup(), rna_property_override_collection_subitem_name_id_match(), rna_property_override_collection_subitem_name_index_lookup(), RNA_property_pointer_set(), RNA_struct_equals(), RNA_struct_find_property(), RNA_struct_override_apply(), RNA_struct_override_matches(), rna_struct_update_when_changed(), saction_channel_region_message_subscribe(), blender::ui::sample_data_from_outliner(), blender::ed::vse::sequencer_main_region_message_subscribe(), template_add_button_search_menu(), template_ID(), template_id_cb(), template_ID_tabs(), template_id_workspace_pin_extra_icon(), template_keymap_item_properties(), template_search_buttons(), template_search_get_searchprop(), template_texture_select(), blender::ed::outliner::TreeElementRNAProperty::TreeElementRNAProperty(), blender::ed::outliner::TreeElementRNAStruct::TreeElementRNAStruct(), ui_block_message_subscribe(), ui_but_anim_decorate_update_from_flag(), ui_but_find_select_in_enum__cmp(), ui_but_is_compatible(), ui_but_is_rna_undo(), UI_but_online_manual_id(), UI_but_string_get_rna_struct_identifier(), UI_context_copy_to_selected_check(), UI_context_copy_to_selected_list(), ui_def_but_rna(), ui_layout_introspect_button(), ui_popup_context_menu_for_button(), ui_template_list_data_retrieve(), uiDefAutoButR(), uilist_draw_item_default(), uiTemplateColorRamp(), uiTemplateCurveMapping(), uiTemplateCurveProfile(), uiTemplateHistogram(), uiTemplateLightLinkingCollection(), uiTemplatePalette(), uiTemplateVectorscope(), uiTemplateWaveform(), view3d_header_region_message_subscribe(), view3d_main_region_message_subscribe(), wm_dropbox_item_update_ot(), wm_keymap_item_properties_update_ot(), WM_msg_publish_rna_params(), wm_msg_rna_gset_cmp(), wm_msg_rna_repr(), WM_msg_subscribe_rna_params(), WM_operator_type_set(), and WM_xr_actionmap_item_properties_update_ot().