[Bf-blender-cvs] [cb4f7594a04] blender2.8: WM: add WM_manipulatorgrouptype_append_ptr

Campbell Barton noreply at git.blender.org
Mon Jun 5 10:10:39 CEST 2017


Commit: cb4f7594a04b5d4b1fa6b543ced93128aae140f7
Author: Campbell Barton
Date:   Mon Jun 5 18:10:52 2017 +1000
Branches: blender2.8
https://developer.blender.org/rBcb4f7594a04b5d4b1fa6b543ced93128aae140f7

WM: add WM_manipulatorgrouptype_append_ptr

Needed for PyAPI registration.

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

M	source/blender/windowmanager/manipulators/WM_manipulator_api.h
M	source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c

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

diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_api.h b/source/blender/windowmanager/manipulators/WM_manipulator_api.h
index c2d194c7c03..09d050b363e 100644
--- a/source/blender/windowmanager/manipulators/WM_manipulator_api.h
+++ b/source/blender/windowmanager/manipulators/WM_manipulator_api.h
@@ -78,9 +78,18 @@ void WM_manipulator_set_colors(struct wmManipulator *manipulator, const float co
 struct wmManipulatorGroupType *WM_manipulatorgrouptype_append(
         struct wmManipulatorMapType *mmaptype,
         void (*mgrouptype_func)(struct wmManipulatorGroupType *));
+struct wmManipulatorGroupType *WM_manipulatorgrouptype_append_ptr(
+        struct wmManipulatorMapType *mmaptype,
+        void (*mgrouptype_func)(struct wmManipulatorGroupType *, void *),
+        void *userdata);
 struct wmManipulatorGroupType *WM_manipulatorgrouptype_append_runtime(
         const struct Main *main, struct wmManipulatorMapType *mmaptype,
         void (*mgrouptype_func)(struct wmManipulatorGroupType *));
+struct wmManipulatorGroupType *WM_manipulatorgrouptype_append_ptr_runtime(
+        const struct Main *main, struct wmManipulatorMapType *mmaptype,
+        void (*mgrouptype_func)(struct wmManipulatorGroupType *, void *),
+        void *userdata);
+
 void WM_manipulatorgrouptype_init_runtime(
         const struct Main *bmain, struct wmManipulatorMapType *mmaptype,
         struct wmManipulatorGroupType *mgrouptype);
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c b/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
index 5074c6d0257..11fc1b32047 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulatorgroup.c
@@ -484,15 +484,14 @@ wmKeyMap *WM_manipulatorgroup_keymap_common_sel(const struct wmManipulatorGroupT
  *
  * \{ */
 
-/**
- * Use this for registering manipulators on startup. For runtime, use #WM_manipulatorgrouptype_append_runtime.
- */
-wmManipulatorGroupType *WM_manipulatorgrouptype_append(
-        wmManipulatorMapType *mmaptype, void (*mgrouptype_func)(wmManipulatorGroupType *))
+static wmManipulatorGroupType *wm_manipulatorgrouptype_append__begin(void)
 {
 	wmManipulatorGroupType *mgrouptype = MEM_callocN(sizeof(wmManipulatorGroupType), "manipulator-group");
-
-	mgrouptype_func(mgrouptype);
+	return mgrouptype;
+}
+static void wm_manipulatorgrouptype_append__end(
+        wmManipulatorMapType *mmaptype, wmManipulatorGroupType *mgrouptype)
+{
 	mgrouptype->spaceid = mmaptype->spaceid;
 	mgrouptype->regionid = mmaptype->regionid;
 	BLI_strncpy(mgrouptype->mapidname, mmaptype->idname, MAX_NAME);
@@ -503,6 +502,27 @@ wmManipulatorGroupType *WM_manipulatorgrouptype_append(
 
 	/* add the type for future created areas of the same type  */
 	BLI_addtail(&mmaptype->manipulator_grouptypes, mgrouptype);
+}
+
+/**
+ * Use this for registering manipulators on startup. For runtime, use #WM_manipulatorgrouptype_append_runtime.
+ */
+wmManipulatorGroupType *WM_manipulatorgrouptype_append(
+        wmManipulatorMapType *mmaptype, void (*mgrouptype_func)(wmManipulatorGroupType *))
+{
+	wmManipulatorGroupType *mgrouptype = wm_manipulatorgrouptype_append__begin();
+	mgrouptype_func(mgrouptype);
+	wm_manipulatorgrouptype_append__end(mmaptype, mgrouptype);
+	return mgrouptype;
+}
+
+wmManipulatorGroupType *WM_manipulatorgrouptype_append_ptr(
+        wmManipulatorMapType *mmaptype, void (*mgrouptype_func)(wmManipulatorGroupType *, void *),
+        void *userdata)
+{
+	wmManipulatorGroupType *mgrouptype = wm_manipulatorgrouptype_append__begin();
+	mgrouptype_func(mgrouptype, userdata);
+	wm_manipulatorgrouptype_append__end(mmaptype, mgrouptype);
 	return mgrouptype;
 }
 
@@ -521,6 +541,19 @@ wmManipulatorGroupType *WM_manipulatorgrouptype_append_runtime(
 
 	return mgrouptype;
 }
+wmManipulatorGroupType *WM_manipulatorgrouptype_append_ptr_runtime(
+        const Main *main, wmManipulatorMapType *mmaptype,
+        void (*mgrouptype_func)(wmManipulatorGroupType *, void *),
+        void *userdata)
+{
+	wmManipulatorGroupType *mgrouptype = WM_manipulatorgrouptype_append_ptr(mmaptype, mgrouptype_func, userdata);
+
+	/* Main is missing on startup when we create new areas.
+	 * So this is only called for manipulators initialized on runtime */
+	WM_manipulatorgrouptype_init_runtime(main, mmaptype, mgrouptype);
+
+	return mgrouptype;
+}
 
 void WM_manipulatorgrouptype_init_runtime(
         const Main *bmain, wmManipulatorMapType *mmaptype,




More information about the Bf-blender-cvs mailing list