From 0f5ef668daa041514376a98e2957248626e5649d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 24 Nov 2017 20:28:13 +1100 Subject: Manipulator: fix camera lens update glitch Property range setup initially used values that can change. --- .../manipulators/WM_manipulator_api.h | 5 +++++ .../intern/wm_manipulator_target_props.c | 23 ++++++++++++++++++++++ 2 files changed, 28 insertions(+) (limited to 'source/blender/windowmanager') diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_api.h b/source/blender/windowmanager/manipulators/WM_manipulator_api.h index 3011da26851..a3875c50348 100644 --- a/source/blender/windowmanager/manipulators/WM_manipulator_api.h +++ b/source/blender/windowmanager/manipulators/WM_manipulator_api.h @@ -182,6 +182,11 @@ void WM_manipulator_target_property_def_func( struct wmManipulator *mpr, const char *idname, const struct wmManipulatorPropertyFnParams *params); +void WM_manipulator_target_property_clear_rna_ptr( + struct wmManipulator *mpr, const struct wmManipulatorPropertyType *mpr_prop_type); +void WM_manipulator_target_property_clear_rna( + struct wmManipulator *mpr, const char *idname); + bool WM_manipulator_target_property_is_valid_any(struct wmManipulator *mpr); bool WM_manipulator_target_property_is_valid( const struct wmManipulatorProperty *mpr_prop); diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulator_target_props.c b/source/blender/windowmanager/manipulators/intern/wm_manipulator_target_props.c index 11bf981490e..836376f1c54 100644 --- a/source/blender/windowmanager/manipulators/intern/wm_manipulator_target_props.c +++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator_target_props.c @@ -139,6 +139,29 @@ void WM_manipulator_target_property_def_func( WM_manipulator_target_property_def_func_ptr(mpr, mpr_prop_type, params); } +void WM_manipulator_target_property_clear_rna_ptr( + wmManipulator *mpr, const wmManipulatorPropertyType *mpr_prop_type) +{ + wmManipulatorProperty *mpr_prop = WM_manipulator_target_property_at_index(mpr, mpr_prop_type->index_in_type); + + /* if manipulator evokes an operator we cannot use it for property manipulation */ + BLI_assert(mpr->op_data == NULL); + + mpr_prop->type = NULL; + + mpr_prop->ptr = PointerRNA_NULL; + mpr_prop->prop = NULL; + mpr_prop->index = -1; +} + +void WM_manipulator_target_property_clear_rna( + wmManipulator *mpr, const char *idname) +{ + const wmManipulatorPropertyType *mpr_prop_type = WM_manipulatortype_target_property_find(mpr->type, idname); + WM_manipulator_target_property_clear_rna_ptr(mpr, mpr_prop_type); +} + + /** \} */ -- cgit v1.2.3