[Bf-blender-cvs] [1b9399f4463] custom-manipulators: Remove counter of set properties, just check when needed

Campbell Barton noreply at git.blender.org
Thu Jun 22 10:19:30 CEST 2017


Commit: 1b9399f44632cabd2b760e9e287b88c82fd18d6b
Author: Campbell Barton
Date:   Thu Jun 22 18:24:25 2017 +1000
Branches: custom-manipulators
https://developer.blender.org/rB1b9399f44632cabd2b760e9e287b88c82fd18d6b

Remove counter of set properties, just check when needed

===================================================================

M	source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c
M	source/blender/windowmanager/manipulators/WM_manipulator_api.h
M	source/blender/windowmanager/manipulators/WM_manipulator_types.h
M	source/blender/windowmanager/manipulators/intern/wm_manipulator.c
M	source/blender/windowmanager/manipulators/intern/wm_manipulator_target_props.c

===================================================================

diff --git a/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c b/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c
index b0e2880e28c..0260fc44010 100644
--- a/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c
+++ b/source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c
@@ -293,7 +293,7 @@ static void dial_draw_intern(
 		DialInteraction *inter = mpr->interaction_data;
 
 		/* XXX, View3D rotation manipulator doesn't call modal. */
-		if (mpr->target_properties_len_set == 0) {
+		if (!WM_manipulator_target_property_is_valid_any(mpr)) {
 			wmWindow *win = CTX_wm_window(C);
 			manipulator_dial_modal((bContext *)C, mpr, win->eventstate, 0);
 		}
diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_api.h b/source/blender/windowmanager/manipulators/WM_manipulator_api.h
index ea677f2d5a3..d6e468089f8 100644
--- a/source/blender/windowmanager/manipulators/WM_manipulator_api.h
+++ b/source/blender/windowmanager/manipulators/WM_manipulator_api.h
@@ -154,6 +154,7 @@ void WM_manipulator_target_property_def_func(
         struct wmManipulator *mpr, const char *idname,
         const struct wmManipulatorPropertyFnParams *params);
 
+bool WM_manipulator_target_property_is_valid_any(struct wmManipulator *mpr);
 bool WM_manipulator_target_property_is_valid(
         const struct wmManipulatorProperty *mpr_prop);
 float WM_manipulator_target_property_value_get(
diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_types.h b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
index 34805aa72f6..119d77b1181 100644
--- a/source/blender/windowmanager/manipulators/WM_manipulator_types.h
+++ b/source/blender/windowmanager/manipulators/WM_manipulator_types.h
@@ -112,8 +112,6 @@ struct wmManipulator {
 
 	struct IDProperty *properties;
 
-	int target_properties_len_set;
-
 	/* over alloc target_properties after 'wmManipulatorType.struct_size' */
 };
 
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulator.c b/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
index ee1ba5c2c1a..e9250663818 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
@@ -471,7 +471,7 @@ void wm_manipulator_calculate_scale(wmManipulator *mpr, const bContext *C)
 static void manipulator_update_prop_data(wmManipulator *mpr)
 {
 	/* manipulator property might have been changed, so update manipulator */
-	if (mpr->type->property_update && mpr->target_properties_len_set) {
+	if (mpr->type->property_update) {
 		wmManipulatorProperty *mpr_prop_array = WM_manipulator_target_property_array(mpr);
 		for (int i = 0; i < mpr->type->target_property_defs_len; i++) {
 			wmManipulatorProperty *mpr_prop = &mpr_prop_array[i];
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 e43b70a8381..9acd1a974cd 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulator_target_props.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator_target_props.c
@@ -67,7 +67,7 @@ wmManipulatorProperty *WM_manipulator_target_property_at_index(wmManipulator *mp
 {
 	BLI_assert(index < mpr->type->target_property_defs_len);
 	BLI_assert(index != -1);
-	wmManipulatorProperty *mpr_prop_array = WM_manipulator_target_property_array(mpr);
+	wmManipulatorProperty *mpr_prop_array = wm_manipulator_target_property_array(mpr);
 	return &mpr_prop_array[index];
 }
 
@@ -98,8 +98,6 @@ void WM_manipulator_target_property_def_rna_ptr(
 	mpr_prop->prop = prop;
 	mpr_prop->index = index;
 
-	mpr->target_properties_len_set += 1;
-
 	if (mpr->type->property_update) {
 		mpr->type->property_update(mpr, mpr_prop);
 	}
@@ -131,8 +129,6 @@ void WM_manipulator_target_property_def_func_ptr(
 	mpr_prop->custom_func.free_fn = params->free_fn;
 	mpr_prop->custom_func.user_data = params->user_data;
 
-	mpr->target_properties_len_set += 1;
-
 	if (mpr->type->property_update) {
 		mpr->type->property_update(mpr, mpr_prop);
 	}
@@ -154,6 +150,18 @@ void WM_manipulator_target_property_def_func(
 /** \name Property Access
  * \{ */
 
+bool WM_manipulator_target_property_is_valid_any(wmManipulator *mpr)
+{
+	wmManipulatorProperty *mpr_prop_array = wm_manipulator_target_property_array(mpr);
+	for (int i = 0; i < mpr->type->target_property_defs_len; i++) {
+		wmManipulatorProperty *mpr_prop = &mpr_prop_array[i];
+		if (WM_manipulator_target_property_is_valid(mpr_prop)) {
+			return true;
+		}
+	}
+	return false;
+}
+
 bool WM_manipulator_target_property_is_valid(const wmManipulatorProperty *mpr_prop)
 {
 	return  ((mpr_prop->prop != NULL) ||




More information about the Bf-blender-cvs mailing list